Free
$0
Free
1,000 credits/month (~1,000 pages or 500 searches)
Plan details
No PAYGO: 402 when exhausted
Credit-based API that turns any URL or whole site into LLM-ready markdown/JSON: scrape, crawl, map, search, browser interact, file parse, monitors, plus a growing data-provider marketplace (Alexandria). Best for full-site URL inventories.
The actions you pay for, as Firecrawl prices them in credits.
| Action | Cost | Per |
|---|---|---|
| Scrape / crawl page | 1 credit | page |
| PDF parsing | +1 credit | PDF page |
| JSON (LLM extraction), question/query, highlights, audio, video, PII redaction, prompt-injection check | +4 credits each | page |
| Zero Data Retention | +1 credit | page |
| Enhanced proxy | +0 (1 credit total) | page |
| Map | 1 credit (per call per billing doc; pricing HTML table says per page; measured per call) | call |
| Search | 2 credits | 10 results |
| Interact | 2 credits (7 with prompt) | browser minute |
| Action | Cost | Per |
|---|---|---|
| Monitor | 1 credit (+1 per changed page judged; flat 7 for JSON/deterministic-extraction monitors) | page per check |
| Threat protection scan | 2 credits | URL |
| LinkedIn profile/company (provider-routed) | FullEnrich 5 / Data Legion base 10 / Apollo 30 / Data Legion premium 40 credits | URL |
| X.com post/profile (Grok API) | 30 credits (34 with JSON) | request |
| Agent (preview) | 5 free runs/day, then dynamic | run |
| Research Index papers | free | call |
US dollars, as Firecrawl's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.
Free tier 1,000 credits/month, no card, no rollover, no pay-as-you-go; keyless tier capped per IP per day
$0
Free
1,000 credits/month (~1,000 pages or 500 searches)
No PAYGO: 402 when exhausted
$19/mo
billed monthly
$16/mo
billed annually
5,000 credits/month
PAYGO 1,000 credits per $5
$99/mo
billed monthly
$83/mo
billed annually
100,000 credits/month
PAYGO 2,000 credits per $5
$399/mo
billed monthly
$333/mo
billed annually
500,000 credits/month
PAYGO 2,500 credits per $5
$749/mo
billed monthly
$599/mo
billed annually
1,000,000 credits/month (1-month rollover)
PAYGO 5,000 credits per $5
Custom quote
Custom credits, ZDR, SSO, SLA, 2-month rollover on annual
Custom
Annual billing totals: Hobby $190/yr, Standard $990/yr, Growth $3,990/yr, Scale $7,190/yr (page shows rounded $16/$83/$333/$599 per month). Pay-as-you-go needs a paid plan: $5 increments of 1,000 (Hobby) / 2,000 (Standard) / 2,500 (Growth) / 5,000 (Scale) credits up to a monthly limit you set; bought credits do not expire. 403/404 pages still cost 1 credit (effective 2026-09-04). Prices in USD (page shows a USD selector; no INR shown from our IP).
Per team (shared across keys).
| Limit | Free | Hobby | Standard | Growth | Scale | Keyless |
|---|---|---|---|---|---|---|
| Limit | 2 concurrent browsers; /scrape,/map,/search 10/min; /crawl,/agent 2/min; 50,000 max queued | 5 browsers; 100/min; 20/min; 50,000 queued | 25 browsers; 500/min; 100/min; 50,000 queued | 50 browsers; 5,000/min; 1,000/min; 100,000 queued | 100 browsers; 10,000/min; 2,000/min; 200,000+ queued | Search, Scrape, Parse (+Interact via SDK/CLI); daily request and credit caps per IP (numbers not published) |
Two limits: requests/min per endpoint and concurrent browsers (the real bottleneck). Queue waits count against request timeout; queued jobs time out after 48h. Status endpoints (/crawl/status, /agent/status) have far higher limits (Free 500 up to Scale 500,000/min). /interact Free 2 / Hobby 20 / Standard 100 / Growth 1,000 / Scale 1,500 per min; /interact/{id}/execute 10/100/500/5,000/7,500. Docs disagree on whether batch scrape shares the /crawl or the /scrape limit. No rate-limit headers were returned in our live scrape (only X-Response-Time).
Firecrawl uses API key. The steps below follow Firecrawl's own docs.
curl -X POST "https://api.firecrawl.dev/v2/scrape" \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'| What | Where |
|---|---|
| Documentation | docs.firecrawl.dev |
| API reference | docs.firecrawl.dev/api-reference/v2-introduction |
| OpenAPI spec | docs.firecrawl.dev/api-reference/v2-openapi.json |
| llms.txt | docs.firecrawl.dev/llms.txt |
| Changelog | firecrawl.dev/changelog |
| Base URL | https://api.firecrawl.dev/v2 |
| MCP server | https://mcp.firecrawl.dev/v2/mcp |
| SDKs | Python (firecrawl / firecrawl-py), Node (firecrawl), Go, Rust, Java, Elixir, .NET, PHP, Ruby, CLI |
We use Firecrawl for full URL inventories of websites and to scrape a company's homepage when its LinkedIn description is not enough to qualify the company. A map call costs 1 credit however many URLs it returns (24,797 URLs for 1 credit on one site), and the default limit of 100 silently truncates the list, so we always send the maximum limit of 100,000. Before a large scrape we test the proxy mode on 5 pages first; on one job that cut the credit estimate from 24,270 to 8,542, since the enhanced proxy costs 5 credits a page against 1 for basic.
Other Research and scraping tools in this directory, each with its own review.
Best for scraping sites that have no API via pay-per-result Store Actors.
Apify API reviewBest for structured records from big platforms via maintained Scraper APIs, pay only per delivered record.
Bright Data API reviewFour things to settle first, each read off Firecrawl's own pages.
Tell us what you want Firecrawl to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.
Read from firecrawl.dev/pricing, docs.firecrawl.dev/api-reference/v2-introduction and docs.firecrawl.dev/rate-limits. Verified 25 Oct 2026.
| Method | Path | What it does | Cost |
|---|---|---|---|
| POST | /scrape | Scrape one URL to markdown/HTML/JSON/screenshot etc.; optional actions and LLM extraction | 1 credit/page; +1/PDF page; +4 json, question/query, highlights, audio, video, redactPII, checkPromptInjection, lockdown hit; +1 ZDR; enhanced proxy +0; LinkedIn profile/company URLs billed at provider rates (5-40 credits); x.com URLs 30 credits |
| GETasync | /scrape/{jobId} | Status of a scrape job | Not stated |
| POST | /scrape/{jobId}/interact | Interact with the browser session of a scrape job | 2 credits/browser minute (7 with prompt), 1-minute minimum |
| DELETE | /scrape/{jobId}/interact | Stop the interactive browser session | Not stated |
| POST | /parse | Upload and parse a file (PDF, Word, spreadsheet) to markdown/JSON | 1 credit/page + format surcharges |
| GET | /parse/formats | List supported parse formats | free |
| POSTasync | /batch/scrape | Scrape many URLs asynchronously (webhook optional) | scrape cost per page, billed as each page completes |
| GETasync | /batch/scrape/{id} | Batch scrape status/results | free (polling not charged) |
| DELETE | /batch/scrape/{id} | Cancel batch scrape | Not stated |
| GET | /batch/scrape/{id}/errors | Batch scrape errors | Not stated |
| POSTasync | /crawl | Crawl a site by following links | 1 credit/page + scrape option surcharges; default limit 10,000 pages |
| GETasync | /crawl/{id} | Crawl status/results | free |
| DELETE | /crawl/{id} | Cancel crawl | Not stated |
| GET | /crawl/{id}/errors | Crawl errors | Not stated |
| POST | /crawl/params-preview | Preview crawl params from a natural-language prompt | Not stated |
| GET | /crawl/active | List active crawls for the team | Not stated |
| POST | /map | List a site's URLs without scraping | 1 credit per call per billing doc and the pricing markdown; the pricing HTML table now says '1 / page'. Our measurement: 2,836 URLs = 1 credit, so per call. limit default 5,000, max 100,000. Sources: docs.firecrawl.dev/billing; firecrawl.dev/pricing |
| POSTasync | /extract | LLM structured extraction across pages | Dynamic; shares /agent rate limit |
| GETasync | /extract/{id} | Extract job status | Not stated |
| POSTasync | /agent | Start autonomous agent data-extraction task (preview) | 5 free runs/day, then dynamic credits by agent tokens |
| GET | /agent | List agent runs | Not stated |
| GETasync | /agent/{jobId} | Agent job status | Not stated |
| DELETE | /agent/{jobId} | Cancel agent job | Not stated |
| GET | /agent/{jobId}/trace | Agent execution trace | Not stated |
| GET | /agent/{jobId}/snapshots/{snapshotId} | Agent output snapshot | Not stated |
| POST | /search | Web search, optionally scraping results | 2 credits per 10 results (rounded up per 10) + scrape cost per scraped result |
| POST | /search/{jobId}/feedback | Feedback on a search job | Not stated |
| GET | /search/research/papers | Search Research Index papers | free |
| GET | /search/research/papers/{id} | Inspect or read a paper | free |
| GET | /search/research/papers/{id}/similar | Related papers | free |
| GET | /search/developer | Search the Developer Index (GET) | Not stated |
| POST | /search/developer | Search the Developer Index | Not stated |
| GET | /search/gov | Search the Government & Legal Index (GET) | Not stated |
| POST | /search/gov | Search the Government & Legal Index | Not stated |
| POST | /interact | Create a browser sandbox session | 2 credits/browser minute code-only, 7 with prompt, +2 for ZDR |
| GET | /interact | List interact sessions | Not stated |
| POST | /interact/{sessionId}/execute | Execute code in a session | Not stated |
| DELETE | /interact/{sessionId} | Delete a session | Not stated |
| POST | /monitor | Create a page/site/web monitor with webhook alerts | 1 credit per page per check (base scrape/crawl); judging adds +1 credit per changed page judged; JSON / deterministic-extraction monitors bill a flat 7 credits per page per check instead (pricing page HTML). Source: docs.firecrawl.dev/billing; docs.firecrawl.dev/features/monitor; firecrawl.dev/pricing |
| GET | /monitor | List monitors | Not stated |
| GET | /monitor/{monitorId} | Get monitor | Not stated |
| PATCH | /monitor/{monitorId} | Update monitor | Not stated |
| DELETE | /monitor/{monitorId} | Delete monitor | Not stated |
| POST | /monitor/{monitorId}/run | Run a monitor now | 1 credit per page per check (base scrape/crawl); judging adds +1 credit per changed page judged; JSON / deterministic-extraction monitors bill a flat 7 credits per page per check instead (pricing page HTML). Source: docs.firecrawl.dev/billing; docs.firecrawl.dev/features/monitor; firecrawl.dev/pricing |
| GET | /monitor/{monitorId}/checks | List monitor checks | Not stated |
| GET | /monitor/{monitorId}/checks/{checkId} | Get a monitor check | Not stated |
| GET | /team/credit-usage | Remaining credits | free |
| GET | /team/credit-usage/historical | Historical credit usage | free |
| GET | /team/token-usage | Remaining extract tokens | free |
| GET | /team/token-usage/historical | Historical token usage | free |
| GET | /team/queue-status | Scrape queue metrics (check before sending big jobs) | free |
| GET | /team/activity | Recent API activity | free |
| GET | /team/threat-protection | Get threat protection policy | Not stated |
| PUT | /team/threat-protection | Update threat protection policy (scan costs 2 credits per URL) | Not stated |
| POST | /feedback | Feedback on a v2 job | Not stated |
| POST | /support/ask | Ask the Firecrawl support agent | Not stated |
| POST | /support/docs-search | Search Firecrawl docs with citations | Not stated |
No endpoint matches that filter.