Skip to main content
POST
Scrape a public URL and receive cleaned output in one or more formats: markdown, HTML, raw HTML, links, a summary, a screenshot, or LLM-extracted JSON. Runs synchronously by default. Set mode to async to get a scrape_id back immediately and poll Scrape Status for the result.

Request Body

string
required
The URL to scrape. Must be a valid, publicly accessible URL.
string
default:"sync"
sync waits for the result; async returns 202 with a scrape_id to poll.
number
Max time in milliseconds to wait for a sync result. Between 1000 and 600000.
object
Output options. - formats (string[], default ["markdown"]) — any of html, raw_html, markdown, links, summary, screenshot, json - screenshot (viewport | full_page) — screenshot capture mode - json (object) — prompt and/or json_schema for structured extraction
boolean
default:"false"
When true, JSON extraction also returns the selector recipe used (data.json_recipe).
object
Proxy options: location (country code, default US) and sticky_session.
object
Request options: locale, device (desktop | mobile), cookies, headers, only_main_content (default true), block_ads (default true), skip_tls_verification (default true).
object
JavaScript rendering: enabled (default true), wait_until (load | domcontentloaded | networkidle), viewport ({ width, height }).
object
Delivery webhook for async jobs: url, optional headers, events (default ["started", "completed", "failed"]).

Response

string
Unique ID for this scrape job.
string
pending, completed, or failed.
object
Present when completed. Contains the requested formats — markdown, html, raw_html, links, summary, json, screenshot (key for Get Screenshot) — plus page metadata.