← All posts

How Much Does Web Scraping Cost at Scale? A Worked Example

how much does web scraping cost at scale

Quick answer: As a rough order of magnitude, scraping 100k mixed pages a month costs somewhere in the low hundreds of dollars either way: an API plan in the $99-$400 range, or a DIY stack whose infrastructure is cheap ($100-$500/mo) but whose real cost is engineering time, easily $1,000-$5,000/mo in loaded salary once you account for maintenance. The crossover where DIY clearly wins is millions of pages a month on easy sites. Everything below is an estimate with stated assumptions, not a quote.

Nobody publishes honest numbers on this because the honest answer is "it depends on your URL mix." So let's do the math out loud, with assumptions you can swap for your own.

The three cost buckets

Every scraping operation, DIY or API, pays for the same three things:

  1. Compute: plain HTTP is nearly free; headless browsers are not.
  2. Network identity: residential proxy bandwidth, priced per GB, is usually the biggest infra line for anyone scraping protected sites.
  3. Humans: building, and much more expensively, maintaining.

APIs bundle all three into a per-request credit price. DIY unbundles them, which looks cheaper until you price the third bucket honestly.

Assumptions for the worked example

Everything below assumes a workload of 100,000 pages per month with a mix I see often in LLM and market-intelligence pipelines:

  • 60% easy pages (server-rendered, no anti-bot): plain HTTP works
  • 30% JS-rendered pages: need a headless browser
  • 10% protected pages (Cloudflare, DataDome class): need stealth plus residential IPs
  • Average page weight ~2 MB with assets when browser-rendered, ~150 KB for plain HTTP
  • Retries add ~20% overhead on the hard tiers

These are rough but defensible. Your mix is the single biggest variable, so measure it before trusting anyone's math, including mine.

DIY: the line items

Compute. 60k plain HTTP fetches are a rounding error; a small VPS does it. The 40k browser-rendered pages are the real load. A headless Chrome instance handles roughly one page every few seconds; at that rate you need a handful of mid-size instances running through the month. Ballpark $50-$200/mo in cloud compute depending on how bursty you are.

Residential proxy bandwidth. This is the line that surprises people. Residential proxies are priced per GB, and market rates have generally sat in the single-digit dollars per GB range. If your 10k protected pages go through a browser at ~2 MB each plus 20% retries, that's roughly 24 GB, so on the order of $50-$200/mo depending on provider and how well you block images and media. Let JS-rendered pages leak onto residential IPs too and this number triples.

Engineering time. Here's the bucket that dwarfs the others. A realistic maintenance load for a stack like this (parser fixes, proxy pool health, anti-bot regressions, monitoring) is somewhere between a few hours a week and half an engineer, depending on how hostile your targets are. At a loaded cost of $75-$100/hour, even 3 hours a week is **$1,000-$1,300/mo**. During an anti-bot arms-race flare-up, more. This is a rough estimate, but if anything it's optimistic; I unpacked the failure modes in build vs buy.

DIY total, order of magnitude: $150-$400/mo in infrastructure, plus $1,000-$5,000/mo in engineering time. The infra is the small number.

The same workload on an API

APIs bill in credits, where a plain fetch is 1 credit and harder tiers cost multiples (I break down how that works in what is a credit).

Using link.sc pricing as the concrete example, since those are the only numbers I can state exactly: $99/mo buys 100,000 credits, $399/mo buys 500,000. If your mix averages out such that 100k pages consume between 100k and a few hundred thousand credits (easy pages at 1 credit, rendered and stealth pages at multiples), this workload lands between the $99 and $399 plans.

Cost line DIY API
Compute $50-$200/mo included
Residential bandwidth $50-$200/mo included
Engineering build (one-time) 2-6 weeks ~1 day of integration
Engineering maintenance $1,000-$5,000/mo equivalent ~0
Monthly total ~$1,200-$5,400 ~$99-$399

All estimates, all swappable. But notice the shape: the API's price is mostly the infra bucket, marked up. The DIY price is mostly the human bucket, which people forget to count.

What makes cost explode

Whatever route you take, three things blow up the bill:

JS rendering. A headless browser costs 50-100x the compute of a plain GET and downloads 10x the bytes. Every page you can serve without a browser is a page that costs pennies instead of dimes. This is why knowing which method each site needs matters so much: rendering everything "to be safe" is the most common way teams 10x their own costs.

Retries and soft failures. A 60% success rate doesn't cut costs by 40%, it raises them, because you pay for the failures and then pay again for retries. Worse are soft failures: 200 responses containing challenge pages that you store and only discover later.

Hard-blocked sites. The last 5% of domains (aggressive DataDome, Cloudflare-protected sites) can consume more engineering time than the other 95% combined. Decide explicitly whether they're worth it.

The crossover point

Where does DIY genuinely win? When the engineering cost amortizes: millions of easy pages per month across a few stable domains. At that scale, plain-HTTP DIY costs fractions of a cent per page and no API's credit price competes. That's a real regime; some businesses live there.

Below that, or with a long tail of hostile domains, the API is cheaper the moment you count humans honestly. And a hybrid (DIY for your two easy whales, API for everything else) often beats both pure strategies.

Run your own numbers

Don't trust my mix, measure yours. Take a sample of your real URLs, fetch them, and see what fraction needs rendering or stealth:

curl "https://link.sc/v1/fetch?url=https://example.com/some-page" \
  -H "Authorization: Bearer lsc_your_key"

The free tier gives you 500 credits a month, which is enough to profile a few hundred URLs and turn this whole post from my assumptions into your data.


Want the real number for your workload instead of my estimates? Grab a free link.sc key and profile your URLs with 500 free credits.