Skip to content

Web scraping API pricing, per 1,000 delivered requests

Every plan on this page bills the same way: one price per 1,000 requests we actually delivered to you. If a proxy is blocked, if the target returns a 403, if every exit we tried failed — you are not billed, because you did not get a page. The rate falls as the plan grows, from $0.165 per 1,000 on Starter to $0.100 per 1,000 on Business Ultra. There is no bandwidth meter, no per-site difficulty tier, and no sales call between you and an API key.

The unit you are buying

One request-unit is one delivered page. Everything about the fetch itself is included in that single unit: rotating to a fresh exit IP, targeting a country, pinning a sticky session, retrying past blocks, converting the page to text or Markdown, and pulling fields out with CSS or XPath selectors. A Markdown conversion costs the same as raw HTML. A CSS extraction costs the same as a plain fetch. You are not charged separately for any of it.

Two things cost more than one unit, and both cost more because they cost us more. Running a real browser holds a Chrome slot and downloads everything the page asks for. AI extraction burns language-model tokens on every call. Neither is a separate line on your invoice — both are expressed as more request-units, so there is still only one number to reason about.

What each operation costs

Operation Request-units Notes
Plain fetch or extract1HTML, text, Markdown, raw bytes, CSS/XPath fields
Render with block_resources1Same as a plain fetch — images, fonts and media skipped
Render5A real browser runs the page before we read the DOM
Render + screenshot10Also encodes a PNG
AI extraction, fast+2On top of the fetch unit. Scale plan and above
AI extraction, smart+3On top of the fetch unit. Scale plan and above

Read the render rows in that order, because the cheap one is not a footnote. Sending "block_resources": true drops a render from 5 units to 1 — cheaper than a plain render and the same as a plain fetch. The DOM your selectors read is identical; images, fonts and media simply never download. On an image-heavy page that removes around 40% of the transfer (77% at best, measured). Unless you actually need the images or a screenshot of them, it is the option to reach for. We priced it that way deliberately: a discount that changes behaviour is worth more to both of us than a surcharge that only collects.

A render that fails is not billed at all, and neither is a failed AI extraction. If every browser slot is busy you get a 503 with a Retry-After header, which is a retry signal, not a charge.

Plans

Prices are in US dollars. The per-1,000 rate shown is the effective rate on the plan's included volume — the price divided by the requests it includes. Rotation, country targeting, sticky sessions and real-browser rendering are on every plan, Free included.

Annual billing — pay for 10 months, get 12 Monthly Annual 2 months free

Annual plans are billed once for the twelve months — ten months’ price for a year of service. What does not change is the allowance: included requests stay a monthly figure and are topped up every month, so annual changes what you pay and never how much you can use at once.

Plan Price / monthPrice / year Included / month Rate per 1,000 Rate limit Max response AI extraction
Free$01,0005 req/s2 MBNo
Starter$99$990600,000$0.165$0.13850 req/s2 MBNo
Growth$249$2,4901,600,000$0.156$0.130100 req/s5 MBNo
Scale$499$4,9903,400,000$0.147$0.122200 req/s10 MBYes
Business$999$9,9907,200,000$0.139$0.1161,000 req/s25 MBYes
Business XL$1,999$19,99015,000,000$0.133$0.1111,000 req/s25 MBYes
Business XXL$3,499$34,99030,000,000$0.117$0.0971,000 req/s25 MBYes
Business Ultra$9,999$99,990100,000,000$0.100$0.0831,000 req/s25 MBYes

Business XL and above are quoted, not clicked — at that volume we size the proxy pool to your traffic before taking your money. Talk to us with your monthly request count. Everything up to Business is instant checkout, monthly or annual.

What actually changes between plans

Four things, and it is worth knowing which is which before you pick.

Rate limit

Sustained requests per second, enforced per account across every key you own — a per-key limit would be no limit at all, since keys are free to mint. Short bursts above it are tolerated; going over returns a 429 with a Retry-After header, and nothing over the limit is billed. Each plan's rate is sized so that running flat out against the whole monthly allowance takes hours rather than minutes. Renders carry their own separate cap of 5 per second, and that one is the same on every plan including Business Ultra — submit slow renders to POST /v1/jobs and collect them asynchronously instead.

Maximum response size

The largest single response we will return, from 2 MB on Free and Starter up to 25 MB on Business and above. Real pages are nowhere near it: across 3,305 production requests the median response was 40.6 KB and 99% were under 1.2 MB, so this only ever catches a video, an archive or a dataset dump. Anything over the limit is refused whole with a 413 naming the size, the limit and your plan — we never hand back a truncated page, because a page that silently lost its tail bills as a success and parses as corrupt data. A refused response is not billed.

AI extraction

Describing the fields you want in plain English — a prompt, a schema, or any extract_type preset — needs the Scale plan or above. CSS and XPath extraction works on every plan including Free, and for a page whose markup you already know it is the faster and cheaper tool anyway. The gate exists because AI extraction is the one operation with a real per-call cost to us, and because a tier that differs only in how many requests it includes is a billing detail rather than a decision.

Priority exits

A routing difference, not a queue — there is no line to stand at the front of. On a paid plan your request is offered premium ISP and datacenter exits first, then a deeper bench of health-checked addresses, then a last-resort attempt so a paid request does not fail for want of an exit. The Free plan is served entirely from a high-latency public pool. Measured on our own production traffic, that public pool ran a 1,015 ms median against premium's 453 ms, with a long tail (p99 32 s against 4.5 s) that a public pool will always have. Those are observations of a volatile third-party pool, not a service level we hold it to.

Overage, rollover and the guarantee against surprise bills

Your plan's included requests are spent first. Past them, requests draw on prepaid credit at $0.20 per 1,000. You top up in advance, the balance counts down, and it floors at zero — at which point requests return a 402 instead of quietly continuing. There is no invoice after the fact and no mechanism by which you can run up a charge you did not authorise before it happened.

Unused requests are not forfeited. Whatever is left when your period renews is added to the next period's allowance, so a quiet month funds a busy one instead of evaporating on the renewal date.

A standalone pay-as-you-go plan is coming in 2027. It is not sold today: start on Free or pick a subscription, and top up whenever you need more.

The free tier

1,000 requests, no card, no trial clock. It is a real tier rather than a countdown: CSS and XPath extraction, rotation, country targeting, sticky sessions and real-browser rendering all work on it. What it does not get is priority exits or AI extraction. It runs entirely on the high-latency public pool, which is exactly what it is for — proving the integration works and seeing the shape of the JSON before you decide whether to pay for anything. Do not benchmark your production latency on it.

Pricing questions

What counts as a delivered request?

A response the target actually gave us and we handed to you. When an exit IP gets a 403, a 429 or a 5xx, we treat that as our proxy failing rather than as an answer, roll to a different exit, and try again — and none of those attempts is billed. You are billed once, when a page comes back. A genuine answer from the target that happens to be an error — a 404 for a page that does not exist, a 401 behind a login — is a delivered response and is billed, because it is the site's real answer and we spent a request getting it for you.

Does rendering cost extra?

Yes: 5 request-units instead of 1, or 10 if you also want a screenshot. But sending "block_resources": true brings it back down to 1. See the unit table for the reasoning.

Do I need a subscription to start?

No. Sign up, create a key, send a request. The 1,000 free requests need no card.

Is the rate limit per key or per account?

Per account, across every key you own. An individual key can be throttled below the account limit if you want to ring-fence a job, but minting more keys never buys more throughput.

Can I check my usage from code?

GET /v1/account returns your plan, remaining included requests, prepaid credit, rate limit and per-key budget — worth calling before you kick off a large job. GET /v1/capabilities with your key tells you which features your plan can actually use, so you never feature-detect a yes and then get a 403.

Start free with 1,000 requests Read the docs