# OpenWeb Ninja Web Unblocker — HTTP Request

> OpenWeb Ninja Web Unblocker — HTTP Request is a paid API for AI agents from agents.openwebninja.com, paid per call via MPP, price unknown, status unknown (last checked 2026-10-14).

Fetches any web page or HTTP endpoint with smart retries, optional JavaScript rendering, geo-proxying, and fine-grained load controls.

## Facts

- Endpoint: POST https://agents.openwebninja.com/web-unblocker/request?utm_source=zero.xyz
- Price: price unknown
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-14
- Activations on Zero: 0
- Provider: agents.openwebninja.com
- Website: https://agents.openwebninja.com
- Canonical page: https://www.zero.xyz/c/agents-openwebninja-com-openweb-ninja-web-unblocker-http-request-537e115f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_8J0llnnOajkvS0tiW65tS

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agents-openwebninja-com-openweb-ninja-web-unblocker-http-request-537e115f -d '<json body>'
```

Example prompt: Can you fetch the full HTML of https://www.example.com/product-page with JavaScript rendering enabled and wait until the network is idle, routing through a US IP address?

## When to prefer this

Choose this endpoint when you need to fetch web pages that use JavaScript rendering, have bot-detection/anti-scraping measures, require geo-specific IP routing (US, UK, CA), or need fine-grained control over load conditions (domloaded, load, networkidle). It is superior to a plain HTTP GET when the target site blocks standard requests, when you need automatic smart retries, or when cookies and custom headers are required for authentication. Prefer alternatives if you only need simple, static, bot-friendly pages where a basic HTTP client suffices.

## Known failure modes

- Target URL is unreachable or times out — returns a non-200 status or error field in the response
- JavaScript rendering fails or selector not found — soft error string returned in the error field
- Anti-bot protection not bypassed even with retries — response body may contain CAPTCHA or block page HTML
- Invalid or inaccessible proxy URL provided — request may fail entirely
- Unsupported HTTP method or malformed request body — API-level validation error
- Rate limits or credit exhaustion on the underlying OpenWeb Ninja account — 402 or quota error returned

## How this service works

Reliably fetch web pages with smart retries, optional JavaScript rendering, fine-grained load controls, and proxy support. Supports all common HTTP methods (GET, POST, PUT, PATCH, and DELETE).

## Output

Returns an object with: the raw response body (typically HTML), the HTTP status code from the target server, all response headers, the final URL after any redirects, cookies set by the server, and body length in bytes. Also includes the original request parameters echoed back and a unique request ID for debugging.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "example": {
  "url": "https://www.google.com",
  "render_js": true
 },
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "description": "The URL to fetch (required)."
  },
  "body": {
   "type": "string",
   "description": "Request payload for methods that support a body (POST/PUT/PATCH). Can be a string or a JSON object.\n"
  },
  "proxy": {
   "type": "string",
   "description": "Proxy URL to use for the request. If omitted, the API may use internal proxy networks and smart retries.\n"
  },
  "cookies": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "name",
     "value",
     "domain"
    ],
    "properties": {
     "name": {
      "type": "string",
      "description": "Cookie name."
     },
     "path": {
      "type": "string",
      "description": "Path the cookie is valid for."
     },
     "value": {
      "type": "string",
      "description": "Cookie value."
     },
     "domain": {
      "type": "string",
      "description": "Domain the cookie is valid for."
     }
    }
   },
   "description": "Cookies to include with the request. Each cookie includes name, value, and domain (required), and path.\n"
  },
  "country": {
   "enum": [
    "any",
    "us",
    "uk",
    "ca"
   ],
   "type": "string",
   "description": "Country to route the request through, so the target site sees a visitor from that country. Omit or use any for the default proxy pool. Ignored when proxy is set.\n"
  },
  "headers": {
   "type": "object",
   "description": "HTTP headers to send with the request. Provide as a key-value object.",
   "additionalProperties": true
  },
  "render_js": {
   "type": "boolean",
   "default": false,
   "description": "Whether to render JavaScript before returning the response. Defaults to false.\n"
  },
  "wait_until": {
   "enum": [
    "domloaded",
    "load",
    "networkidle"
   ],
   "type": "string",
   "default": "load",
   "description": "Page load condition when render_js is enabled. domloaded does not wait for images/subframes/async scripts; load waits for them; networkidle waits for a period of networkidle_timeout with no network connections after the page loads.\n"
  },
  "load_images": {
   "type": "boolean",
   "default": false,
   "description": "Whether to allow loading images when rendering JavaScript. Defaults to false.\n"
  },
  "extra_retries": {
   "type": "boolean",
   "default": false,
   "description": "If true, allows the API to pe
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "request_id",
  "parameters",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "required": [
    "status",
    "final_url",
    "headers",
    "body"
   ],
   "properties": {
    "body": {
     "type": "string",
     "description": "Raw response body returned by the target URL (typically HTML)."
    },
    "error": {
     "type": "string",
     "nullable": true,
     "description": "Soft-failure error string returned by the scraper when a non-fatal failure occurred (e.g. selector not found)."
    },
    "status": {
     "type": "integer",
     "description": "HTTP status code returned by the target URL."
    },
    "cookies": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "name",
       "value",
       "domain"
      ],
      "properties": {
       "name": {
        "type": "string",
        "description": "Cookie name."
       },
       "path": {
        "type": "string",
        "nullable": true,
        "description": "Path the cookie is valid for, when set by the server."
       },
       "value": {
        "type": "string",
        "description": "Cookie value."
       },
       "domain": {
        "type": "string",
        "description": "Domain the cookie is valid for."
       }
      }
     },
     "nullable": true,
     "description": "Cookies set by the target server."
    },
    "headers": {
     "type": "object",
     "description": "Response headers returned by the target server, as a key-value map.",
     "additionalProperties": {
      "type": "string",
      "description": "A single response header value."
     }
    },
    "final_url": {
     "type": "string",
     "description": "Final URL after any redirects the target server issued."
    },
    "body_length": {
     "type": "integer",
     "nullable": true,
     "description": "Length in bytes of the returned response body."
    }
   }
  },
  "status": {
   "type": "string",
   "description": "The status of the API response."
  },
  "parameters": {
   "type": "object",
   "properties": {
    "url": {
     "type": "string",
     "description": "The URL that was fetched."
    },
    "method": {
     "type": "string",
     "description": "HTTP method used for the request. Values: GET, POST, PUT, PATCH, DELETE."
    },
    "render_js": {
     "type": "boolean",
     "description": "Whether JavaScript was rendered before returning the response."
    },
    "wait_until": {
     "type
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-openweb-ninja-web-unblocker-http-request-537e115f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.openwebninja.com](https://www.zero.xyz/host/agents.openwebninja.com/llms.txt)
