Skip to main content

Scrape

1 min read
post/scrape
Request example
Response
post/scrape

Interactions#

For browser interactions (clicking, typing, navigating, extracting dynamic content), use the Interact endpoint. Scrape a page first, then call POST /v2/scrape/{scrapeId}/interact with a natural-language prompt or Playwright code to take actions on the page.

See the Interact documentation for full details and examples.

Optionally you can also use the actions parameter, although it's not recommended to use it for complex interactions.

Are you an AI agent that needs a Firecrawl API key? See firecrawl.dev/agent-onboarding/SKILL.md for automated onboarding instructions.

Authorization

Authorizationstringheaderrequired#
Bearer authentication header of the form Bearer <token>, where <token> is your API key.

Body

application/json
urlstringrequired#
The URL to scrape
formatsobject[]#
Output formats to include in the response. You can specify one or more formats, either as strings (e.g., 'markdown') or as objects with additional options (e.g., { type: 'json', schema: {...} }). Some formats require specific options to be set. Example: ['markdown', { type: 'json', schema: {...} }].

Default: ["markdown"]

Show child attributes
onlyMainContentboolean#
Only return the main content of the page excluding headers, navs, footers, etc. This is a deterministic HTML-level filter applied before markdown is generated; no LLM is involved.

Default: true

onlyCleanContentboolean#
Beta. Run an additional LLM-based pass over the generated markdown to remove residual boilerplate that onlyMainContent can miss (cookie banners, ad blocks, social share widgets, breadcrumbs, newsletter signups, comment sections, related-article lists). Headings, lists, tables, code blocks, image references, and inline links are preserved. Can be combined with onlyMainContent (the most common setup) or used on its own. Skipped with a warning when the markdown exceeds the cleaning model's output token limit (the original markdown is preserved). Not supported on zero-data-retention requests.

Default: false

includeTagsstring[]#
Tags to include in the output.
excludeTagsstring[]#
Tags to exclude from the output.
maxAgeinteger#
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 2 days.

Default: 172800000

minAgeinteger#
When set, the request only checks the cache and never triggers a fresh scrape. The value is in milliseconds and specifies the minimum age the cached data must be. If matching cached data exists, it is returned instantly. If no cached data is found, a 404 with error code SCRAPE_NO_CACHED_DATA is returned. Set to 1 to accept any cached data regardless of age.
headersobject#
Headers to send with the request. Can be used to send cookies, user-agent, etc.
waitForinteger#
Specify a delay in milliseconds before fetching the content, allowing the page sufficient time to load. This waiting time is in addition to Firecrawl's smart wait feature.

Default: 0

mobileboolean#
Set to true if you want to emulate scraping from a mobile device. Useful for testing responsive pages and taking mobile screenshots.

Default: false

skipTlsVerificationboolean#
Skip TLS certificate verification when making requests.

Default: true

timeoutinteger#
Timeout in milliseconds for the request. Minimum is 1000 (1 second). Default is 60000 (60 seconds). Maximum is 300000 (300 seconds).

Default: 60000

Range: 1000–300000

parsersobject[]#
Controls how files are processed during scraping. When "pdf" is included (default), the PDF content is extracted and converted to markdown format, with billing based on the number of pages (1 credit per page). When an empty array is passed, the PDF file is returned in base64 encoding with a flat rate of 1 credit for the entire PDF.

Default: ["pdf"]

Show child attributes
actionsobject[]#
Actions to perform on the page before grabbing the content
Show child attributes
locationobject#
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 attributes
countrystring#
ISO 3166-1 alpha-2 country code (e.g., 'US', 'AU', 'DE', 'JP')

Default: "US"

Pattern: ^[A-Z]{2}$

languagesstring[]#
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
removeBase64Imagesboolean#
Removes all base 64 images from the markdown output, which may be overwhelmingly long. This does not affect html or rawHtml formats. The image's alt text remains in the output, but the URL is replaced with a placeholder.

Default: true

blockAdsboolean#
Enables ad-blocking and cookie popup blocking.

Default: true

proxyenum<string>#

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.

Default: "auto"

Options:basicenhancedauto
storeInCacheboolean#
If 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 (e.g. actions, headers) will force this parameter to be false.

Default: true

lockdownboolean#
If true, serves the request from Firecrawl's cache only and never makes an outbound request to the target URL. Designed for compliance-constrained or air-gapped environments where the scrape request itself could leak sensitive information. On cache miss, returns a 404 with error code SCRAPE_LOCKDOWN_CACHE_MISS (the URL is never logged on miss). Lockdown requests are treated as zero data retention. Default maxAge is extended to 2 years so existing cached pages remain eligible. Billed at 5 credits on hit, 1 credit on cache miss.

Default: false

redactPIIboolean · object#
Redact personally identifiable information from returned markdown. Pass true to use defaults, or an object to tune mode, entities, and replacement style.

Default: false

Show child attributes
profileobject#
Enable persistent browser storage across scrape and interact sessions. Pass a profile when scraping to preserve cookies, localStorage, and session data. Sessions with the same profile name share browser state.
Show child attributes
namestringrequired#
A name for the profile. Scrapes with the same name share browser state (cookies, localStorage, sessions).

Length: 1–128

saveChangesboolean#
When true, browser state is saved back to the profile when the interact session stops. Set to false to load existing data without writing. Only one saving session is allowed at a time.

Default: true

threatProtectionobject#
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 attributes
modeenum<string>#
URL scanning mode for this request. normal checks URLs against Google Web Risk (+2 credits per URL scanned).
Options:offnormal
riskScoreThresholdinteger#
Normalized risk score (0–100) at or above which a classifier verdict blocks the URL. Lower is stricter.

Range: 0–100

blackliststring[]#
Domains to always block, as plain domains (example.com) or wildcard globs (*.example.com). No protocol, path, or port.

Items: max 1000

whiteliststring[]#
Domains to always allow, as plain domains or wildcard globs. Wins over every other rule.

Items: max 1000

blockedTldsstring[]#
Top-level domains to block outright, lowercase without the leading dot (e.g. zip).

Items: max 1000

failurePolicyenum<string>#
What to do when the classifier can't be reached: closed blocks the request, open allows it.
Options:openclosed
auditMetadataobject#
User attribution included with SIEM logging events when SIEM Logging is enabled for the organization.
Show child attributes
usernamestringrequired#
The username associated with the request.

Length: max 1024

zeroDataRetentionboolean#
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
successboolean#
dataobject#
Show child attributes
markdownstring#
pagesobject[]#
Physical per-page markdown for PDFs. Present only when the request set the pages PDF parser option.
Show child attributes
pageNumberinteger#
1-based physical PDF page number.
markdownstring#
blocksobject[]#
Per-page typed layout blocks for PDFs. Present only when the request set the blocks PDF parser option.
Show child attributes
pageNumberinteger#
1-based physical PDF page number.
widthnumber#
Page render width in px — the anchor for denormalizing bbox coordinates. Null for pages that never rendered.
heightnumber#
Page render height in px. Null for pages that never rendered.
statusstring#
Page-level rollup: ok | partial | failed.
itemsobject[]#
Show child attributes
idstring#
Stable within a response: p<page>.b<index in reading order>.
typestring#
Block type: title, section_header, text, table, formula, figure, caption, page_number, page_header, page_footer. New types may appear over time.
labelstring#
Raw layout-model label, passthrough for forward compatibility.
bboxnumber[]#
[x0, y0, x1, y1] normalized 0-1 relative to the page width/height. Multiply by the page width/height to get pixel coordinates. Null when the page has no known dimensions.

Items: 4–4

contentstring#
Markdown fragment this block contributed to the document markdown.
markdownSpaninteger[]#
[start, end) character offsets into the document markdown covering this block's fragment. Null when a post-processing transform rewrote the fragment.

Items: 2–2

readingOrderinteger#
sourcestring#
Pipeline path that produced the block (for example native_text, layout_ocr, tsr, formula_model, full_page).
confidenceobject#
Show child attributes
layoutnumber#
Layout-model detection score (0-1). Null when the page bypassed layout analysis.
ocrnumber#
Text confidence when the source path provides one; null otherwise.
summarystring#
Summary of the page if summary is in formats
htmlstring#
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.
rawHtmlstring#
The exact, unmodified HTML as received from the page if rawHtml is in formats. No cleaning or filtering is applied.
rawBase64string#
The Base64-encoded original HTTP response body if rawBase64 is in formats. A bare Base64 string, not a data URI. The MIME type is in metadata.contentType.
screenshotstring#
Screenshot of the page if screenshot is in formats. Screenshots expire after 24 hours and can no longer be downloaded.
audiostring#
Signed URL to the extracted MP3 audio file if audio is in formats. The signed URL expires after 1 hour.
videostring#
Signed URL to the extracted video file if video is in formats. The signed URL expires after 1 hour.
answerstring#
Natural-language answer to the question supplied via the question format. Only present if a question format object was included in formats.
highlightsstring#
Relevant source text selected by the highlights format. Only present if a highlights format object was included in formats.
actionsobject#
Results of the actions specified in the actions parameter. Only present if the actions parameter was provided in the request
Show child attributes
screenshotsstring[]#
Screenshot URLs, in the same order as the screenshot actions provided.
scrapesobject[]#
Scrape contents, in the same order as the scrape actions provided.
Show child attributes
urlstring#
htmlstring#
javascriptReturnsobject[]#
JavaScript return values, in the same order as the executeJavascript actions provided.
Show child attributes
typestring#
valueany#
pdfsstring[]#
PDFs generated, in the same order as the pdf actions provided.
metadataobject#
Show child attributes
titlestring · string[]#
Title extracted from the page, can be a string or array of strings
Show child attributes
descriptionstring · string[]#
Description extracted from the page, can be a string or array of strings
Show child attributes
languagestring · string[]#
Language extracted from the page, can be a string or array of strings
Show child attributes
sourceURLstring#
The original URL that was requested. May differ from the page's final URL if redirects occurred.
urlstring#
The final URL of the page after all redirects have been followed.
keywordsstring · string[]#
Keywords extracted from the page, can be a string or array of strings
Show child attributes
ogLocaleAlternatestring[]#
Alternative locales for the page
<any other metadata> string · string[]#
Other metadata extracted from HTML, can be a string or array of strings
Show child attributes
statusCodeinteger#
The status code of the page
numPagesinteger#
For PDF inputs, the number of pages parsed (capped by the parsers maxPages option).
totalPagesinteger#
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.
contentTypestring#
The content type (MIME type) of the page, e.g. text/html, application/pdf
errorstring#
The error message of the page
concurrencyLimitedboolean#
Whether this scrape was throttled due to team concurrency limits
concurrencyQueueDurationMsnumber#
Time in milliseconds the request waited in the concurrency queue. Only present when concurrencyLimited is true.
warningstring#
Can be displayed when using LLM Extraction. Warning message will let you know any issues with the extraction.
changeTrackingobject#
Change tracking information if changeTracking is in formats. Only present when the changeTracking format is requested.
Show child attributes
previousScrapeAtstring#
The timestamp of the previous scrape that the current page is being compared against. Null if no previous scrape exists.
changeStatusenum<string>#
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:newsamechangedremoved
visibilityenum<string>#
The 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:visiblehidden
diffstring#
Git-style diff of changes when using 'git-diff' mode. Only present when the mode is set to 'git-diff'.
jsonobject#
JSON comparison results when using 'json' mode. Only present when the mode is set to 'json'. This will emit a list of all the keys and their values from the previous and current scrapes based on the type defined in the schema. Example here
brandingobject#
Branding information extracted from the page if branding is in formats. Includes colors, fonts, typography, spacing, components, and more.
Show child attributes
colorSchemeenum<string>#
The detected color scheme of the page.
Options:lightdark
colorsobject#
Brand colors extracted from the page.
Show child attributes
primarystring#
Primary brand color (hex).
secondarystring#
Secondary brand color (hex).
accentstring#
Accent color (hex).
backgroundstring#
Background color (hex).
textPrimarystring#
Primary text color (hex).
textSecondarystring#
Secondary text color (hex).
successstring#
Success/positive color (hex).
warningstring#
Warning color (hex).
errorstring#
Error/danger color (hex).
fontsobject[]#
Array of font families used on the page.
Show child attributes
familystring#
Font family name.
typographyobject#
Detailed typography information.
Show child attributes
fontFamiliesobject#
Font families by role.
Show child attributes
primarystring#
Primary font family.
headingstring#
Heading font family.
codestring#
Code/monospace font family.
fontSizesobject#
Font sizes for different text levels.
Show child attributes
h1string#
h2string#
h3string#
bodystring#
fontWeightsobject#
Font weight definitions.
Show child attributes
lightinteger#
regularinteger#
mediuminteger#
boldinteger#
lineHeightsobject#
Line height values for different text types.
Show child attributes
headingstring#
bodystring#
spacingobject#
Spacing and layout information.
Show child attributes
baseUnitinteger#
Base spacing unit in pixels.
borderRadiusstring#
Default border radius.
paddingobject#
Padding values.
marginsobject#
Margin values.
componentsobject#
UI component styles.
Show child attributes
buttonPrimaryobject#
Primary button styles.
Show child attributes
backgroundstring#
textColorstring#
borderRadiusstring#
buttonSecondaryobject#
Secondary button styles.
Show child attributes
backgroundstring#
textColorstring#
borderColorstring#
borderRadiusstring#
inputobject#
Input field styles.
iconsobject#
Icon style information.
imagesobject#
Brand images.
Show child attributes
faviconstring#
Favicon URL.
ogImagestring#
Open Graph image URL.
animationsobject#
Animation and transition settings.
layoutobject#
Layout configuration (grid, header/footer heights).
personalityobject#
Brand personality traits (tone, energy, target audience).
productobject#
Product information extracted from the page if product is in formats. Includes title, brand, category, description, and variants. Pricing, availability, and images live on each variant.
Show child attributes
titlestringrequired#
The product title.
brandstring#
The product brand or manufacturer.
categorystring#
The product category, optionally as a breadcrumb path (e.g. 'Electronics > Audio > Headphones').
urlstringrequired#
The canonical URL of the product page.
descriptionstring#
The product description.
variantsobject[]required#
Product variants (e.g. different colors or sizes).
Show child attributes
idstring#
The variant identifier.
skustring#
The variant SKU.
titlestring#
The variant title.
valuesobject#
The variant option values (e.g. { "color": "Black" }).
Show child attributes
{key}string#
priceobject#
The current price of the variant.
Show child attributes
amountnumberrequired#
The numeric price amount.
currencystring#
The ISO 4217 currency code (e.g. 'USD').
formattedstring#
The price formatted for display (e.g. '$199.99').
saleobject#
Sale/discount information for the variant, present when the variant is discounted.
Show child attributes
originalPriceobjectrequired#
The original (pre-discount) price of the variant.
Show child attributes
amountnumberrequired#
The numeric price amount.
currencystring#
The ISO 4217 currency code (e.g. 'USD').
formattedstring#
The price formatted for display (e.g. '$249.99').
availabilityobjectrequired#
The availability of the variant. Always present on a variant.
Show child attributes
inStockbooleanrequired#
Whether the variant is in stock.
textstring#
Human-readable availability text (e.g. 'In Stock').
imagesobject[]#
Variant images.
Show child attributes
urlstringrequired#
Image URL.
altstring#
Alternative text for the image.
menuobject#
Menu information extracted from the page if menu is in formats. Includes the merchant, currency, and a list of sections, where each section carries items with description, images, price, availability, dietary tags, calories, and option groups.
Show child attributes
isMenubooleanrequired#
Whether the page was identified as a menu.
confidencenumber#
A confidence score between 0 and 1 for the menu extraction.
merchantobject#
The merchant the menu belongs to.
Show child attributes
namestringrequired#
The merchant name.
typestring#
The merchant type (e.g. 'restaurant').
currencystring#
The ISO 4217 currency code for the menu (e.g. 'USD'), reported only when the page sources it.
sectionsobject[]required#
Menu sections (e.g. 'Appetizers', 'Entrees').
Show child attributes
idstring#
The section identifier.
namestringrequired#
The section name.
descriptionstring#
The section description.
itemsobject[]required#
The items in the section.
Show child attributes
idstring#
The item identifier.
namestringrequired#
The item name.
descriptionstring#
The item description.
imagesobject[]#
Item images.
Show child attributes
urlstringrequired#
Image URL.
altstring#
Alternative text for the image.
priceobject#
The price of the item.
Show child attributes
amountnumberrequired#
The numeric price amount.
currencystring#
The ISO 4217 currency code (e.g. 'USD').
formattedstring#
The price formatted for display (e.g. '$7.99').
availabilityobject#
The availability of the item.
Show child attributes
inStockbooleanrequired#
Whether the item is available.
textstring#
Human-readable availability text.
dietarystring[]#
Dietary tags for the item (e.g. ['vegetarian']).
caloriesnumber#
The item's calorie count.
optionGroupsobject[]#
Option/modifier groups for the item.
identifiersobject#
Merchant-specific identifiers for the item.
Show child attributes
merchantItemIdstring#
The merchant's own item ID.
urlstring#
The canonical URL of the item.
sourceUrlstring#
The URL the item was extracted from.
sourceUrlstring#
The URL the menu was extracted from.