Note: A new v2 version of this API is now available with improved features and performance.
Scrape
1 min read
post/scrape
Request example
Response
post/scrape
Authorization
Body
application/jsonThe URL to scrape
Only return the main content of the page excluding headers, navs, footers, etc.
Default: true
Returns a cached version of the page if it is younger than this age in milliseconds. If a cached version of the page is older than this value, the page will be scraped. If you do not need extremely fresh data, enabling this can speed up your scrapes by 500%. Defaults to 0, which disables caching.
Default: 0
Headers to send with the request. Can be used to send cookies, user-agent, etc.
Specify a delay in milliseconds before fetching the content, allowing the page sufficient time to load.
Default: 0
Set to true if you want to emulate scraping from a mobile device. Useful for testing responsive pages and taking mobile screenshots.
Default: false
Controls how PDF files are processed during scraping. When true, the PDF content is extracted and converted to markdown format, with billing based on the number of pages (1 credit per page). When false, the PDF file is returned in base64 encoding with a flat rate of 1 credit total.
Default: true
JSON options object
Show child attributesHide child attributes
The schema to use for the extraction (Optional). Must conform to JSON Schema.
The system prompt to use for the extraction (Optional)
The prompt to use for the extraction without a schema (Optional)
When enabled, scans the scraped page content for prompt injection attempts before running the extraction. If an injection is detected, the request fails with a 403 and error code SCRAPE_PROMPT_INJECTION_DETECTED. Adds 4 credits when the check runs. Defaults to false.
Default: false
Actions to perform on the page before grabbing the content
Show child attributesHide child attributes
Location settings for the request. When specified, this will use an appropriate proxy if available and emulate the corresponding language and timezone settings. Defaults to 'US' if not specified.
Show child attributesHide child attributes
ISO 3166-1 alpha-2 country code (e.g., 'US', 'AU', 'DE', 'JP')
Default: "US"
Pattern: ^[A-Z]{2}$
Preferred languages and locales for the request in order of priority. Defaults to the language of the specified location. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language
Removes all base 64 images from the output, which may be overwhelmingly long. The image's alt text remains in the output, but the URL is replaced with a placeholder.
Default: true
Specifies the type of proxy to use.
- basic: Proxies for scraping sites with none to basic anti-bot solutions. Fast and usually works.
- enhanced: Enhanced proxies for scraping sites with advanced anti-bot solutions. Slower, but more reliable on certain sites. Billed at the same credit cost as basic.
- auto: Firecrawl will automatically retry scraping with enhanced proxies if the basic proxy fails. Enhanced proxies carry no credit surcharge, so either way only the regular cost is billed.
If you do not specify a proxy, Firecrawl will default to basic.
Options:
basicenhancedautoIf true, the page will be stored in the Firecrawl index and cache. Setting this to false is useful if your scraping activity may have data protection concerns. Using some parameters associated with sensitive scraping (actions, headers) will force this parameter to be false.
Default: true
Per-request Threat Protection override. Fields you provide replace the corresponding fields of your organization's policy for this request only; omitted fields keep their organization-level values. Requires Threat Protection to be enabled for your team (enterprise feature) — otherwise the request is rejected with a 403. If your organization has disabled request overrides, any request that includes this object is rejected with a 403. If Threat Protection is enforced for your team,
mode may not be set to off.Show child attributesHide child attributes
URL scanning mode for this request.
normal checks URLs against Google Web Risk (+2 credits per URL scanned).Options:
offnormalNormalized risk score (0–100) at or above which a classifier verdict blocks the URL. Lower is stricter.
Range: 0–100
Domains to always block, as plain domains (
example.com) or wildcard globs (*.example.com). No protocol, path, or port.Items: max 1000
Domains to always allow, as plain domains or wildcard globs. Wins over every other rule.
Items: max 1000
Top-level domains to block outright, lowercase without the leading dot (e.g.
zip).Items: max 1000
What to do when the classifier can't be reached:
closed blocks the request, open allows it.Options:
openclosedOptions for change tracking (Beta). Only applicable when 'changeTracking' is included in formats. The 'markdown' format must also be specified when using change tracking.
Show child attributesHide child attributes
The mode to use for change tracking. 'git-diff' provides a detailed diff, and 'json' compares extracted JSON data.
Schema for JSON extraction when using 'json' mode. Defines the structure of data to extract and compare. Must conform to JSON Schema.
Prompt to use for change tracking when using 'json' mode. If not provided, the default prompt will be used.
Tag to use for change tracking. Tags can separate change tracking history into separate "branches", where change tracking with a specific tagwill only compare to scrapes made in the same tag. If not provided, the default tag (null) will be used.
Default: null
If true, this will enable zero data retention for this scrape. To enable this feature, please contact help@firecrawl.dev
Default: false
Responses
application/json
Successful response
Show child attributesHide child attributes
Cleaned HTML of the page if
html is in formats. Removes <script>, <style>, <noscript>, <meta>, and <head> tags; converts relative URLs to absolute; resolves responsive image srcset to the largest version. Respects onlyMainContent, includeTags, and excludeTags filters.The exact, unmodified HTML as received from the page if
rawHtml is in formats. No cleaning or filtering is applied.Screenshot of the page if
screenshot is in formats. Screenshots expire after 24 hours and can no longer be downloaded.List of links on the page if
links is in formatsResults of the actions specified in the
actions parameter. Only present if the actions parameter was provided in the requestShow child attributesHide child attributes
Screenshot URLs, in the same order as the screenshot actions provided. Screenshots expire after 24 hours and can no longer be downloaded.
Scrape contents, in the same order as the scrape actions provided.
JavaScript return values, in the same order as the executeJavascript actions provided.
PDFs generated, in the same order as the pdf actions provided.
Show child attributesHide child attributes
Keywords extracted from the page, can be a string or array of strings
Show child attributesHide child attributes
Alternative locales for the page
The status code of the page
For PDF inputs, the number of pages parsed (capped by the parsers maxPages option).
For PDF inputs, the document's true page count before any maxPages capping. Omitted when it cannot be determined; a totalPages greater than numPages indicates the result was truncated.
The error message of the page
Displayed when using LLM Extraction. Extracted data from the page following the schema defined.
Can be displayed when using LLM Extraction. Warning message will let you know any issues with the extraction.
Change tracking information if
changeTracking is in formats. Only present when the changeTracking format is requested.Show child attributesHide child attributes
The timestamp of the previous scrape that the current page is being compared against. Null if no previous scrape exists.
The result of the comparison between the two page versions. 'new' means this page did not exist before, 'same' means content has not changed, 'changed' means content has changed, 'removed' means the page was removed.
Options:
newsamechangedremovedThe visibility of the current page/URL. 'visible' means the URL was discovered through an organic route (links or sitemap), 'hidden' means the URL was discovered through memory from previous crawls.
Options:
visiblehiddenGit-style diff of changes when using 'git-diff' mode. Only present when the mode is set to 'git-diff'.

