Web scraping API pricing is easiest to compare by completed, usable pages. A low price per request can be misleading if browser rendering, retries, blocked responses, or required output formats are priced separately. Ask each vendor what is billed, what is included, and when a failed attempt consumes credit.
url2llm currently charges one credit for a billable scrape and one credit for a billable map call. Supported formats, browser rendering, screenshots, and branding have no added credit charge. The price of a credit depends on the plan, so compare the current pricing page before turning credits into currency.
Which unit does a web scraping API bill?
Vendors may meter API calls, successful pages, browser time, bandwidth, or credits that vary by feature. Normalize each quote to the job you need done. If you need Markdown plus a screenshot, price that exact request. If you need a site list plus twenty pages, include discovery and all twenty page fetches.
| Question | Why it changes the bill |
|---|---|
| Does a failed origin response cost? | Blocks and outages can dominate a difficult source |
| Is JavaScript rendering extra? | A dynamic site may need a browser for every page |
| Are screenshots and formats extra? | One page can require several outputs |
| Does a cached repeat count? | Frequent reads can change effective cost |
| Is discovery a separate request? | Mapping a site is different from fetching its pages |
ScrapingBee and Firecrawl publish different product and pricing models. Read their current pricing and Firecrawl pricing for the exact plan, region, and feature mix. A vendor's headline rate is not a measured cost for your workload.
How does url2llm count a request?
A first billable read of a URL and its fetch settings costs one credit. A repeat can cost zero when the same organization has already paid for that URL and settings, a suitable cached copy exists, and it meets the requested age and formats. The default maximum cache age is one hour. A forced refresh, stale copy, or new required capture can need a fresh billable fetch.
Responses with origin status 401, 403, or 429, timeouts, and 5xx outcomes are unbilled. A source page's 404 follows normal pricing. /v1/quote returns the exact credit cost and reason before a scrape without fetching the page or charging credits. That is the safest way to price an actual request shape.
The quote response contains data.credits, data.free, and data.reason. It describes the request at that moment. If the cache expires before the later scrape, quote again. A quote does not reserve a price or guarantee usable origin content.
curl -X POST https://api.url2llm.com/v1/quote \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com/","formats":["markdown","screenshot"]}'
How should you compare vendors?
Choose a representative set of public pages. Include simple HTML, a JavaScript-rendered page, and a source that sometimes blocks requests. Record usable outputs, retries, time, and the vendor's actual bill for the same task. Do not hide failed attempts from the denominator.
For example, a job that needs 20 first-time page reads plus one map call can cost up to 21 credits under url2llm's current billable rules, before cache reuse or unbilled failures. Divide the actual bill by the number of pages that passed your quality check. That result is more useful than credits per attempt.
The web scraping API checklist helps define that task. The 403 diagnosis guide explains why repeated blocked requests can distort a comparison.
Get an API key, quote the exact url2llm request you plan to send, and compare it with your expected refresh rate before scaling a pipeline.