/scraping-api/ — Firecrawl API
Compare Firecrawl Markdown, HTML and JSON extraction, cache settings and credit charges. Choose a request format and check target status before accepting data.
Scraping API. Official documentation · Checked · Review due .
Connect an MCP client
For client configuration and available tools, use the Firecrawl MCP guide.
documented capabilities
HTTP API- Known page or whole site
- POST /v2/scrape reads one URL. For a site traversal, /v2/crawl starts an asynchronous job. Give crawl an explicit page limit and path scope before starting.[1][5]
- Markdown response
- Request formats: ["markdown"]. Raw HTTP returns content in data.markdown inside a success/data envelope; SDKs return the data object directly.[1]
- HTML choices
- Use formats: ["html"] for cleaned page HTML at data.html. Use formats: ["rawHtml"] for unmodified page HTML at data.rawHtml. These formats preserve markup; Markdown is the text-oriented choice.[1]
- Structured fields
- Use a formats object with type: "json" and a prompt or JSON Schema for fields from a known page. Raw HTTP returns the extracted object at data.json. A JSON response envelope alone does not request extraction. Agent is a separate choice when source URLs must be discovered.[1][2]
- Freshness
- The documented cache default permits data up to two days old. Set maxAge: 0 when the task needs a fresh fetch; this does not guarantee that the target returns the desired page.[1]
- Accepting the response
- An API HTTP 200 or success: true is not sufficient. Inspect data.metadata.statusCode and the requested content: a captured target 403 or 404 can be returned and billed.[1][3]
- Credit decision
- For an ordinary returned page, Markdown uses the 1-credit base. JSON extraction totals 5 credits before other options. Extra modifiers stack; optional browser sessions have a separate billing basis.[3][2]
- No-document exceptions
- Ordinary scrapes that return no document generally cost 0 credits. Paid guards, threat scans and other documented options have exceptions; a returned error page is still a document.[3]
- Authentication and capacity
- Anonymous Scrape has daily per-IP limits. An account API key uses the team plan and shared request limits. Crawl, Map and batch requests require authentication.[4]
Billing: Credits per returned page, with option charges. An ordinary scrape is 1 credit; schema-guided JSON adds 4. Account plans and anonymous limits are separate. Check detailed billing before enabling extra options.
Outputs: markdown, html, json, screenshot
Documented for: HTTP API
getting started
documentation reviewed- Choose a public URL you are permitted to retrieve and the fields the application actually needs. Use Scrape for a known page; keep discovery or a bounded Crawl separate.
- Send an application/json POST to https://api.firecrawl.dev/v2/scrape with url and formats. Start with formats: ["markdown"]. Add Authorization: Bearer YOUR_FIRECRAWL_API_KEY in your HTTP client when using an account; keep the populated key out of shared files.
- Choose maxAge intentionally. For extracted fields, use the JSON format object shown in the example and supply a prompt or schema. Read data.json; the outer success/data response wrapper is not an extraction result.
- Check the API outcome, data.metadata.statusCode and the requested fields before storing the result or retrying. Estimate option charges separately, and bound any later Crawl request.
Requirements & limitations
- This record covers the hosted HTTP scraping interface. Self-hosted Firecrawl and local MCP deployment have different dependencies and available services.
- JavaScript rendering and returned fields are documented capabilities, not a measured success rate or a guarantee for every target.
- Anonymous daily caps differ from the authenticated Free account plan. The reviewed rate-limit page does not publish a numeric keyless allowance.
- Cached responses can remain billable. Optional extraction, guards, documents and browser operations can change credit usage; do not assume every failed call is free.
We reviewed the linked documentation. No live service connection, checkout or performance test is claimed for this listing.
request examples
adapt to your targetMarkdown body — POST /v2/scrape
{
"url": "https://example.com",
"formats": [
"markdown"
],
"maxAge": 0
}Extract a page title — POST /v2/scrape
{
"url": "https://example.com",
"formats": [
{
"type": "json",
"schema": {
"type": "object",
"properties": {
"title": {
"type": "string"
}
},
"required": [
"title"
]
}
}
]
}[1] Firecrawl Scrape: formats, response status and caching[2] Choosing the Firecrawl data extractor
primary sources
6 references- Firecrawl Scrape: formats, response status and cachingChecked 2026-09-28
- Choosing the Firecrawl data extractorChecked 2026-09-28
- Firecrawl credit billing and failure exceptionsChecked 2026-09-28
- Firecrawl rate limits and keyless availabilityChecked 2026-09-28
- Firecrawl Crawl: scope and asynchronous resultsChecked 2026-09-28
- Firecrawl API error handlingChecked 2026-09-28