Scrapfly alternatives in 2026
Pages at $0.80 per 1,000, no plan.
Scrapfly is a scraping API on monthly plans, from $30 for 200,000 credits. Browser rendering adds 5 credits a request, a residential proxy costs 25, and failed scrapes are billed once 30% of recent scrapes are blocked. Search and rows are left to you.
SpecStream is the live web data engine. It reads any page at $0.0008 whatever it takes to load, answers your Scrapfly call at its own address, and on the same key searches the web, crawls sites and returns whole datasets as rows.
New accounts get $10 of credit, no card. It covers 12,500 pages.
SpecStream and Scrapfly side by side
| SpecStream | Scrapfly | |
|---|---|---|
| What you change | One line. https://api.specstream.ai/scrapfly in place of https://api.scrapfly.io, and a SpecStream key as key. GET /scrape and its result JSON keep their shape | GET https://api.scrapfly.io/scrape with the url and key parameters |
| Price of a page | $0.0008, which is $0.80 per 1,000 pages, the same for every page. A page that refuses a plain read is tried again in a real browser at the same price | Credits by feature: a basic scrape is 1 credit, browser rendering adds 5, and a residential proxy costs 25 |
| Plan | No plan. Calls spend from a balance inside the limit you set on the key, and credit you buy never expires | Monthly plans: Discovery $30 for 200,000 credits, Pro $100 for 1,000,000 |
| Failed and empty pages | A page with no text is not charged. A busy call gets 429 with Retry-After and is not charged | Failed scrapes are not billed until 30% or more of recent scrapes are blocked. Then failed scrapes are billed |
| Free to start | $10 of credit, no card. That is 12,500 pages, or 2,000 searches | 1,000 API credits on signup, no credit card required |
| Search | The Search API answers a question from the live web at $5 per 1,000 searches of up to 10 results, with up to 100 results a call. 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks | A scrape API: /scrape starts from a URL you already have |
| Crawls and site maps | POST /v1/crawl runs a crawl as a job and POST /v1/map returns a site's links. Each crawled page with text is one page read at $0.0008, and a map is one page read. Firecrawl's map and crawl calls answer at /firecrawl on the same key | Crawler errors such as ERR::CRAWLER::TIMEOUT are billed |
| Data already held | Public databases read every morning at specstream.ai/data: every company that filed a Form D since 2023 with its filing history, nearly 2 million US nonprofits, every US bank failure since 1934, federal rules, open federal contracts and grants, and local businesses. Signals such as funding rounds, new executives and layoffs at specstream.ai/signals | Pages read one call at a time |
| Every match as structured rows | 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, plus 5¢ for an email and 15¢ for a phone. The most a run can cost is quoted before it starts, and nothing runs until you approve it | result.content of one page per call. Turning pages into records is code you write |
| Reruns and change labels | Hourly to yearly. Each row comes back labeled changed, unchanged or no longer matching. A changed or new row costs half its rate, an unchanged row 1¢ | Each call reads the page again at its credit cost |
| Where the data goes | Google Sheets, Excel, Airtable, Notion, monday.com, HubSpot, Salesforce, Pipedrive, Attio, Slack, Teams, Zapier, Make, n8n and signed webhooks. Agents use the MCP server, the REST API, the Python and TypeScript SDKs, a CLI and A2A | The API response, the scrapfly-sdk Python SDK, loaders for LangChain, LlamaIndex and CrewAI, and an n8n node |
Why Scrapfly users move to SpecStream
Your Scrapfly code keeps running
SpecStream answers GET /scrape at its own address, with Scrapfly's result.content, its error codes and its JSON. In Scrapfly's Python SDK, scrapfly-sdk 0.12.0, the change is the host argument: ScrapflyClient(key=SPECSTREAM_KEY, host="https://api.specstream.ai/scrapfly"). With requests:
import requests
reply = requests.get(
"https://api.specstream.ai/scrapfly/scrape", # was https://api.scrapfly.io/scrape
params={"key": SPECSTREAM_KEY, "url": "https://en.wikipedia.org/wiki/Web_scraping", "format": "markdown"},
timeout=60,
)
result = reply.json()["result"]
print(result["status_code"], result["content"][:500])One price a page, whatever the page needs
On Scrapfly the cost of a call depends on the features it turns on: 1 credit for a basic scrape, 5 more with browser rendering, 25 with a residential proxy. On SpecStream every page that gives text costs $0.0008. A page that refuses a plain read is tried again in a real browser, then from the site's own feed, then from its newest public archive capture, at the same price.
A failed page is never charged
Scrapfly stops covering failed scrapes once 30% or more of recent scrapes are blocked. On SpecStream a page with no text is not charged at any rate of failure, and a busy call gets 429 with Retry-After and charges nothing.
A balance with no plan
Scrapfly sells credits by the month, from $30 for Discovery. On SpecStream $30 reads 37,500 pages, there is no plan to renew, and credit you buy never expires. Set spend_cap_cents on a key and that key never spends past it.
Scored on the official benchmarks
Every page goes through the SpecStream Extract API, which returns the main text of up to 20 pages or documents (PDF, Word, Excel) a call. The Search API scores a 97.9 F-score on all 1,000 official SimpleQA Verified questions, with 978 correct, and 64.0 item F1 and 43.4 row F1 on all 200 official WideSearch tasks. The Extract API scores 0.908 F1 on WCXB. The scores and the method are at specstream.ai/benchmarks.
Search, crawls and site maps on the same key
A Scrapfly call starts from a URL you already have. On SpecStream the same key finds the URLs: the Search API returns up to 100 results a call at $5 per 1,000 searches of up to 10, POST /v1/map returns a site's links for one page read, and POST /v1/crawl reads a whole site at $0.0008 a page with text.
Whole datasets as rows, kept up to date
When the job is a dataset in place of pages, the same key does that too. Deep Search takes a request in plain words, such as "the pricing page of every European project management software company, with each plan's name and monthly price", and returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row, with a source URL on every value. The most a run can cost is approved before it starts. Save the request and it reruns hourly to yearly: a changed or new row costs half its rate and an unchanged row 1¢. Rows go to Sheets, a CRM, Slack, a signed webhook or your agent through the MCP server at https://api.specstream.ai/mcp.
Zero retention on any key
Set zero_retention when you create a key, or later. A call made with that key keeps no request text and no answer after the reply, and spend_cap_cents is the most the key can spend.
curl -X POST https://api.specstream.ai/v1/account/keys \
-H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'Other Scrapfly alternatives
SpecStream
The live web data engine for teams and agents. The Extract API reads pages at $0.80 per 1,000 and scores 0.908 F1 on WCXB, the Search API costs $5 per 1,000 searches and scores 97.9 F-score on all 1,000 SimpleQA Verified questions, and Deep Search returns every match as structured rows at 5¢, 15¢ or $1 a row. One key, one balance that never expires.
ScrapingBee
A scraping API on monthly plans from $19 for 75,000 API credits, where a default call with JavaScript rendering costs 5 credits and credits don't roll over. SpecStream answers ScrapingBee's call at https://api.specstream.ai/scrapingbee/api/v1 at $0.0008 a page.
ScraperAPI
A scraping API on monthly plans: Hobby is $49 a month for 100,000 API credits, and the balance resets when the subscription renews. SpecStream answers ScraperAPI's call at https://api.specstream.ai/scraperapi, from a balance that never expires.
ZenRows
A scraping API on monthly plans from $19 for 45,000 credits, where a JavaScript rendered request always costs 5 credits. SpecStream charges one price a page and answers ZenRows' call at https://api.specstream.ai/zenrows/v1.
Firecrawl
Scrape, search and crawl billed in credits: Hobby is $19 a month for 5,000. SpecStream answers Firecrawl's v2 calls at https://api.specstream.ai/firecrawl, and $19 reads 23,750 pages.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to switch from Scrapfly
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. Change the address and the key. The parameters and the reply stay as they are:
# Before
curl -G https://api.scrapfly.io/scrape \
--data-urlencode "key=$SCRAPFLY_KEY" \
--data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping"
# After
curl -G https://api.specstream.ai/scrapfly/scrape \
--data-urlencode "key=$SPECSTREAM_API_KEY" \
--data-urlencode "url=https://en.wikipedia.org/wiki/Web_scraping"3. In JavaScript, with fetch:
const url = new URL("https://api.specstream.ai/scrapfly/scrape");
url.search = new URLSearchParams({ key: process.env.SPECSTREAM_KEY, url: "https://en.wikipedia.org/wiki/Web_scraping", format: "markdown" });
const { result } = await (await fetch(url)).json();
console.log(result.status_code, result.content.slice(0, 500));4. Read 429 with Retry-After as a call to send again later; it is not charged. Every parameter the route reads and every field it returns is in the Scrapfly migration guide.
5. For pages you have not found yet, send the question to GET https://api.specstream.ai/v1/web-search, or write the dataset you want in plain words and SpecStream quotes the most it can cost before it runs.
Frequently asked questions
Something we didn't answer? Talk to a human
How much does Scrapfly cost?
What is the best Scrapfly alternative?
GET /scrape, scores 0.908 F1 on WCXB for extraction and 97.9 F-score on SimpleQA Verified for search, as shown on the benchmarks page, and the same key crawls sites and returns whole datasets as rows.Does Scrapfly charge for failed scrapes?
429 with Retry-After at no charge.How do I switch from Scrapfly to SpecStream?
https://api.scrapfly.io becomes https://api.specstream.ai/scrapfly, and a SpecStream key goes in key. In the Python SDK it is ScrapflyClient(key=SPECSTREAM_KEY, host="https://api.specstream.ai/scrapfly"), and the result JSON keeps its shape.Is there a free Scrapfly alternative?
Does SpecStream have an API?
POST /v1/extract at $0.80 per 1,000 pages, the Search API is GET /v1/web-search at $5 per 1,000 searches of up to 10 results, and Deep Search returns structured rows at 5¢, 15¢ or $1 each. The MCP server is at https://api.specstream.ai/mcp.Sources
SpecStream wrote this page. Each rival figure comes from that company's own page.
- SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream dataspecstream.ai/data, read Nov 10, 2026
- SpecStream signalsspecstream.ai/signals, read Nov 10, 2026
- Scrapfly pricingscrapfly.io/pricing, read Nov 10, 2026
- Scrapfly billingscrapfly.io/docs/scrape-api/billing, read Nov 10, 2026
- Scrapfly getting startedscrapfly.io/docs/scrape-api/getting-started, read Nov 10, 2026
- Scrapfly errorsscrapfly.io/docs/scrape-api/errors, read Nov 10, 2026
- ScrapingBee pricingscrapingbee.com/pricing/, read Nov 10, 2026
- ScrapingBee documentationscrapingbee.com/documentation/, read Nov 10, 2026
- ScraperAPI pricingscraperapi.com/pricing/, read Nov 10, 2026
- ZenRows pricingdocs.zenrows.com/first-steps/pricing.md, read Nov 10, 2026
- Firecrawl pricingfirecrawl.dev/pricing, read Nov 10, 2026




