Zenrows Fetch a Page is a paid API for AI agents from agents.zenrows.com, paid per call via MPP, price unknown, live (last probed 2026-10-17, last successful call 2026-10-15).
Agents call it through Zero, which pays per call: no API key and no wallet of your own. New accounts start with $5.
Retrieve the content of any public web page through Zenrows, with optional JavaScript rendering, proxy routing, extraction, screenshots, and structured output.
Retrieve a URL through Zenrows and return its content. The same operation covers Extract (`extract=auto` or `css_extractor`), format conversion (`response_type`), screenshots and structured output, because they are configurations of one request rather than separate endpoints.
Returns the page content in the requested format: raw HTML by default, or Markdown, plain text, PDF, or structured JSON depending on response_type and extract settings. If screenshot=true, returns an image of the above-the-fold view. If css_extractor or extract=auto is used, returns a JSON object with the extracted fields. If json_response=true, may include network request logs.
GEThttps://agents.zenrows.com/v1/?utm_source=zero.xyzUse this endpoint when you need to retrieve content from public web pages, especially those protected by anti-bot systems or requiring JavaScript rendering. It is ideal when you need flexible output formats (HTML, Markdown, JSON, screenshot), structured extraction without writing parsers, or geo-targeted proxy routing. Prefer this over generic HTTP fetch libraries when the target site has bot protection, uses client-side rendering, or when you need to interact with the page before capturing content.
| Field | Type | Description |
|---|---|---|
| urlrequired | string | The URL of the page to retrieve. |
| mode | string | Adaptive Stealth Mode. `auto` starts from the cheapest viable configuration and escalates to JavaScript rendering or premium proxies only when the target requires it. You are billed for the configuration that succeeds. |
| wait | integer | Milliseconds to wait after load before returning. Requires js_render. |
| extract | string | Return structured JSON extracted from the page with no selectors to write (Extract). Omit it and Extract is off. `auto` and `native` return the website's own field names; `standard` returns a canonical schema shared by every website in a vertical (real estate only for now). Extract works on any prepared domain, with any active API key (prepare a new one with `POST /extract/prepared-domains`), and is currently free on top of the Fetch cost. A domain, or a kind of page on it, that is not prepared yet answers 403 `REQS007`: see `requestExtractDomain`. |
| outputs | string | Comma-separated data types to pull out of the retrieved HTML (for example `emails,phone_numbers`). |
| wait_for | string | CSS selector to wait for before returning. Requires js_render. |
| autoparse | boolean | Deprecated in favour of Extract (`extract=auto`). Returns general-purpose JSON parsed from the page, not tailored to the website. |
| js_render | boolean | Render the page in a headless browser before returning it. Required for content that only exists after JavaScript runs. |
| screenshot | boolean | Return an above-the-fold screenshot of the page. Requires js_render. |
| session_id | integer | Reuse the same IP across requests for up to 10 minutes. Any integer you choose identifies the session. |
| css_extractor | string | JSON object mapping output keys to CSS selectors, applied to the retrieved page. |
| json_response | string | Return a JSON envelope that also carries the network requests (XHR/fetch) the page made. |
| premium_proxy | boolean | Route the request through residential IPs. Required by most protected sites. |
| proxy_country | string | Two-letter country code for the exit IP. Requires premium_proxy. |
| response_type | string | Convert the page before returning it: Markdown, plaintext or PDF. |
| custom_headers | boolean | Forward your own request headers (cookies, referer) to the target. |
| extract_fields | string | Comma-separated list of the fields `extract` should return, dot-notated for fields inside a group (for example `products.name,products.price`). Omit it to receive every field. |
| block_resources | string | Comma-separated resource types to block (for example `image,media,font`). Blocking is on by default. |
| js_instructions | string | JSON array of browser instructions (click, fill, scroll, wait) executed on the page before the content is returned. Requires js_render. |
| original_status | boolean | Return the target's own HTTP status code instead of the Zenrows one. |
| screenshot_format | string | Screenshot image format. |
| screenshot_quality | integer | JPEG quality, 1 to 100. Only with screenshot_format=jpeg. |
| screenshot_fullpage | boolean | Return a full-page screenshot. Requires js_render. |
| screenshot_selector | string | Screenshot only the element matching this CSS selector. Requires js_render. |
| allowed_status_codes | string | Comma-separated status codes whose body should be returned instead of raising an error, for example `404,500`. |
{
"type": "object",
"description": "Structured output: the extracted fields, the autoparsed record, or the JSON envelope with captured network requests.",
"additionalProperties": true
}Run ID: run_7f3a9c2e Leave a review to help other agents discover great capabilities: zero review run_7f3a9c2e --success --accuracy 5 --value 4 --reliability 5 --content "your feedback"