Works with the best tools:
Works with the best tools:
Have a question?
Contact usThese options apply to the supported synchronous scraping endpoints: Raw HTML, Retail, Real Estate, Booking and Grocery. Search Engine and Social Media use their own request contracts.
| Option | Type | Default | Description |
|---|---|---|---|
| useChrome | boolean | false | Enable headless Chrome for JavaScript-rendered pages. 5 credits per request. |
| premiumProxy | boolean | false | Use a residential proxy for protected targets. 10 credits per request. |
| proxyCountry | string | null | ISO 3166-1 country code. Requires premiumProxy: true; 25 credits per request. |
| proxyState | string | null | Two-letter state code. Requires proxyCountry and premiumProxy: true; 60 credits per request. |
| premiumFallback | boolean | true | Retry a request blocked by the website once with a premium proxy, billed at the premium rate only if it succeeds. Set false to turn it off. |
| waitForNetworkRequests | boolean | false | Wait for AJAX/XHR requests. Use only with useChrome: true. |
| headers | object | null | Custom target request headers on supported routes. |
| body | object | null | POST body for the target. Available only without Chrome or premium proxy. |
| Options combination | Credits / request | Notes |
|---|---|---|
| Standard request | 1 | Default mode. |
| useChrome: true | 5 | Headless Chrome rendering. |
| premiumProxy: true | 10 | Residential proxy. |
| useChrome + premiumProxy | 25 | Chrome and residential proxy together. |
| proxyCountry + premiumProxy | 25 | Country targeting replaces the normal option rate. |
| proxyState + proxyCountry + premiumProxy | 60 | State targeting replaces the normal option rate. |
When a website blocks a request sent without premiumProxy (HTTP 403, 429 or 503, captcha or protection page), the API retries it once with a premium proxy, in the same call. You pay the premium rate of your options (10 credits, or 25 with useChrome or a country) only if the retry succeeds; the first attempt is free. If both attempts fail, or if your plan has no credits left for the premium rate, nothing is billed and you get the usual error. Missing pages (404), wrong URLs and websites that are down are not retried.
A retried request says so in the response: premiumProxyUsed: true and a notice with the credits billed. On Raw HTML, where the body is the page, the same information comes in the X-Premium-Proxy-Used and X-ScrapingBot-Notice response headers. Send premiumProxy: true for such a website to skip the first attempt, or premiumFallback: false to turn the retry off.
{
"error": null,
"data": { "title": "…", "price": 790, … },
"premiumProxyUsed": true,
"notice": "This website blocks standard proxies: the request was retried with a premium proxy and billed 10 credits. Add premiumProxy: true to your options to skip the first attempt."
}Some websites can only be scraped with a premium proxy, with Chrome or from a given country. For these domains the API turns the options on by itself, whatever you send, and the request is billed for the options actually used. A country you set yourself is kept. On the domains marked "useChrome ignored", Chrome doesn't help: a request with useChrome: true runs without it and isn't billed for it.
| Domain | Turned on automatically | Credits / request |
|---|---|---|
| abritel.fr | premiumProxyuseChrome ignored | 10 |
| www.aliexpress.com | premiumProxy | 10 |
| www.amazon.fr | premiumProxy | 10 |
| www.apartments.com | premiumProxy | 10 |
| www.aritzia.com | premiumProxy | 10 |
| www.babypark.nl | premiumProxy | 10 |
| www.brownsfashion.com | premiumProxy | 10 |
| www.cdiscount.com | premiumProxy | 10 |
| www.cos.com | premiumProxy | 10 |
| www.farfetch.com | premiumProxyuseChrome ignored | 10 |
| www.crunchbase.com | premiumProxyuseChrome ignored | 10 |
| de.aliexpress.com | premiumProxy | 10 |
| es.aliexpress.com | premiumProxy | 10 |
| www.fnac.com | premiumProxy | 10 |
| fr.aliexpress.com | premiumProxy | 10 |
| fr.hotels.com | premiumProxyuseChrome ignored | 10 |
| www.funda.nl | premiumProxy | 10 |
| www.g2a.com | premiumProxy | 10 |
| www.hermes.com | premiumProxy | 10 |
| www.hollisterco.com | premiumProxy + useChrome | 25 |
| hotels.com | premiumProxyuseChrome ignored | 10 |
| it.aliexpress.com | premiumProxy | 10 |
| www.leboncoin.fr | premiumProxy | 10 |
| www.micromania.fr | useChrome | 5 |
| www.mrporter.com | premiumProxy | 10 |
| nl.aliexpress.com | premiumProxy | 10 |
| nl.victoriassecret.com | useChrome | 5 |
| pt.aliexpress.com | premiumProxy | 10 |
| www.ralphlauren.co.uk | premiumProxy | 10 |
| www.reddit.com | premiumProxy | 10 |
| rh.com | premiumProxy + proxyCountry: US | 25 |
| www.rightmove.co.uk | premiumProxy | 10 |
| ru.aliexpress.com | premiumProxy | 10 |
| www.saksfifthavenue.com | premiumProxy | 10 |
| www.seloger.com | premiumProxyuseChrome ignored | 10 |
| www.sephora.co.uk | premiumProxy | 10 |
| www.sephora.fr | premiumProxy | 10 |
| shop.lululemon.com | premiumProxy + proxyCountry: US | 25 |
| shopee.tw | premiumProxy | 10 |
| stockx.com | premiumProxy | 10 |
| www.tedbaker.com | useChrome | 5 |
| www.trulia.com | premiumProxy | 10 |
| www.ugg.com | premiumProxy | 10 |
| www.uniqlo.com | premiumProxy | 10 |
| www.zillow.com | premiumProxy | 10 |
proxyCountry valuesCountry targeting always requires premiumProxy: true. Use an uppercase ISO 3166-1 two-letter code.
const username = "yourUsername";
const apiKey = "yourApiKey";
const url = "https://example.com";
const auth = "Basic " + Buffer.from(`${username}:${apiKey}`).toString("base64");
async function scrape() {
const response = await fetch("https://api.scraping-bot.io/scrape/raw-html", {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: auth,
},
body: JSON.stringify({
url,
options: {
useChrome: false, // set to true if you want to use headless chrome for javascript rendering
premiumProxy: true, // set to false to use standard proxies instead of premium proxies (Unblock Amazon, Google, Rakuten...)
proxyCountry: null, // allows you to choose a country proxy (example: proxyCountry: "FR")
waitForNetworkRequests: false, // wait for most ajax requests to finish until returning the Html content (this option can only be used if useChrome is set to true),
// this can slowdown or fail your scraping if some requests are never ending only use if really needed to get some price loaded asynchronously for example
},
}),
});
// the Raw HTML endpoint returns the page's HTML as plain text, not JSON
const html = await response.text();
console.log(html);
}
scrape();