scrape
Fetch any webpage as clean markdown, HTML, PDF, screenshot, or structured JSON, bypassing anti-bot checks and rendering JavaScript when needed.
Instructions
Scrape any webpage and return its content using Zenrows (Fetch).
Returns full-page content (markdown/HTML/PDF/screenshot). For structured JSON fields (products, articles, listings), the extract tool returns parsed fields instead of a full page body.
By default the request uses automatic mode (mode=auto): Zenrows adds JS rendering or premium proxies per page only when a plain request does not return the page, and charges only for the configuration that succeeds. Pass just the URL.
Set js_render or premium_proxy only to force a fixed configuration. Doing so switches off automatic mode, and every request is billed at that configuration's cost (premium_proxy with js_render is 25x a basic request).
Examples: Default: { url: "https://example.com" } Geo: { url: "https://example.com", proxy_country: "US" } Forced: { url: "https://spa.com", js_render: true }
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The webpage URL to scrape | |
| wait | No | Milliseconds to wait after page load before capturing content. Max 30000 (30s). Requires js_render=true; without it, including in automatic mode, it may be ignored. | |
| outputs | No | Comma-separated list of data types to extract as structured JSON. Available: emails, headings, links, menus, images, videos, audios. Use '*' for all types. Returns JSON instead of full page content. | |
| wait_for | No | CSS selector to wait for before capturing. Use when key content loads after the initial page render. Requires js_render=true; without it, including in automatic mode, it may be ignored. | |
| autoparse | No | Automatically extract structured data from the page into JSON. Best for product pages, articles, and listings. | |
| js_render | No | Force JavaScript rendering on every request. Overrides automatic mode (mode=auto), which already renders JavaScript when a page needs it. Leave unset unless you need a fixed configuration. | |
| screenshot | No | Capture an above-the-fold screenshot of the page. Returns an image instead of text content. Useful for visual verification or debugging. | |
| css_extractor | No | Extract specific elements using CSS selectors. JSON object mapping names to selectors, e.g. '{"title":"h1","price":".price-tag"}'. Returns JSON instead of full page content. | |
| premium_proxy | No | Force premium residential proxies on every request (10x credit cost). Overrides automatic mode (mode=auto), which already uses premium proxies when a page needs them. Leave unset unless you need a fixed configuration. | |
| proxy_country | No | Country for geo-targeted scraping. ISO 3166-1 alpha-2 code (e.g. 'US', 'GB', 'DE'). Works in automatic mode (mode=auto); if you set js_render without premium_proxy, it requires premium_proxy=true. | |
| response_type | No | Output format. 'markdown' (default) preserves structure and is ideal for LLMs. 'plaintext' strips all formatting for pure text extraction. 'pdf' returns a PDF of the page. 'html' returns the raw HTML source (omits the response_type param; Zenrows default). Ignored when autoparse, css_extractor, outputs, or screenshot params are set. | markdown |
| js_instructions | No | JSON array of browser interactions to run before scraping. Works in automatic mode (mode=auto), which then renders the page and bills it at the JS rendering rate, or with js_render=true. Example: [{"click":"#load-more"},{"wait":1000},{"wait_for":".results"}] | |
| screenshot_fullpage | No | Capture a full-page screenshot including content below the fold. Returns an image instead of text content. | |
| screenshot_selector | No | Capture a screenshot of a specific element using a CSS selector. Example: ".product-card". Returns an image instead of text content. |