Scrape a URL
Fetches and processes a URL, returning content in one or more formats wrapped in a ScrapeEnvelope. Most requests return synchronously in under a second; requests needing a full page render return HTTP 202 and complete asynchronously.
Authorization
AuthorizationRequiredBearer <token>API key. Manage keys from the dashboard at app.bytekit.com.
In: header
Request Body
application/jsonRequiredurlRequiredstring"uri"formatsarray<string>["raw_html"]countrystring"US"Pattern: "^[A-Z]{2}$"cookiesarray<object>[]headersobject{}delay_msinteger0Minimum: 0Maximum: 10000timeout_msinteger30000Minimum: 1000Maximum: 60000asyncbooleanfalsewebhook_urlstringWebhook endpoint URL (HTTPS only; http:// rejected with 400 invalid_url, reason scheme_unsupported)
"^https://"Format: "uri"eventsarray<string>["completed","failed"]markdown_modestringMarkdown processing mode. article=article extraction (default), raw=minimal cleanup, llm=compact LLM-optimised output.
"article" | "raw" | "llm"markdown_querystringBM25 query string for relevance-ranked content filtering. Omit or leave empty to disable.
200markdown_linksstringLink rendering style in the markdown output. 'inline' (default) keeps [text](url) as-is. 'text' strips URLs, keeping only anchor text. 'none' strips URLs and removes reference definitions. 'references' converts to numbered [text][N] refs with a Links footer.
"inline" | "references" | "none" | "text"markdown_imagesstringImage retention mode in the markdown output. 'inline' (default) keeps  as-is. 'text' strips the URL, keeping only alt text. 'none' removes images entirely. 'references' converts to numbered ![alt][N] refs with an Images footer. Distinct from markdown_filter_images (which drops low-signal images before conversion).
"inline" | "references" | "none" | "text"with_links_summarybooleanWhen true, appends a 'Links:\n[1]: url\n...' footer to the markdown output, built from the extracted link list. Automatically enabled when markdown_links is 'references'.
with_images_summarybooleanWhen true, appends an 'Images:\n[1]: url\n...' footer to the markdown output, built from the extracted image list.
markdown_compactbooleanCollapse excessive whitespace for a more compact output.
markdown_filter_imagesbooleanFilter low-signal images from the markdown output.
markdown_include_mediabooleanWhen true, formats.links and formats.images return ScrapeScoredLink[] / ScrapeScoredImage[] (rich objects) instead of string[], and a top-level tables array is included. Only effective when markdown is in formats.
markdown_include_warningsbooleanWhen true, enables markdown-pipeline and tag-filter warnings for affected html and markdown requests. Artifact availability warnings such as artifact_unavailable may appear independently of this flag.
markdown_include_statsbooleanWhen true, the response includes a top-level stats object with ScrapeStats (chars, tokens, blocks). Only effective when markdown is in formats.
token_budgetintegerMaximum token count for the markdown output. When set and markdown is in formats, the output is truncated at the last paragraph → sentence → token boundary that keeps the estimated count under this limit. Absent → no truncation. Triggers a markdown_tokens field in the response.
0token_encodingstringTokenizer encoding hint for token_budget. cl100k_base (default) matches GPT-4/4o; o200k_base matches GPT-4o-mini / o-series. Both use the same 4-char/token heuristic internally.
"cl100k_base"Value in: "cl100k_base" | "o200k_base"mobilebooleanWhen true, emulate a mobile device — the request uses a mobile (Android) user agent and a mobile viewport, so the upstream serves the mobile version of the page. Default false (desktop). The value is part of the cache key, so mobile and desktop responses are cached independently.
falseremove_base64_imagesbooleanWhen true (default), base64-encoded data: image sources are stripped from the HTML before markdown conversion and from the html format output. Set to false to preserve base64 images in the pipeline output. Does not affect raw_html, which always returns the original HTML unchanged.
trueinclude_tagsarray<string>HTML element names (not CSS selectors) to keep. When non-empty, only content within these elements is included in the html and markdown output. Applied before exclude_tags. Does not affect raw_html, which always returns the full page.
[]exclude_tagsarray<string>HTML element names (not CSS selectors) to strip from the html and markdown output. Applied after include_tags when both are present. Does not affect raw_html, which always returns the full page.
[]cache_ttlstring | integerHow long a freshly fetched URL may be served from cache. 0 (string or integer) skips the cache read; cache-eligible results are still written. Nh/Nd set a TTL (capped at 168 h / 7 d). Safety-classified WAF husks are returned live but never stored in the shared cache. Honoured on both the synchronous and asynchronous paths; the async success envelope reports the lookup outcome via the cache field.
"48h"customobjectUser-supplied JSON payload, echoed back on the success envelope (sync, async, webhook). Capped at 4096 UTF-8 bytes (Buffer.byteLength). Distinct from the system-owned metadata column. Does NOT affect cache-key inputs — two requests differing only in custom resolve to the same cache entry.
{}clean_markdownbooleanWhen true and markdown is in formats, the converted markdown is sent to Groq LLM for cleaning (boilerplate removal, ad stripping, formatting improvement) before being returned. Graceful degradation: any Groq failure (key unset, 4xx/5xx, timeout, empty response) returns the raw markdown unchanged plus a warning in the warnings array. Billing: 3× credits and bytes applied only when cleaning succeeds.
falsex_internal_scrape_pathstringInternal-only: forces the request onto the worker enqueue branch and the lean-forced code path in scrape-worker. Requires X-Internal-Probe-Token header. Not exposed via SDK generators.
"lean-forced"Scrape completed synchronously.