POST
POST /extract — Firecrawl API
Firecrawl APIExtract structured data from pages using LLMs
Extract structured data from URLs. See the extract 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
→ 224 tokens · Vary: Accept
→ 224 tokens · Vary: Accept
Critical gotchas
The formats field lives under scrapeOptions.formats, not at the top level, and defaults to ["markdown"] when scrapeOptions is omitted. Set scrapeOptions.formats explicitly (e.g. ["markdown","html"]) to get HTML in results.
POST /extract is asynchronous and returns a job id immediately. Poll GET /extract/{id} until status leaves processing — it becomes completed (result in data), failed, or cancelled. Fetch data before expiresAt: completed results expire.
cURL
curl -X POST 'https://api.firecrawl.dev/v1/extract' \ -H "Authorization: Bearer $FIRECRAWL_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "urls": [ "https://example.com" ], "prompt": "example-prompt", "schema": {}, "enableWebSearch": false, "ignoreSitemap": false, "includeSubdomains": true, "showSources": false, "scrapeOptions": { "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 }, "ignoreInvalidURLs": false}'
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| urls | body | string[] | Yes | Request body field urls. |
| prompt | body | string | No | Prompt to guide the extraction process |
| schema | body | object | No | Schema to define the structure of the extracted data. Must conform to [JSON Schema](https://json-schema.org/). |
| enableWebSearch | body | boolean | No | When true, the extraction will use web search to find additional data |
| ignoreSitemap | body | boolean | No | When true, sitemap.xml files will be ignored during website scanning |
| includeSubdomains | body | boolean | No | When true, subdomains of the provided URLs will also be scanned |
| showSources | body | boolean | No | When true, the sources used to extract the data will be included in the response as `sources` key |
| scrapeOptions | body | object | No | Request body field scrapeOptions. |
| ignoreInvalidURLs | body | boolean | No | If invalid URLs are specified in the urls array, they will be ignored. Instead of them failing the entire request, an extract using the remaining valid URLs will be performed, and the invalid URLs will be returned in the invalidURLs field of the response. |
Response 200 OK
{
"success": true,
"id": "string"
} Get a free Firecrawl API key → sponsored Affiliate link - we may earn a commission, at no extra cost to you.