Scrape URL
scrape_url_stealthFetch web pages and return clean Markdown, even when sites use JavaScript or bot protection, with optional question-focused passages and pagination.
Instructions
Fetch a web page and return its main content as clean Markdown.
Pass query to get only the passages that answer a question. Handles JavaScript-rendered and bot-protected pages by falling back to a real Chrome browser. Results are cached; long pages are paginated with offset/next_offset.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Absolute http(s) URL to fetch | |
| proxy | No | auto (default) retries through the residential proxy only when blocked, since proxy bandwidth is paid. never avoids it; always skips the direct attempt | auto |
| query | No | Question or keywords; returns only the most relevant passages instead of the whole page. Strongly recommended for long pages. | |
| top_k | No | With query: number of passages to return | |
| offset | No | Character offset to start from; use next_offset from a previous call | |
| scroll | No | Browser only: scroll down to trigger lazy-loaded content | |
| max_chars | No | Maximum characters of content to return (about 4 chars per token) | |
| render_js | No | auto (default) uses a headless browser only when the fast fetch is blocked or nearly empty | auto |
| css_selector | No | Only return elements matching this CSS selector, e.g. 'article' or '#pricing table' | |
| include_links | No | Keep hyperlinks in markdown output; false saves tokens | |
| output_format | No | markdown (default): main content; text: plain text; html: cleaned HTML; links: every link on the page | markdown |
| max_age_seconds | No | Accept a cached copy up to this old. 0 always fetches fresh; -1 uses only the cache. Default: server setting (1 hour). | |
| response_format | No | concise (default) omits fetch diagnostics and page metadata; detailed includes them | concise |
| wait_for_selector | No | Browser only: wait until this CSS selector appears before reading the page | |
| impersonate_browser | No | TLS fingerprint to present first; others are tried on retry | chrome |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hint | No | How to narrow or continue the request, when relevant | |
| cache | Yes | Whether the page came from the local cache | |
| title | No | Page title, when detected | |
| engine | No | Fingerprint or browser that served the page | |
| content | Yes | The requested window of extracted content | |
| cost_usd | No | Amount charged for this call; failures are free | |
| metadata | No | Description, author, site name, date and language | |
| final_url | Yes | URL after redirects | |
| escalation | No | Which cheaper tiers were tried first and why they failed | |
| est_tokens | Yes | Approximate tokens in content (chars / 4) | |
| next_offset | No | Pass as offset to read more; null when nothing remains | |
| proxy_bytes | No | Residential proxy bandwidth used by this fetch | |
| status_code | Yes | HTTP status code of the final page | |
| total_chars | Yes | Length of the full (or query-filtered) content | |
| content_hash | No | SHA-256 of the full extracted content | |
| fetch_method | No | Fast HTTP client or headless browser | |
| passages_matched | No | Number of passages kept by query | |
| cache_age_seconds | No | Age of the fetch this result was built from | |
| credits_remaining_usd | No | Balance left on this API key |