Best Firecrawl alternative for pay-per-page scraping (2026)

- If you're crawling whole sites into markdown for a RAG pipeline or an agent, Firecrawl is the best tool for it, and its free tier of 1,000 pages a month is generous. Prices below were checked on October 1, 2026.
- If you fetch pages one at a time, or want LinkedIn, Instagram, or Google data as fields, paying per request costs less and there's no plan to size: $0.70 per 1,000 pages against $3.80 on Firecrawl's Hobby plan and $0.99 on Standard.
- Firecrawl's credits expire. On Hobby, Standard, and Growth, unused credits are gone at renewal; only the $749 Scale plan carries them for a month.
- On the same eight pages, 48 calls each (September 13, 2026), Firecrawl delivered 26 pages and AnyAPI 42. The gap was Firecrawl's per-minute rate limit, which refused 19 of its 48 calls. Both got Amazon's bot wall, and both charged for it.
- On 23 commonly scraped sites on October 1, 2026, one fetch each, 20 came back with the real page for $0.0237 in all. One miss, a paywall preview, came back as a 200 and was charged like a page.
Built on AnyAPI
470 scraping and data APIs behind one key.
Every endpoint in this post is one call away. Pay per request in USD from a prepaid wallet, with automatic failover when a provider breaks. No subscription, no card to start.
Get ~160 free requests$0.10 of credit on signup.Your agent needs the text of one page right now, and then nothing for an hour. Or it needs a company's LinkedIn page as fields, and what comes back is markdown of a login wall. Either way, you're on a monthly bundle built for a different job.
The same eight pages went through Firecrawl and AnyAPI on September 13, 2026, 48 calls each, and Firecrawl's prices were rechecked on October 1. Here's where Firecrawl is the right choice, where paying per request wins, and what each costs you.
Where is Firecrawl strong?
If the page text itself is your product, Firecrawl earns its place. You give it a URL and get back the page's text as markdown with the navigation and ads stripped out, or you point it at a site and it crawls the whole thing.
Markdown is plain text with light marks for structure, like a # before a heading, so a model gets the words without the HTML around them. Firecrawl also has a search endpoint, a schema-based extractor, an agent that browses for you, and an MCP server so Claude or Cursor can call it directly.
It's open source, so you can read the code, and it has more than 187,000 GitHub stars.
- Crawling a whole site is one call. Give it a root URL and it maps the site, follows the links, and returns every page as markdown. Doing that with a per-page API means writing the crawler yourself.
- The markdown is genuinely good. Firecrawl's pitch is 93% fewer input tokens than raw HTML, and its output really is what you'd want to feed a model: headings, links, and body text, nothing else.
- It does more than scrape. Search at 2 credits per ten results, JSON extraction against a schema you supply, an agent that browses on your behalf, and a site monitor. Every one of those bills against the same credit balance.
- The free tier is real. 1,000 credits every month, no card, refreshed monthly. That's a thousand pages a month for nothing, which covers a lot of side projects for good.
- You can run it yourself. The core scrape, crawl, map, and search routes are AGPL-licensed and self-hostable. The anti-bot engine, screenshots, browser interaction, and the agent stay cloud-only.
Firecrawl cons:
- Credits expire at renewal on Hobby, Standard, and Growth
- A page that answers with a 403 or 404 still costs a credit
- Rate-limited: 19 of 48 back-to-back test calls got a 429
Firecrawl isn't built to be a data API. If your job is "get me this company's LinkedIn page as JSON" or "give me the top ten Google results for this query", it gives you the page as markdown and leaves the parsing to you, and for anything behind a login it gives you the login wall.
If you're crawling sites into markdown for a model, use Firecrawl. If you fetch single pages or want platform data as fields, keep reading.
Firecrawl pricing: 1,000 free credits a month; Hobby $19 for 5,000 pages (credits expire at renewal); Standard $99 for 100,000
Where does paying per request win?
If you're fetching individual pages, or you want data from a platform rather than text from a page, most of Firecrawl's platform is something you're paying for and not using.
What does a page cost on each Firecrawl plan?
Firecrawl's pricing is credit bundles. Hobby is $19 a month for 5,000 credits, Standard is $99 for 100,000, Growth is $399 for 500,000, and Scale is $749 for a million.
The page shows you the annual rate by default, which is 16.7% to 20% lower, so the $83 you see for Standard is the billed-yearly price.

One credit is one page, so what you pay per page depends entirely on which bundle you buy: $3.80 per 1,000 on Hobby, $0.99 on Standard, $0.80 on Growth, and $0.75 on Scale, if you use every credit.
Paying per request is $0.0007 per page on any day, whether you fetch ten pages or a hundred thousand.
What happens to the credits you don't use?
The catch with bundles is the month you don't fill one. Firecrawl's own pricing page says Hobby, Standard, and Growth credits don't roll over, and Scale carries them for one month.
So if you're on Standard and scrape 20,000 pages in a month, you've paid $99 for them, which is $4.95 per 1,000, not the $0.99 on the box. Hobby plus fifteen $5 packs of extra credits covers the same month for $94.
What happens when a page blocks you?
Firecrawl doesn't charge for a scrape that returns nothing, but a page that answers with a 403 or a 404 is delivered to you and costs a credit. That's fair on its terms, and it adds up on sites that block bots, because you're paying to receive the block page.
AnyAPI uses fallback, which just means a second try somewhere else: when the first source for an endpoint fails, it tries another one for the same page before giving up. The page scraper has four sources, and the cheapest one takes your call first.
A call that fails costs you nothing. A page that comes back is billed at the listed price of the source that returned it, and never more than the top price on the endpoint's page.

How does a request pick a source?
"It tries another source" is easy to say and easy to do badly, so here's the actual order of operations for one web.scrape call.
First, the sources that can't serve your exact request drop out. The page scraper has four, but one of them only returns main-article markdown, so a plain {"url": "...", "formats": ["markdown"]} request has three to work with, not four.
Second, the survivors sort by what they charge you, cheapest first. That sort is the price you're quoted: $0.0007 at the cheap end, $0.0015 at the dear end.
Third, two kinds of recent memory reorder that list without removing anything from it: whether a source is failing right now, and whether it's been refused by this particular site before. A source that got walled by one domain last week goes last on that domain and stays first everywhere else.
Then your call runs down the list. A timeout, a 429, a 500, or a bot wall detected in the body moves to the next one, and the whole thing is still one request to you with one bill.
Here's the G2 page from the eight-page test, which is the case where this pays for itself.
Sources that can serve this request, cheapest first
- 1BisonTried first. Cloudflare refused it, all six times.$0.0007
- 2SalamanderReturned the review page, all six times.$0.0010
- 3KoalaNever needed, so never charged.$0.0015
You pay $0.0010, once, for the source that returned the page.
The failed first attempt cost nothing, and the successful second one is $0.0003 dearer than the price on the catalog page.
That's the whole trade: the cheapest source serves your ordinary pages, and the dearer ones exist to rescue the hard ones.
What if you want data, not page text?
Firecrawl gives you the text of a public page. It doesn't give you a LinkedIn profile as fields, an Instagram account's follower count, or a page of Google results as a ranked list.
For those, you're either parsing markdown yourself, or the page never rendered because it wanted a login.
AnyAPI's catalog has 409 endpoints, and most of them are exactly that kind of thing: Google search at $0.50 per 1,000, an Instagram profile at $1.00, a LinkedIn company at $1.10, a Reddit search at $0.35, a YouTube transcript at $0.90.
You use the same key, the same request shape, and the same JSON envelope, and the response tells you what the call cost.
What does one call look like?
Here's a page scrape and what you get back: Firecrawl's own docs introduction, 18,072 characters of markdown, for $0.0007 in 2.9 seconds on September 11, 2026.
curl https://api.getanyapi.com/v1/run/web.scrape \
-H "Authorization: Bearer $ANYAPI_KEY" \
-d '{"url": "https://docs.firecrawl.dev/introduction", "formats": ["markdown"]}'import os, requests
r = requests.post(
"https://api.getanyapi.com/v1/run/web.scrape",
headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"},
json={"url": "https://docs.firecrawl.dev/introduction", "formats": ["markdown"]},
)
body = r.json()
print(body["costUsd"], len(body["output"]["data"]["markdown"]))
# 0.0007 18072const r = await fetch("https://api.getanyapi.com/v1/run/web.scrape", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.ANYAPI_KEY}` },
body: JSON.stringify({ url: "https://docs.firecrawl.dev/introduction", formats: ["markdown"] }),
});
const { costUsd, output } = await r.json();
console.log(costUsd, output.data.markdown.length); // 0.0007 18072If you're choosing on speed, it's a wash. Firecrawl publishes a P95 of 3.4 seconds on its homepage, and on the eight-page test the two landed in the same place.
What separates them is which pages come back and what you're charged for.
How did the same eight pages do through both?
Eight pages, three rounds each, ran twice on September 13, 2026: a static page, two scraping sandboxes, the Hacker News front page, an e-commerce sandbox, an Amazon product page, a G2 review page behind Cloudflare, and a Best Buy search.
A call counted only when the page's own text came back, so an HTTP 200 carrying a bot wall was a miss, the way it would be for your code.
| Page | Firecrawl | AnyAPI web.scrape |
|---|---|---|
| Static page, two sandboxes, Hacker News, e-commerce sandbox | Every call that wasn't rate-limited came back, 0.4 s from cache | 6 of 6 each, 1.3 to 2.5 s |
| G2 review page behind Cloudflare | 3 of 6 answered, the other 3 rate-limited | 6 of 6, 1.2 s, $0.001 each |
| Best Buy search | 5 of 6, 0.6 s from cache, 2.3 to 9.3 s fresh | 6 of 6, 8.7 s |
| Amazon product page | 0 of 6: a "Continue shopping" wall, 1 credit each | 0 of 6: the same wall, $0.0007 each |
| All 48 calls | 26 delivered the page, 19 rate-limited, 3 hit a wall | 42 delivered, 6 hit a wall |
| What the 48 calls cost | 29 credits, about $0.03 on Standard | $0.035 |
| Median on delivered pages | 0.4 s from cache, 1.6 s fetched fresh | 1.5 s |
Three results are worth knowing before you pick.
Both got Amazon's wall, and both charged for it. Amazon answered every call from both services with a 200 and a page that said "Continue shopping".
Firecrawl delivered it for one credit; AnyAPI delivered it for $0.0007.
That's the failure to plan for with any scraper you pick: a bot wall that comes back as a success looks like a page, and fallback only fires on an error.
The Cloudflare page is where fallback earns its price. AnyAPI's first source missed the G2 page every time and the second answered every time.
That's why those six calls cost $0.001 instead of $0.0007, and why the page came back at all.
Firecrawl answered it on the three calls its rate limit let through.
Back-to-back calls hit Firecrawl's rate limit. Nineteen of 48 requests got a 429 in a tenth of a second. AnyAPI didn't rate-limit any of the 48 calls.
Firecrawl's published ceilings are 10 scrapes a minute on the free plan, 100 on Hobby, and 500 on Standard. If you run a batch job, you'll need pacing or the plan that fits your burst.
On speed the two are level, with one thing you should know: Firecrawl's 0.4 second answers are its cache, which by default returns a stored copy up to two days old and still charges a credit.
If you set maxAge to zero, its fresh fetches sat at 1.6 seconds, beside AnyAPI's 1.5.
Which commonly scraped sites come back, and what do the misses cost?
Eight pages is a small test. So on October 1, 2026, 23 of the URLs people most often try to scrape went through AnyAPI's page scraper, one fetch per site, one call at a time: stores, property and job sites, review sites, social profiles, a paywalled news article, a Cloudflare test page, and Wikipedia as a control.
A call counted only when the page's own content was in the text, so a captcha or a paywall preview that came back as a 200 was a miss.
| Site, October 1, 2026 | Real page | Time | Charged | What came back instead |
|---|---|---|---|---|
| Zillow city search | Yes | 1.5 s | $0.00125 | |
| Cloudflare challenge test page | Yes | 2.5 s | $0.00125 | |
| Etsy search | Yes | 3.0 s | $0.00125 | |
| Craigslist listings | Yes | 3.2 s | $0.0007 | |
| X profile | Yes | 3.6 s | $0.0007 | |
| G2 product reviews | Yes | 3.6 s | $0.00125 | |
| Booking.com hotel | Yes | 3.6 s | $0.00125 | |
| Walmart product | Yes | 3.7 s | $0.00125 | |
| Wikipedia article (the control) | Yes | 4.2 s | $0.0007 | |
| Medium article | Yes | 4.2 s | $0.0007 | |
| Trustpilot company reviews | Yes | 4.6 s | $0.00125 | |
| Redfin city search | Yes | 4.7 s | $0.00125 | |
| LinkedIn company page | Yes | 4.7 s | $0.0007 | |
| Indeed job search | Yes | 4.8 s | $0.00125 | |
| Tripadvisor attraction | Yes | 5.2 s | $0.00125 | |
| Shopify store product | Yes | 5.5 s | $0.0007 | |
| Amazon product | Yes | 6.1 s | $0.00125 | |
| Reddit thread | Yes | 6.4 s | $0.0015 | |
| Instagram profile | Yes | 6.4 s | $0.0015 | |
| eBay search | Yes | 9.9 s | $0.00125 | |
| New York Times article | No | 4.0 s | $0.0015 | A paywall preview ("we are checking your access"), charged |
| Yelp business page | No | 16.5 s | Free | An error |
| Glassdoor company page | No | 23.4 s | Free | An error |
20 of the 23 sites came back with the real page. The median call took 4.6 seconds, and every page came back inside 10. Bison served six of the sites at $0.0007, LinkedIn and X among them; Salamander took most of the stores and review sites at $0.00125; Koala took Instagram, Reddit, and the Times at $0.0015.
The misses work much like Firecrawl's. The Times sent a paywall preview as a 200, and it was charged $0.0015 like a page; the two errors were free.
Other Firecrawl alternatives worth a look
Firecrawl and pay-per-request aren't the only two shapes. If your job is page text for a model, these are the other services you'll end up comparing.
They're page reads, not runs, from their pricing pages on September 13, 2026.
| Service | How you pay | Entry price | Per 1,000 pages | Free tier |
|---|---|---|---|---|
| Jina Reader | Per output token, top up | Not shown in dollars on the page | Not published per page | 10 million tokens per key; no key needed at 20 requests a minute |
| Crawl4AI | Open source, Apache-2.0 | $0 plus your own servers | Your compute | n/a |
| Spider | Bandwidth and CPU, top up | $5 top-up | $0.08 to $0.15 by its own calculator | None shown |
| ScrapeGraphAI | Monthly credits | $20 for 10,000 | $2.00; $0.67 on the $500 plan | 500 credits, once |
| Apify Website Content Crawler | Platform compute | $19 plan, or the $5 free plan | $0.20 raw HTTP, $0.50 to $5 headless, by Apify's estimate | $5 of usage a month |
| Exa contents | Prepaid balance | Any amount | $1.00 | $20 once, then $10 a month |
| Tavily extract | Monthly credits or pay as you go | $30 for 4,000 credits | $1.50; $1.60 pay as you go | 1,000 credits a month |
AnyAPI web.scrape | Per call | None | $0.70 | A small starter balance |
If you want zero setup, try Jina Reader first: put r.jina.ai/ in front of any URL and the page comes back as markdown, no key, up to 20 requests a minute.
Skip it if you need a per-page budget or a crawl. It bills by output token rather than by page, the dollar rate only appears inside its top-up widget, and there's no crawl.
Jina Reader pricing: 10 million free tokens per key, or no key at 20 requests a minute (after that, per output token, at a rate the pricing page doesn't show in dollars)
If you'd rather host it yourself, Crawl4AI is the answer. It's an Apache-licensed Python library with more than 84,000 GitHub stars that does what Firecrawl's open-source core does, and your bill is whatever your servers and proxies cost.
Its hosted cloud is in a closed beta with no published price, so today you get a library and no hosted service.
Crawl4AI pricing: $0 (you pay for your own servers and proxies)
If you want the cheapest metered page and your pages are light, look at Spider. It meters bandwidth and CPU instead of pages, at $1 per gigabyte and a tenth of a cent per CPU minute, with a balance that never resets.
Its own calculator puts that at $0.08 to $0.15 per 1,000 pages, the lowest number in this table. The same page also prints $0.03, so treat the figure as a range and test on your pages.
Spider pricing: $5 top-up, no free tier shown ($0.08 to $0.15 per 1,000 pages by its own calculator); an unlimited-pages plan priced on concurrency from $40 a month
If you like Firecrawl's idea but want a prompt-based extractor, ScrapeGraphAI sells that, at $20 a month for 10,000 credits where a markdown page is one credit. Its top-up packs never expire, which Firecrawl's don't offer.
Skip it if you're watching price at entry: that's $2.00 per 1,000.
ScrapeGraphAI pricing: 500 free credits, once; $20 for 10,000 credits a month ($2.00 per 1,000 pages, $0.67 on the $500 plan)
If you already run other Apify actors and want the scheduling and storage around them, Apify's Website Content Crawler is the pick. It has no actor fee; you pay Apify's compute.
By Apify's own estimate, you'd pay $0.20 per 1,000 pages with the raw HTTP crawler and $0.50 to $5 with a headless browser. The best Apify alternative covers the platform bill in detail.
Apify Website Content Crawler pricing: $5 of usage a month free; $19 plan (unused usage expires at the end of the cycle)
Exa and Tavily are search APIs for agents that happen to return page contents. If your agent already searches through one of them, use its contents endpoint; neither is a crawler.
Exa charges you $1 per 1,000 pages on a prepaid balance with no minimum, and its search is $7 per 1,000. Tavily's extract endpoint is five URLs per credit, which works out to $1.50 per 1,000 on its $30 plan.
Exa pricing: $20 free once, then $10 a month; $1.00 per 1,000 pages from a prepaid balance of any amount
Tavily pricing: 1,000 free credits a month; $30 for 4,000 credits ($1.50 per 1,000 pages; $1.60 pay as you go)
The short version:
- Whole sites into markdown: Firecrawl, or Crawl4AI if you'll host it
- Cheapest metered pages: Spider, if its byte-based bill suits your pages
- One page or one platform record at a time, at a price you can read before you call: pay per request
Firecrawl vs paying per request, at a glance
| What you deal with | Firecrawl | Paying per request |
|---|---|---|
| What you're billed for | Monthly credit bundle, 1 credit a page | The listed price per call, in USD; a failed call is free on all but a few endpoints |
| Subscription | $19 to $749 a month, prepaid | None |
| Unused credits | Expire, except one month's carry on Scale | Nothing to carry |
| Price per 1,000 pages | $3.80 on Hobby down to $0.75 on Scale | $0.70, on any volume |
| A page that returns a 403 | Delivered, 1 credit | Not charged |
| Crawl a whole site | One call | Fetch pages yourself, or web.crawl at $1.25 per 1,000 pages, up to 10 a call |
| LinkedIn, Instagram, Google results as JSON | Page text or a login wall | Dedicated endpoints, one shape |
| If a source fails | Retries with its own engine | Falls back to another source |
| Free tier | 1,000 credits every month | A small starter balance |
| Open source | Yes, AGPL | No |
Limitations and what you give up
Crawling sites into markdown? Use Firecrawl. Its crawler, extractor, and agent are the best in the category, and the free tier covers real work.
AnyAPI's own crawl endpoint stops at 10 pages a call and costs $1.25 per 1,000 pages. That's under Hobby's $3.80 but more than three times Standard's $0.99, and past 10 pages you're fetching the rest yourself.
Fetching pages or platform data one call at a time? Pay per request. You don't want to size a bundle or watch credits expire in a quiet month.
And you'd rather have LinkedIn or Google results as fields than as text to parse.
AnyAPI cons:
- Markdown and page metadata only, not Firecrawl's JSON extraction against your own schema
- 96.7% uptime for the 30 days to October 1, 2026, after fallback, lower than Google search's 99.8% on the same site, so pages that block every source still fail
- A crawl stops at 10 pages a call
AnyAPI pricing: $0.70 per 1,000 pages with no plan (a page a dearer source rescues costs up to $1.50 per 1,000; a call that fails costs nothing)
Before you pay anyone, check whether a free tier already covers you. Under 1,000 pages a month, Firecrawl's own free tier does, every month, and Jina Reader needs no key at all at 20 requests a minute.
If Apify's Actor marketplace is the other thing you're weighing, see the best Apify alternative. If you're fetching raw HTML at volume, there's the best ScrapingBee alternative, and if you want the whole field priced on one job, 7 Apify alternatives on real per-request cost.
Frequently asked questions
- How much does Firecrawl cost in 2026?
- Firecrawl's free plan includes 1,000 credits a month. Paid plans month to month are Hobby at $19 for 5,000 credits, Standard at $99 for 100,000, Growth at $399 for 500,000, and Scale at $749 for 1,000,000. Annual billing is 16.7% to 20% cheaper and is what the pricing page shows by default. One credit is one page scraped, crawled, or mapped. Checked October 1, 2026.
- Do Firecrawl credits roll over?
- Not on Hobby, Standard, or Growth. Scale carries unused credits for one month, and Enterprise is custom. The free tier resets to 1,000 credits each month. Paid plans can also buy extra credits in $5 packs, from 1,000 credits per pack on Hobby to 5,000 on Scale.
- Does Firecrawl charge for failed requests?
- A scrape that returns no result isn't charged. A page that responds with an error status such as 403 or 404 is still delivered and costs one credit. JSON, question, and highlight formats add 4 credits per page, and PDFs cost one credit per page.
- Is Firecrawl open source?
- Yes. The core scrape, crawl, map, and search routes are on GitHub under the AGPL-3.0 license and can be self-hosted. The anti-bot Fire-engine, screenshots, browser interaction, and the agent are only available on Firecrawl's cloud.
- Is paying per request cheaper than Firecrawl?
- For single pages, yes. AnyAPI's web.scrape is $0.70 per 1,000 pages at any volume, against $3.80 per 1,000 on Firecrawl's Hobby plan and $0.99 on Standard month to month. Firecrawl's Scale plan gets to $0.75 per 1,000 if you use all million credits. For crawling whole sites, Firecrawl is simpler, and cheaper too once you're on Standard and using the credits.
Use data responsibly and follow AnyAPI's Acceptable Use Policy.