ScraperAPI vs Firecrawl in 2026
One key answers both calls.
ScraperAPI starts at $49 a month for 100,000 credits, Firecrawl at $19 for 5,000. A ScraperAPI page costs 1 to 75 credits by site and setting, a Firecrawl page 1. Unused credits end with the month on both, except on Firecrawl Scale.
SpecStream answers both calls with one key: https://api.specstream.ai/scraperapi and https://api.specstream.ai/firecrawl. Every page costs $0.80 per 1,000 on any site, from credit that never expires. The Extract API scores 0.908 F1 on WCXB, on the benchmarks page.
New accounts get $10 of credit, no card. It covers 12,500 pages.
SpecStream, ScraperAPI and Firecrawl side by side
| SpecStream | ScraperAPI | Firecrawl | |
|---|---|---|---|
| The call your code sends | Both, on one key. GET https://api.specstream.ai/scraperapi?api_key=&url=, and POST https://api.specstream.ai/firecrawl/v2/scrape with the key as the Bearer token | GET https://api.scraperapi.com?api_key=&url=, with the key as a mandatory parameter | POST https://api.firecrawl.dev/v2/scrape with {"url"} and Authorization: Bearer |
| Entry plan | No plan. $19 reads 23,750 pages, $49 reads 61,250 and $99 reads 123,750 | Hobby is $49 a month for 100,000 credits, Startup $149 for 1,000,000 | Hobby is $19 a month for 5,000 credits, Standard $99 for 100,000 |
| Price of a page | $0.80 per 1,000 pages, the same for every site. A page that refuses a plain read is tried again in a real browser at the same price | 1 credit for a standard page, 10 with render=true, 25 for Google and Bing, 30 for LinkedIn. On Hobby that is $0.49 to $14.70 per 1,000 pages | 1 credit a page, and the enhanced proxy costs no more. JSON format adds 4 credits. That is $3.80 per 1,000 pages on Hobby and $0.99 on Standard |
| Search | POST /firecrawl/v2/search answers in Firecrawl's shape at $1 per 1,000 searches. The Search API answers at $5 per 1,000, or $1 with speed=fast | A Google results page costs 25 credits, $12.25 per 1,000 on Hobby | 2 credits per 10 results, $7.60 per 1,000 searches on Hobby |
| Credit you do not use | Credit you buy never expires. There is no monthly plan | The credit balance resets when the subscription renews | Hobby, Standard and Growth credits do not roll over. Scale carries them one month |
| Pages that fail | A page that gives no text is not charged, and the Extract API does not charge a site's 404. A busy call answers 429 with Retry-After and charges nothing | 200 and 404 are charged. A request that fails after 70 seconds of retries is not charged | A 403 or 404 page is returned and costs 1 credit. A scrape that returns no document costs 0 |
| Requests at once | Up to 20 pages a call on the Extract API, with no plan setting the volume. A call past the account's calls for the minute answers 429 with Retry-After and charges nothing | 20 concurrent threads on Hobby, 50 on Startup. Going over returns a 429 at no charge | 5 concurrent requests on Hobby, 25 on Standard |
| Crawls and site maps | Firecrawl's map and crawl calls, v2 and v1, answer at /firecrawl. Each crawled page with text is one page read at $0.0008, and a map is one page read | One url per call | Crawl costs 1 credit a page, Map 1 credit a call |
| Free to start | $10 of credit, no card, which covers 12,500 pages or 10,000 searches on the Firecrawl path | A 7-day trial with 5,000 credits, no card, then 1,000 credits a month with 5 concurrent threads | 1,000 free credits a month, no card, with 2 concurrent requests |
| Structured data | Deep Search: a request in plain words returns every match on the live web as rows that meet each condition you wrote, at 5¢, 15¢ or $1 a row. The most a run can cost is quoted before it starts | Autoparse returns JSON or CSV for Amazon, eBay, Google, Redfin and Walmart | JSON format with a schema adds 4 credits a page |
Why teams choosing between ScraperAPI and Firecrawl use SpecStream
Keep both calls and change two lines
Your ScraperAPI call and your Firecrawl call keep their parameters and their parsers. Each one changes its address, and both carry the same key.
# ScraperAPI: was https://api.scraperapi.com
curl -G https://api.specstream.ai/scraperapi \
--data-urlencode "api_key=$SPECSTREAM_KEY" \
--data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping" \
--data-urlencode "output_format=markdown"
# Firecrawl: was https://api.firecrawl.dev
curl -X POST https://api.specstream.ai/firecrawl/v2/scrape \
-H "Authorization: Bearer $SPECSTREAM_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://en.wikipedia.org/wiki/Web_scraping"}'A team that has not chosen yet writes to either format and moves nothing later. The parameter tables are in the ScraperAPI migration guide and the Firecrawl migration guide.
What each path reads and returns
On /scraperapi, api_key, url and output_format for markdown or text work as on ScraperAPI, and ScraperAPI's Python SDK reaches it through its api_endpoint argument. The site's 404 passes through. Errors come in ScraperAPI's own form: 400 with no url, 401 for a wrong key, 403 with no credit left.
On /firecrawl, POST /v2/scrape with {"url"} answers as data.markdown and data.metadata, and POST /v2/search answers as data.web[] with url, title and description. Map and crawl answer on the same base address. Firecrawl's SDKs, firecrawl-py among them, reach /v2/scrape and /v2/search at https://api.specstream.ai too.
What 100,000 rendered pages cost in a month
ScraperAPI charges 10 credits for render=true, so 100,000 rendered pages take 1,000,000 credits: the Startup plan at $149. Firecrawl charges 1 credit a page, so they fit its Standard plan at $99, and JSON output makes each page 5 credits. On SpecStream the same 100,000 pages cost $80, and a page that gives no text costs nothing.
For plain pages that load without a browser, ScraperAPI's Hobby plan comes to $0.49 per 1,000 when every credit is used in the month. SpecStream's $0.80 does not move with the site, where ScraperAPI charges 25 credits for a Google page and 30 for LinkedIn, and it stays in the account until you spend it.
Check the price on your own pages
ScraperAPI returns the credits each call took in its sa-credit-cost response header. On SpecStream every charged reply carries X-Balance-Cents, a Firecrawl reply carries the price of the call under specstream, and GET https://api.specstream.ai/v1/account/requests lists each call with its price_usd. Send the same 100 URLs through each and compare the totals.
curl https://api.specstream.ai/v1/account/requests \
-H "Authorization: Bearer $SPECSTREAM_KEY"Scores published on official benchmarks
The SpecStream Extract API scores 0.908 F1 on WCXB. The Search API scores a 97.9 F-score on all 1,000 official SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks. The scores and the method are at specstream.ai/benchmarks.
Search, crawls and rows on the same key
A scraper reads the pages you already know. The same key finds them: the Search API at $5 per 1,000 searches, POST /v1/map for a site's links and POST /v1/crawl for a whole site, each page with text at the page price. Deep Search returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row, and a saved request reruns hourly to yearly with each row labeled changed, unchanged or no longer matching.
Other scraping APIs
Scrape.do
A scraping API by monthly credits: Hobby is $29 for 250,000, and a page takes 5 credits with render=true and 10 with super=true. SpecStream answers Scrape.do's call at https://api.specstream.ai/scrapedo, at $0.80 per 1,000 pages.
ScrapeOps
Routes each request to one of 20+ scraping APIs, from $9 a month for 25,000 credits, and render_js=true costs 10 credits. SpecStream reads the same pages with its own Extract API at POST /v1/extract, up to 20 a call.
ScrapingBee
Hobby is $19 a month for 75,000 credits, and each request with JavaScript rendering costs 5. SpecStream answers ScrapingBee's call at https://api.specstream.ai/scrapingbee/api/v1/, at one price for every page.
Scrapfly
Discovery is $30 a month for 200,000 credits, and render_js adds 5 credits a call. SpecStream answers Scrapfly's call at https://api.specstream.ai/scrapfly/scrape, at $0.0008 a page.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to run your ScraperAPI and Firecrawl calls on SpecStream
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 12,500 pages.
2. Point each call at its SpecStream path. The key goes as api_key on the ScraperAPI path and as the Bearer token on the Firecrawl path. In Python:
import requests
PAGE = "https://en.wikipedia.org/wiki/Web_scraping"
# ScraperAPI's call, was https://api.scraperapi.com
scraper = requests.get(
"https://api.specstream.ai/scraperapi",
params={"api_key": SPECSTREAM_KEY, "url": PAGE, "output_format": "markdown"},
timeout=70,
)
scraper.raise_for_status()
print(scraper.text[:300])
# Firecrawl's call, was https://api.firecrawl.dev
fire = requests.post(
"https://api.specstream.ai/firecrawl/v2/scrape",
headers={"Authorization": f"Bearer {SPECSTREAM_KEY}"},
json={"url": PAGE},
timeout=70,
)
fire.raise_for_status()
data = fire.json()["data"]
print(data["metadata"].get("title"), data["markdown"][:300])3. In JavaScript:
const key = process.env.SPECSTREAM_KEY;
const page = "https://en.wikipedia.org/wiki/Web_scraping";
// ScraperAPI's call, was https://api.scraperapi.com
const scraper = new URL("https://api.specstream.ai/scraperapi");
scraper.search = new URLSearchParams({ api_key: key, url: page });
const html = await fetch(scraper).then((r) => r.text());
console.log(html.length);
// Firecrawl's call, was https://api.firecrawl.dev
const fire = await fetch("https://api.specstream.ai/firecrawl/v2/scrape", {
method: "POST",
headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json" },
body: JSON.stringify({ url: page }),
}).then((r) => r.json());
console.log(fire.data.metadata.title, fire.data.markdown.slice(0, 300));4. Leave the rest. Each page is billed at $0.0008, and a page that gives no text is not charged. On a 429, wait the seconds in Retry-After and send the call again; nothing was charged.
When you scrape pages to build a list, write the list you want in plain words. SpecStream reads it back as the conditions every row must meet and the facts to bring back, quotes the most it can cost, and delivers the rows after you approve.
Frequently asked questions
Something we didn't answer? Talk to a human
Is ScraperAPI better than Firecrawl?
ScraperAPI vs Firecrawl pricing: what does each cost?
What do 100,000 JavaScript pages cost on each?
render=true takes 10 credits and needs the Startup plan, and $99 on Firecrawl's Standard plan at 1 credit a page. On SpecStream they cost $80, from credit that never expires.Do unused credits roll over?
Which one charges for failed pages?
404: ScraperAPI charges 200 and 404, and Firecrawl charges 1 credit for a 403 or 404 page. On SpecStream a page that gives no text is not charged, and the Extract API does not charge a site's 404.Do their SDKs work with SpecStream?
https://api.specstream.ai/scraperapi as its api_endpoint, and firecrawl-py reaches /v2/scrape and /v2/search at https://api.specstream.ai. The key goes where theirs went.Sources
SpecStream wrote this page. Each figure for ScraperAPI, Firecrawl and the other APIs comes from that company's own page.
- ScraperAPI pricingscraperapi.com/pricing.md, read Nov 12, 2026
- ScraperAPI credits and request costsdocs.scraperapi.com/getting-started/quick-start/credits-and-requests-costs.md, read Nov 12, 2026
- ScraperAPI first requestdocs.scraperapi.com/getting-started/quick-start/send-your-first-request.md, read Nov 12, 2026
- ScraperAPI status codesdocs.scraperapi.com/responses-and-formats/api-status-codes.md, read Nov 12, 2026
- ScraperAPI Autoparsedocs.scraperapi.com/data-pipeline/creating-a-datapipeline-project/results-and-output-formats.md, read Nov 12, 2026
- Firecrawl pricingfirecrawl.dev/pricing.md, read Nov 12, 2026
- Firecrawl billingdocs.firecrawl.dev/billing.md, read Nov 12, 2026
- Firecrawl scrapedocs.firecrawl.dev/features/scrape.md, read Nov 12, 2026
- Scrape.do pricingscrape.do/pricing/, read Nov 12, 2026
- Scrape.do request costsscrape.do/documentation/request-costs/, read Nov 12, 2026
- ScrapeOps Proxy API Aggregatorscrapeops.io/proxy-api-aggregator/, read Nov 12, 2026
- ScrapeOps request costsscrapeops.io/docs/web-scraping-proxy-api-aggregator/account/request-costs/, read Nov 12, 2026
- ScrapingBee pricingscrapingbee.com/pricing/, read Nov 12, 2026
- Scrapfly pricingscrapfly.io/pricing, read Nov 12, 2026
- Scrapfly billingscrapfly.io/docs/scrape-api/billing, read Nov 12, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 12, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 12, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 12, 2026




