Web scraping API
A web scraping API that deals with the blocks for you
Send a URL, get the page back as HTML, markdown or text. When a site answers with a block, a rate limit or a bot check, the request is retried automatically, and you pay only for a page that comes back with content.
7,500 credits, one-time. No subscription. Failed calls are free. The free trial covers the travel endpoints.
Endpoints and prices checked against the API on .
Every API on one keyMost scraping projects stall on the same three problems: the site starts refusing requests, rate limits kick in as volume grows, and half the pages are built with JavaScript, so the HTML you fetch is empty. Solving them means running browsers, managing IP addresses and writing retry logic before you have parsed a single field. This API takes that work off your hands. One POST with a URL returns the page and the status the site answered with.
Pricing follows the work. A plain fetch is the cheapest call; render runs the page’s JavaScript first and returns the finished DOM; premium uses the premium network from the first attempt, for the sites that refuse standard requests. Whichever you pick, a block, an error page, an empty page or a timeout costs nothing, so a retry loop on your side never burns credits. For the sites we cover with a ready-made source (Amazon, Google, Booking.com, LinkedIn Jobs and more) use that instead: it returns typed fields rather than a page to parse.
What you get
- content
- the page as HTML, markdown or text, as you asked; JSON, XML and CSV come back as served
- status_code
- the status the site answered with, so you can tell a missing page from a working one
- final_url
- where the page ended up after redirects
- headers.location
- every URL a redirect pointed at, in order
- content_type, format
- the site’s Content-Type and the format of content
- screenshot
- a base64 PNG, when you ask for one
- meta
- whether render and premium were used, the time taken and the page size
What you no longer deal with
Blocks and bot checks
A 403, a 429 or a bot-check page is detected and the request tries again from a fresh start. You see the final answer, not the failed attempts, and none of the failed attempts are charged.
Rate limits and IP addresses
No IP addresses to buy, rotate or warm up. Set country to request a page from a country you name, and session_id to keep the same address across a sequence of requests, such as a login and the pages behind it.
JavaScript-heavy pages
render runs the page’s JavaScript and returns the DOM, with wait_for to wait for an element and wait_ms for a fixed pause. Images, media and fonts are skipped unless you ask for them, so renders stay fast.
Clean output for parsers and LLMs
format: markdown or text drops scripts, styles, navigation and footers and makes every link absolute. screenshot returns a PNG of the viewport or the full page.
One call, structured JSON
POST /v1/scrape, 1 credit per successful call.
curl -X POST "https://api.scrapercompany.com/v1/scrape" \
-H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com"
}'{
"url": "https://example.com/",
"final_url": "https://example.com/",
"status_code": 200,
"content_type": "text/html; charset=UTF-8",
"format": "markdown",
"content": "# Example Domain\n\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\n\n[Learn more](https://iana.org/domains/example)",
"headers": {
"content-type": "text/html; charset=UTF-8",
"last-modified": "Mon, 05 Oct 2026 18:43:12 GMT",
"etag": "\"84238dfc8092e5d9c0dac8ef93371a07:1736799080.121134\"",
"location": []
},
"meta": {
"render": false,
"premium": false,
"elapsed_s": 0.412,
"bytes": 1256
}
}Endpoints and price per call
Credits per successful call, and what one call costs on the Starter, Growth, Scale, Business plans. Failed requests cost nothing.
| Endpoint | What it returns | Credits | Starter / Growth / Scale / Business |
|---|---|---|---|
| Scrape a URL POST /v1/scrape | Any public page as HTML, markdown or text, with optional JavaScript rendering, screenshot, country and session | 1 credit | $0.0012 · $0.0010 · $0.0008 · $0.0007 |
| Request | Credits per page | Starter / Growth / Scale / Business |
|---|---|---|
| Plain fetch | 1 | $0.0012 · $0.0010 · $0.0008 · $0.0007 |
| With render (JavaScript) | 5 | $0.0061 · $0.0050 · $0.0040 · $0.0033 |
| With premium | 10 | $0.012 · $0.0099 · $0.0080 · $0.0067 |
| With render and premium | 75 | $0.092 · $0.074 · $0.060 · $0.050 |
Frequently asked questions
Read next
Do you solve CAPTCHAs?
The API detects block pages, rate limits and bot checks and retries the request until a real page comes back or the time budget runs out; for most sites that is what gets you past them. It does not type answers into a CAPTCHA you are shown. If every attempt is refused, the answer is a 503 that says so, and it costs nothing.
What do I pay for?
Only a page that comes back with a 2xx status and content: 1 credit for a plain fetch, 5 with render, 10 with premium and 75 with both. A screenshot adds nothing. Blocks, error pages, empty pages, timeouts and refused URLs are free.
When do I need render or premium?
Start with a plain fetch. Use render when the content you want is built by JavaScript after the page loads (the plain HTML is missing it). Use premium when a site keeps refusing plain requests: the 503 tells you it was blocked. Each answer’s meta says which were used, so you can keep the cheapest setting that works per site.
Can I scrape pages behind a login?
You can pass your own Cookie or Authorization header, which goes only to the host you named, and keep one address across requests with session_id. Only scrape accounts and data you are allowed to access; the Terms of Service apply.
Which URLs are refused?
Private, loopback and cloud-metadata addresses, ports other than 80, 443, 8080 and 8443, and hosts on a short denylist, including when a redirect or a rendered page points at one. Those answer 422 and cost nothing. Binary files such as images and PDFs are refused too.
How fast is it, and what are the limits?
A plain fetch usually takes a second or two; a render takes longer. timeout_s is the budget for every attempt together, up to 60 seconds, or 90 with render. Requests per minute and concurrency follow your plan.
Can AI agents use it?
Yes. format: markdown returns a page an LLM can read directly, and the same endpoint is a tool on the MCP server, so Claude and other MCP clients can fetch pages with your key.
Do failed requests cost credits?
No. A failed or blocked call (any 4xx or 5xx response) costs 0 credits, and so does a search page that comes back empty. You pay only for successful results.
How do I get an API key?
Create an account on the sign-up page and verify your email. You get a free trial of 50 calls or 14 days, whichever ends first, no card needed on the travel endpoints (hotels, rentals, flights, reviews); for everything else, and after the trial, buy a credit pack (from $15) or pick a plan. You create and rotate keys yourself in the dashboard.
More APIs on the same key
All APIsLook a hotel up by name, then read what Booking.com shows a guest: a nightly price calendar, each room type with its rate plans, and the reviews with the property’s replies. Structured JSON, priced per call.
Look a hotel up by name, then read what Expedia shows a guest for one stay: every room type and rate plan with its total, nightly price and cancellation terms, and the guest reviews with the property’s replies.
Find a hotel’s Hotels.com id by name, then read what a guest on the Hotels.com site for their country sees: the headline price for a stay, every room type and rate plan, and the guest reviews.
Look a hotel up by name, then read every room type and rate plan Agoda shows a guest for one stay, with the stay total, discounts, meal plan and cancellation terms, in any of 23 currencies.
Start with 50 free calls
Create an account and verify your email: your own API keys and a free trial of 50 calls or 14 days, whichever ends first, no card needed. Then buy a credit pack from $15 or pick a plan from $49 a month.
7,500 credits, one-time. No subscription. Or try it free: 50 calls, no card.