Firecrawl vs ScrapingBee
- 500,000 pages/mo
- 20% JS
- medium anti-bot
- United States
- 40 concurrent
- monthly billing
- Example workload — edit it below
Pricing checked Nov 14, 2026 · engine 0.1.0 · cheapest plan that fits, per product
| Product | Firecrawl · Firecrawl API Scraping API · Credits | ScrapingBee · Web Scraping API Scraping API · Credits |
|---|---|---|
| Expected monthly costFor this workload | ||
| Capabilities | ||
| JavaScript rendering | Yesscrape-docs | Yesdocs |
| Country targeting | Yesscrape-docs | Yesdocs |
| Premium proxy | Yesbilling | Yesdocs |
| Screenshot | Yesscrape-docs | Yesdocs |
| Cookie persistence | Yesinteract-docs | Not documented |
| Json output | Yesbilling | Not documented |
| City targeting | Not documented | Nodocs |
| Sticky session | Not documented | Yesdocs |
| AI extraction | Not documented | Yesdocs |
| Limits | ||
| Max queued jobs |
| Not documented |
| Requests per minute |
| Not documented |
| Session duration | Not documented |
|
| Request timeout | Not documented |
|
| Things to know |
|
|
| Evidence | Sources and check dates → | Sources and check dates → |
“Not documented” means the provider's pages don't say — not that the capability is missing. Estimates use list prices and exclude promotions and taxes; the provider's checkout is authoritative.
JSON and API request
The same comparison from the API:
curl -X POST https://scrapeselect.com/api/v1/compare \
-H 'content-type: application/json' \
-d '{"products":["firecrawl/api","scrapingbee/web-scraping-api"],"workload":{"successful_pages_per_month":500000,"javascript_ratio":0.2,"anti_bot_level":"medium","target_country":"US","country_required":true,"peak_concurrency":40,"monthly_billing_only":true,"expected_success_rate":null,"average_page_size_kb":null,"average_browser_seconds":null}}'{
"products": [
{
"estimate": {
"provider": "firecrawl",
"provider_name": "Firecrawl",
"product": "api",
"product_name": "Firecrawl API",
"category": "scraping_api",
"billing_model": "credit",
"architecture": "managed_api",
"feasible": true,
"low": {
"plan_key": "growth",
"plan_name": "Growth",
"monthly_cost_usd": 399,
"cost_per_1k_pages_usd": 0.798
},
"expected": {
"plan_key": "growth",
"plan_name": "Growth",
"monthly_cost_usd": 399,
"cost_per_1k_pages_usd": 0.798
},
"high": {
"plan_key": "growth",
"plan_name": "Growth",
"monthly_cost_usd": 399,
"cost_per_1k_pages_usd": 0.798
},
"rejected_plans": {
"free": "concurrency 2 < 40",
"hobby": "concurrency 5 < 40",
"standard": "concurrency 25 < 40",
"enterprise": "price not public"
},
"sources": [
{
"key": "billing",
"url": "https://docs.firecrawl.dev/billing",
"title": "Firecrawl billing",
"observed_at": "2026-11-14T06:10:04.383306Z",
"excerpts": [
"Credits are the unit of usage in Firecrawl.",
"Scrape 1 credit / page Convert a single URL into clean markdown, HTML, or structured data.",
"Search 2 credits / 10 results",
"Map 1 credit / call",
"Interact 2–7 credits / browser minute",
"JSON format (LLM extraction) +4 credits / page",
"Firecrawl returned a document: 1 credit per page",
"Firecrawl returned no document: 0 credits.",
"Unused plan credits do not roll over by default: your monthly allotment resets each month.",
"Annual Scale plans roll unused plan credits over 1 month, and annual Enterprise plans roll them over 2 months.",
"Credits you buy stay on your account until you use them.",
"You buy credits in increments of 5 USD.",
"Hobby 5,000 5 Standard 100,000 25 Growth 500,000 50 Scale 1,000,000 100",
"Hobby 1,000 Standard 2,000 Growth 2,500 Scale 5,000",
"Enhanced proxy (proxy: \"enhanced\" or auto escalation) +0"
],
"fact_type": "official_claim",
"freshness": "fresh"
},
{
"key": "pricing",
"url": "https://www.firecrawl.dev/pricing",
"title": "Firecrawl pricing",
"observed_at": "2026-11-14T06:10:04.383306Z",
"excerpts": [
"Hobby: $19/month billed monthly ($16/month billed annually), 5,000 credits/month",
"Standard: $99/month billed monthly ($83/month billed annually), 100,000 credits/month",
"Growth: $399/month billed monthly ($333/month billed annually), 500,000 credits/month",
"Scale: $749/month billed monthly ($599/month billed annually), 1,000,000 credits/month",
"Free tier 1,000 credits every month, refreshed monthly, no credit card required.",
"Enterprise: custom pricing, credits and concurrency.",
"A scrape that returns no result is not charged. A page that responds with an error status such as 403 or 404 is still returned to you and costs 1 credit.",
"2 concurrent requests",
"5 concurrent requests",
"25 concurrent requests",
"50 concurrent requests",
"100 concurrent requests",
"1,000 extra credits per $5",
"2,000 extra credits per $5",
"2,500 extra credits per $5",
"5,000 extra credits per $5",
"Effective September 4, 2026"
],
"fact_type": "official_claim",
"freshness": "fresh"
}
]
},
"features": [
{
"key": "javascript-rendering",
"label": "JavaScript rendering",
"value": true,
"notes": null,
"source": "scrape-docs"
},
{
"key": "country-targeting",
"label": "Country targeting",
"value": true,
"notes": "Uses the scope location object: ISO 3166-1 alpha-2 country plus preferred languages; US by default.",
"source": "scrape-docs"
},
{
"key": "premium-proxy",
"label": "Premium proxy",
"value": true,
"notes": "Enhanced proxy costs the same 1 credit.",
"source": "billing"
},
{
"key": "screenshot",
"label": "Screenshot",
"value": true,
"notes": null,
"source": "scrape-docs"
},
{
"key": "cookie-persistence",
"label": "Cookie persistence",
"value": true,
"notes": "Persistent browser profiles save cookies, localStorage and sessions across scrapes.",
"source": "interact-docs"
},
{
"key": "json-output",
"label": "Json output",
"value": true,
"notes": "+4 credits per page.",
"source": "billing"
}
],
"limits": [
{
"key": "max-queued-jobs",
"value": 50000,
"unit": "jobs",
"plan": "free",
"notes": null,
"source": "rate-limits"
},
{
"key": "max-queued-jobs",
"value": 50000,
"unit": "jobs",
"plan": "hobby",
"notes": null,
"source": "rate-limits"
},
{
"key": "max-queued-jobs",
"value": 50000,
"unit": "jobs",
"plan": "standard",
"notes": null,
"source": "rate-limits"
},
{
"key": "max-queued-jobs",
"value": 100000,
"unit": "jobs",
"plan": "growth",
"notes": null,
"source": "rate-limits"
},
{
"key": "max-queued-jobs",
"value": 200000,
"unit": "jobs",
"plan": "scale",
"notes": "200,000+; the page groups Scale and Enterprise in one row.",
"source": "rate-limits"
},
{
"key": "max-queued-jobs",
"value": 200000,
"unit": "jobs",
"plan": "enterprise",
"notes": "200,000+; the page groups Scale and Enterprise in one row.",
"source": "rate-limits"
},
{
"key": "requests-per-minute",
"value": 10,
"unit": "requests",
"plan": "free",
"notes": "On /scrape, /map and /search; /crawl and /agent allow 2/min.",
"source": "rate-limits"
},
{
"key": "requests-per-minute",
"value": 100,
"unit": "requests",
"plan": "hobby",
"notes": "On /scrape, /map and /search; /crawl and /agent allow 20/min.",
"source": "rate-limits"
},
{
"key": "requests-per-minute",
"value": 500,
"unit": "requests",
"plan": "standard",
"notes": "On /scrape, /map and /search; /crawl and /agent allow 100/min.",
"source": "rate-limits"
},
{
"key": "requests-per-minute",
"value": 5000,
"unit": "requests",
"plan": "growth",
"notes": "On /scrape, /map and /search; /crawl and /agent allow 1000/min.",
"source": "rate-limits"
},
{
"key": "requests-per-minute",
"value": 10000,
"unit": "requests",
"plan": "scale",
"notes": "On /scrape, /map and /search; /crawl and /agent allow 2000/min.",
"source": "rate-limits"
}
],
"notes": [
"One credit per scraped page. JSON extraction adds 4 credits/page; PDF parsing adds 1 per PDF page; Zero Data Retention adds 1; question, query, highlights, audio and video formats add 4 each; PII redaction adds 4; the prompt-injection check adds 4 (or 5 when the scrape fails after the check).",
"Enhanced proxy is free (+0 credits); basic and enhanced requests both cost 1 credit.",
"Search costs 2 credits per 10 results (rounded up) plus scrape costs for results that are scraped. Map costs 1 credit per call. Interact costs 2-7 credits per browser minute with a one-minute minimum. Agent has 5 free runs per day, then dynamic pricing.",
"A scrape that returns no document costs 0 credits. A 403 or 404 returned as a document costs 1 credit. Threat protection adds 2 credits per scanned URL.",
"Plan credits reset monthly and do not roll over, except annual Scale (1 month) and annual Enterprise (2 months). Purchased credits stay until used and expire if the subscription is cancelled.",
"Pay-as-you-go needs a paid plan. Credits are bought in $5 increments and a user-set monthly cap applies; the temporary overage buffer is headroom, not kept credits.",
"X/Twitter URLs use the Grok API and cost 30 credits for a typical request (34 with JSON). LinkedIn URLs are served by third-party providers at their credit cost.",
"Location sets an appropriate proxy if one is available and emulates the country's language and timezone; it is not a guarantee that every country has an exit IP."
],
"url": "/products/firecrawl/api"
},
{
"estimate": {
"provider": "scrapingbee",
"provider_name": "ScrapingBee",
"product": "web-scraping-api",
"product_name": "Web Scraping API",
"category": "scraping_api",
"billing_model": "credit",
"architecture": "managed_api",
"feasible": true,
"low": {
"plan_key": "business",
"plan_name": "Business",
"monthly_cost_usd": 249,
"cost_per_1k_pages_usd": 0.498
},
"expected": {
"plan_key": "business",
"plan_name": "Business",
"monthly_cost_usd": 249,
"cost_per_1k_pages_usd": 0.498
},
"high": {
"plan_key": "business-plus",
"plan_name": "Business +",
"monthly_cost_usd": 599,
"cost_per_1k_pages_usd": 1.198
},
"rejected_plans": {
"hobby": "concurrency 25 < 40",
"freelance": "needs 2,330,000 more credit than the plan allows",
"startup": "needs 1,580,000 more credit than the plan allows"
},
"sources": [
{
"key": "docs",
"url": "https://www.scrapingbee.com/documentation/",
"title": "ScrapingBee API documentation",
"observed_at": "2026-11-14T06:10:04.383306Z",
"excerpts": [
"Classic Proxy without JavaScript rendering | 1",
"Classic Proxy with JavaScript rendering (default) | 5",
"Premium Proxy without JavaScript rendering | 10",
"Premium Proxy with JavaScript rendering | 25",
"Stealth Proxy without JavaScript rendering | (coming soon)",
"Stealth Proxy with JavaScript rendering | 75",
"If you use AI features (ai_query, ai_extract_rules), it will cost an additional 5 credits",
"same session_id will be routed through the same IP address for a duration of 5 minutes",
"Geolocation is available with both classic proxies and premium proxies, but each has its own list of supported countries",
"Screenshots are only available when using render_js=True",
"Code Billed? Meaning Solution 200 Yes Successful Call 400 No Bad request … 401 No … 403 No … 404 Yes Requested URL not found … 410 Yes Requested URL gone … 413 Yes … 429 No … 500 No"
],
"fact_type": "official_claim",
"freshness": "fresh"
},
{
"key": "pricing",
"url": "https://www.scrapingbee.com/pricing/",
"title": "ScrapingBee pricing",
"observed_at": "2026-11-14T06:10:04.383306Z",
"excerpts": [
"Hobby $19/mo API Credits: 75,000 Concurrent requests: 25",
"Freelance $49/mo API Credits: 250,000 Concurrent requests: 50",
"Startup … $99/mo API Credits: 1,000,000 Concurrent requests: 100",
"Business $249/mo API Credits: 3,000,000 Concurrent requests: 200",
"Business + $599/mo API Credits: 8,000,000 Concurrent requests: 400",
"Enterprise 14 $999/mo API Credits: 14,000,000 Concurrent requests: 500",
"Enterprise 24 $1,599/mo API Credits: 24,000,000 Concurrent requests: 600",
"Enterprise 41 … $2,399/mo API Credits: 41,000,000 Concurrent requests: 700",
"Enterprise 69 $3,599/mo API Credits: 69,000,000 Concurrent requests: 800",
"Enterprise 120 $5,799/mo API Credits: 120,000,000 Concurrent requests: 900",
"API credits are valid for one month and don't roll over.",
"All prices are exclusive of VAT."
],
"fact_type": "official_claim",
"freshness": "fresh"
}
]
},
"features": [
{
"key": "javascript-rendering",
"label": "JavaScript rendering",
"value": true,
"notes": null,
"source": "docs"
},
{
"key": "premium-proxy",
"label": "Premium proxy",
"value": true,
"notes": null,
"source": "docs"
},
{
"key": "country-targeting",
"label": "Country targeting",
"value": true,
"notes": "Separate country lists for classic and premium proxies.",
"source": "docs"
},
{
"key": "city-targeting",
"label": "City targeting",
"value": false,
"notes": null,
"source": "docs"
},
{
"key": "sticky-session",
"label": "Sticky session",
"value": true,
"notes": null,
"source": "docs"
},
{
"key": "screenshot",
"label": "Screenshot",
"value": true,
"notes": null,
"source": "docs"
},
{
"key": "ai-extraction",
"label": "AI extraction",
"value": true,
"notes": "+5 credits per request.",
"source": "docs"
}
],
"limits": [
{
"key": "session-duration",
"value": 300,
"unit": "seconds",
"plan": null,
"notes": null,
"source": "docs"
},
{
"key": "request-timeout",
"value": 140,
"unit": "seconds",
"plan": null,
"notes": "Docs also mention a 30-second maximum elsewhere; conflicting.",
"source": "docs"
}
],
"notes": [
"render_js defaults to true, so a request with default options costs 5 credits, not 1.",
"No metered overage. When credits run out, upgrade, renew early, or buy a one-off pack (pack prices are only shown in the dashboard).",
"Stealth proxy is only offered together with JS rendering."
],
"url": "/products/scrapingbee/web-scraping-api"
}
],
"assumptions": [
{
"key": "success_rate",
"label": "Success rate",
"value": "97% / 93% / 88%",
"origin": "default",
"note": "Low / expected / high scenario for medium anti-bot targets. Only changes cost where failed attempts are billed."
},
{
"key": "protected_share",
"label": "Pages needing premium proxies",
"value": "20% / 30% / 45%",
"origin": "editorial",
"note": "Share of pages behind anti-bot protection for medium targets."
},
{
"key": "difficulty_tier",
"label": "Website difficulty tier",
"value": "2 / 3 / 4",
"origin": "editorial",
"note": "Only used by providers that price by site tier (e.g. Zyte); their own estimator gives the real tier."
},
{
"key": "page_size_kb",
"label": "Average page size",
"value": "300 KB",
"origin": "default",
"note": "Drives cost for traffic-billed products and proxy traffic."
},
{
"key": "browser_traffic_multiplier",
"label": "Browser page traffic",
"value": "4x the HTML size",
"origin": "editorial",
"note": "Rendered pages also load scripts, styles and images."
},
{
"key": "browser_seconds",
"label": "Browser time per rendered page",
"value": "10 s",
"origin": "default",
"note": null
},
{
"key": "compute_units",
"label": "Compute per 1,000 pages",
"value": "0.8 CU (HTTP), 6 CU (browser)",
"origin": "public_observation",
"note": "From Apify's Website Content Crawler README (0.8 CU HTTP, 2-20 CU browser)."
},
{
"key": "geotargeting",
"label": "Country targeting",
"value": "US (required)",
"origin": "user",
"note": "Some providers only allow country targeting with premium proxies."
}
],
"engine_version": "0.1.0",
"meta": {
"data_checked_at": "2026-11-14T06:10:04.383306Z",
"freshness": "fresh",
"schema_version": "1.0"
}
}