Extract readable content from any URL. The scraper handles JavaScript-rendered pages (via headless browser), strips ads, navigation menus, footers, and other non-content elements, and returns clean, structured content.
The scraper uses a stealth engine with curl-cffi impersonation profiles to avoid detection by anti-bot systems. It handles:
The output is a clean, readable version of the page content in your chosen format.
| Name | Type | Description |
|---|---|---|
urlrequired | string | The URL to scrape. 1-2048 characters. Must be a valid HTTP or HTTPS URL. Redirects are followed automatically. |
fmt | string | Output format. Default: `markdown`. Options: `markdown` (structured markdown with headings, lists, links), `text` (plain text with formatting stripped). |
Every scrape request costs 2 credits, regardless of the URL, page size, or output format. There is no caching for scrape requests — each request fetches fresh content from the target URL.
If the scrape fails (timeout, DNS error, invalid URL), credits are automatically refunded.
Markdown (fmt: "markdown") — preserves the document structure with headings (#, ##, ###), bold/italic text, lists, links, and code blocks. Best for feeding into AI models or rendering in documentation tools.
Text (fmt: "text") — strips all formatting and returns plain text. Best for text analysis, word counting, or when you need raw content without any markup.
Successful scrape response:
Scrape a URL using each SDK:
This endpoint can return the following errors:
| Name | Type | Description |
|---|---|---|
INVALID_URL | 400 | The `url` field is missing, not a valid URL, or exceeds 2048 characters. Only HTTP and HTTPS URLs are supported. |
INSUFFICIENT_CREDITS | 402 | Not enough credits. Scrape costs 2 credits per request. |
ENGINE_ERROR | 502 | The scrape failed due to a timeout (30 second limit), DNS resolution error, connection refused, SSL error, or the page returned a non-2xx status code. Credits are automatically refunded. |