Guides · 2026-10-03 · By VSNARY | Emmanuel Orta · 0 views
Best web scraping APIs compared: ScrapingBee, ZenRows and more
ScrapingBee, ZenRows, ScraperAPI, Bright Data, Firecrawl and Apify compared on free tiers, entry plans and what a JavaScript or protected page really costs, with where CrawlCheck fits.
Converted into pages: ZenRows Build ($16) gives 45,000 plain or 9,000 JavaScript pages; ScrapingBee Hobby ($19) 75,000 plain or 15,000 JavaScript; Firecrawl Hobby ($19) 5,000 pages at one credit each; ScraperAPI Hobby ($49) 100,000 plain; Bright Data charges $1.50 per 1,000 successful requests. Apify bills compute. CrawlCheck is not a scraper; it checks whether AI crawlers can read your own site, free.
Web scraping APIs sell the same thing in different units: a page fetched for you, through proxies, optionally rendered in a browser. The headline plan prices look similar; what differs is how many credits a hard page costs. A page that needs JavaScript and a premium proxy costs 25 times a plain page at two of the providers below. This comparison converts each plan into the pages you will actually get, and places CrawlCheck where it belongs: not as a scraper, but as the check of whether AI crawlers can read your own site.
Disclosure: CrawlCheck publishes this comparison and is one of the products in it. Every figure about another company comes from that company’s own pricing or documentation page, linked where it appears, read on 3 October 2026. Where CrawlCheck does less than a competitor, the tables say so.
Plans and what a hard page costs #
| API | Free | Entry plan | Plain page | JavaScript page | Behind bot protection |
|---|---|---|---|---|---|
| ScrapingBee | 1,000 credits, no card | Hobby $19/mo, 75,000 credits | 1 credit (render_js=false) | 5 credits (the default) | Premium proxy + JS 25; stealth 75 |
| ZenRows | 5,000 credits a month, no card | Build $16/mo, 45,000 credits | 1 credit | 5 credits | Premium proxy 10; with JS 25 |
| ScraperAPI | 1,000 credits; 7-day trial with 5,000 | Hobby $49/mo, 100,000 credits | 1 credit | Not priced separately on the pricing page | +10 credits on sites behind Cloudflare, DataDome or PerimeterX |
| Bright Data Web Unlocker | 5,000 requests a month | Pay as you go $1.50 per 1,000 successful requests; Scale $499/mo | Per successful request | Browser rendering included | CAPTCHA solving included |
| Firecrawl | 1,000 credits | Hobby $19/mo, 5,000 credits | 1 credit | 1 credit (no separate render charge listed) | Not priced separately on the pricing page |
| Apify | $5 of usage a month | Starter $19/mo of usage | Depends on the actor | Compute units at $0.20 each | Residential proxy $8/GB |
| CrawlCheck | Unlimited scans of a site | API $99/mo, 2,000 scans | Not a scraper | Reports content that only exists after JavaScript | Reports refusals and challenges as findings |
Sources: ScrapingBee and its docs, ZenRows, ScraperAPI, Bright Data, Firecrawl, Apify, CrawlCheck pricing.
Pages per entry plan, worked out #
| Plan | Plain pages | JavaScript pages | JavaScript + premium proxy |
|---|---|---|---|
| ZenRows Build ($16) | 45,000 | 9,000 | 1,800 |
| ScrapingBee Hobby ($19) | 75,000 | 15,000 | 3,000 |
| Firecrawl Hobby ($19) | 5,000 | 5,000 | not published |
| ScraperAPI Hobby ($49) | 100,000 | not published | about 9,000 at 11 credits |
Bright Data bills per successful request, so its unit is already a delivered page: 1,000 for $1.50 pay as you go. The cheapest plan on paper is not always the cheapest for your mix of pages; work out the mix first.
Choosing a scraping API #
- Mostly plain HTML: ScrapingBee or ZenRows with rendering switched off; credits go furthest.
- Hard targets behind bot protection: Bright Data’s per-success pricing removes the cost of failed attempts.
- Markdown for an LLM pipeline: Firecrawl.
- Scheduled jobs and ready-made scrapers: Apify.
Estimate your cost before you buy #
The plan that looks cheapest depends on how your pages split between plain HTML, JavaScript and bot-protected targets. Multiply each share by its credit cost and add them up. A worked example for 10,000 pages a month, 70 percent plain, 20 percent needing JavaScript and 10 percent needing JavaScript plus a premium proxy, using the credit costs in the table above:
| Page type | Pages | Credits each (ScrapingBee and ZenRows) | Credits |
|---|---|---|---|
| Plain HTML | 7,000 | 1 | 7,000 |
| JavaScript | 2,000 | 5 | 10,000 |
| JavaScript + premium proxy | 1,000 | 25 | 25,000 |
| Total | 10,000 | 42,000 |
That mix fits ScrapingBee’s Hobby plan (75,000 credits) and, just, ZenRows’ Build plan (45,000). The 10 percent of hard pages costs 60 percent of the credits, which is the usual pattern: the bill is driven by the hardest targets, not the page count. If the hard share doubles to 20 percent (with plain pages down to 60 percent), the same 10,000 pages need 66,000 credits.
Test a page before you pay to render it #
Rendering is the default on some APIs and costs five times a plain fetch. Before a large job, fetch a sample of target URLs both ways and compare the text you get back. If the plain fetch already carries the content you need, switch rendering off for that site and the same credits go five times further. The pages where the two differ are the ones built by JavaScript; only those need the browser.
Check how failures are billed #
Bright Data prices per successful request, so a blocked attempt costs nothing. The credit-based APIs price per request in credits; read each provider’s documentation on whether failed or blocked attempts consume them before comparing plans, because on hard targets the failure rate decides the real cost per delivered page.
Scrape the way you would want to be crawled #
- Honour robots.txt for the sites you collect from.
- Keep request rates per site modest; a scraping API makes it easy to send more traffic than a small site can take.
- Collect only what the job needs and refresh on a schedule rather than refetching everything.
Where CrawlCheck fits, and where it does not #
CrawlCheck does not scrape other sites and is not a substitute for any API above. It answers the reverse question for your own site: when AI crawlers such as GPTBot, ClaudeBot and PerplexityBot fetch it, are they allowed, served and able to quote it? A scraping API tells you nothing about that, because it is not the one your firewall treats as an AI crawler. Across CrawlCheck’s scans, an answer engine’s crawler is refused while a browser is served on 5.9% of sites. Run the free scan for that; use a scraping API for data.
Cost detail on budget plans: best AI web crawler on a budget.
Every figure above came out of this scanner.
Point it at your own domain and see the same measurements, free.
The main product
Found this on your own site? We fix it for $749.
Scan free to see where you stand. The fix is one site, every finding implemented and re-measured, with a sealed before and after.
Questions this post answers
What is the best web scraping API?
It depends on the pages. For plain HTML, ScrapingBee ($19 for 75,000 credits) and ZenRows ($16 for 45,000) go furthest. For hard targets, Bright Data Web Unlocker charges only for successful requests ($1.50 per 1,000 pay as you go). For Markdown into LLM pipelines, Firecrawl. For scheduled scrapers, Apify.
How many credits does a JavaScript page cost?
ScrapingBee and ZenRows charge 5 credits for a JavaScript-rendered page and 25 with a premium proxy. Firecrawl lists 1 credit a page with no separate rendering charge. ScraperAPI adds 10 credits for sites behind Cloudflare, DataDome or PerimeterX.
Which scraping APIs have a free plan?
ZenRows gives 5,000 credits a month, Bright Data Web Unlocker 5,000 requests a month, ScrapingBee and Firecrawl 1,000 credits, ScraperAPI 1,000 credits plus a 7-day 5,000-credit trial, and Apify $5 of usage a month. Figures read 3 October 2026.
Is CrawlCheck a web scraping API?
No. CrawlCheck checks whether AI crawlers can reach, read and quote your own site, comparing what each crawler identity is served. It does not extract data from other sites. Its API is for scan results, from $99 a month for 2,000 scans.
Why does a scraping API reach my site when ChatGPT cannot?
Because sites and CDNs treat clients by name and network. A scraping API identifies as itself or a browser, often through residential proxies; GPTBot identifies as GPTBot from OpenAI's addresses. A rule can refuse one and serve the other. A free CrawlCheck scan shows what each AI crawler receives.
Related findings
Comments
Comments are read before they appear. Nothing is published automatically, and no account is needed.
Writing about this? Facts, live figures and marks — every number on that page is dated and traceable to a scan.