POST
POST /scrape — Firecrawl API
Firecrawl APIScrape a single URL and optionally extract information using an LLM
Scrape a single URL. See the scrape operation.
- Base URL
- https://api.firecrawl.dev/v1
- Auth
- Authorization: Bearer <FIRECRAWL_API_KEY>
- Last verified
- 2026-10-20 · upstream hash matched
Actions Try in browser→
Agents: curl -H "Accept: text/markdown" this URL
→ 194 tokens · Vary: Accept
→ 194 tokens · Vary: Accept
Critical gotchas
The formats field controls the output shape and defaults to ["markdown"]. Omitting it does not return HTML — request ["markdown","html"] explicitly.
cURL
curl -X POST 'https://api.firecrawl.dev/v1/scrape' \ -H "Authorization: Bearer $FIRECRAWL_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "url": "https://example.com", "formats": [ "markdown" ], "onlyMainContent": true, "includeTags": [ "example-includeTags" ], "excludeTags": [ "example-excludeTags" ], "maxAge": 0, "headers": {}, "waitFor": 0, "mobile": false, "skipTlsVerification": false, "timeout": 30000, "parsePDF": true, "jsonOptions": { "schema": {}, "systemPrompt": "example-systemPrompt", "prompt": "example-prompt" }, "actions": [ { "type": "wait", "milliseconds": 0, "selector": "#my-element" } ], "location": { "country": "US", "languages": [ "en-US" ] }, "removeBase64Images": true, "blockAds": true, "proxy": "basic", "changeTrackingOptions": { "modes": [ "git-diff" ], "schema": {}, "prompt": "example-prompt", "tag": null }, "storeInCache": true}'
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| url | body | string | Yes | The URL to scrape |
| formats | body | string[] | No | Formats to include in the output. `rawBase64` must be requested by itself. |
| onlyMainContent | body | boolean | No | Only return the main content of the page excluding headers, navs, footers, etc. |
| includeTags | body | string[] | No | Tags to include in the output. |
| excludeTags | body | string[] | No | Tags to exclude from the output. |
| maxAge | body | integer | No | 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. |
| headers | body | object | No | Headers to send with the request. Can be used to send cookies, user-agent, etc. |
| waitFor | body | integer | No | Specify a delay in milliseconds before fetching the content, allowing the page sufficient time to load. |
| mobile | body | boolean | No | Set to true if you want to emulate scraping from a mobile device. Useful for testing responsive pages and taking mobile screenshots. |
| skipTlsVerification | body | boolean | No | Skip TLS certificate verification when making requests |
| timeout | body | integer | No | Timeout in milliseconds for the request |
| parsePDF | body | boolean | No | 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. |
| jsonOptions | body | object | No | JSON options object |
| actions | body | object[] | No | Actions to perform on the page before grabbing the content |
| location | body | object | No | 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. |
| removeBase64Images | body | boolean | No | 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. |
| blockAds | body | boolean | No | Enables ad-blocking and cookie popup blocking. |
| proxy | body | string | No | 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. |
| changeTrackingOptions | body | object | No | Options for change tracking (Beta). Only applicable when 'changeTracking' is included in formats. The 'markdown' format must also be specified when using change tracking. |
| storeInCache | body | boolean | No | 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 (actions, headers) will force this parameter to be false. |
Response 200 OK
{
"success": true,
"data": {
"markdown": "string"
}
} Get a free Firecrawl API key → sponsored Affiliate link - we may earn a commission, at no extra cost to you.