Works with the best tools:
Works with the best tools:
Have a question?
Contact usThe Retail API extracts structured product data from major e-commerce websites — title, price, brand, images, availability, reviews, and more. Pass a product page URL and get clean JSON back, without writing any parsing logic.
The Retail API handles JavaScript rendering, proxy rotation, and CAPTCHA bypassing automatically. Currency display may vary depending on the proxy country — set proxyCountry to control which market prices you retrieve.
The following e-commerce platforms are fully supported. Can't find your target? Contact us to request it.
| Parameter | Type | Default | Description |
|---|---|---|---|
| url | string | — | RequiredFull URL of the product page. Must include https://. |
| premiumProxy | boolean | false | +9 creditsResidential proxy for better success on protected sites. Consumes 10 credits instead of 1. |
| proxyCountry | string | null | Requires premiumProxyISO 3166-1 country code (e.g. "US", "FR"). Geo-target prices. Consumes 25 credits. |
| proxyState | string | null | OptionalTwo-letter state code for US/Australia (e.g. "ca"). Consumes 60 credits. |
| waitForNetworkRequests | boolean | false | OptionalWait for AJAX requests to finish. Useful for products that load pricing dynamically. |
For a full description of all available options, see the Advanced Options section.
On success the API returns a JSON object. Fields set to null were not found on the product page.
| Field | Type | Description |
|---|---|---|
| title | string | Full product title as displayed on the page. |
| description | string | Full product description or bullet-point features. |
| price | number | Current selling price as a numeric value (e.g. 999). |
| currency | string | ISO 4217 currency code (e.g. "USD", "EUR"). |
| image | string | URL of the main product image. |
| images | array | Array of all product image URLs. |
| shippingCost | number | null | Shipping cost if displayed. null if free or not shown. |
| inStock | boolean | true if the product is currently available for purchase. |
| ASIN | string | null | Amazon Standard Identification Number. Amazon listings only. |
| brand | string | null | Product brand or manufacturer name. |
| color | string | null | Selected product color variant. |
| category | object | null | Product category, e.g. {"name": "Mobile & Smart Phones"}. |
| rating | number | null | Average customer rating (e.g. 4.5). |
| reviewCount | number | null | Total number of customer reviews. |
| host | string | Hostname of the scraped website (e.g. "www.amazon.com"). |
| siteURL | string | The original product URL that was scraped. |
| statusCode | number | HTTP status returned by the target website. |
| captchaFound | boolean | true if a CAPTCHA was detected and bypassed. |
| error | string | null | null on success. Error message if the scrape failed. |
The API always returns HTTP 200. Check the error field in the response body to detect scrape failures.
| HTTP Code | Meaning | What to do |
|---|---|---|
| 200 + error: null | Success | Data is ready to use. |
| 200 + error: "..." | Scrape failed | The URL may be invalid or the site temporarily unavailable. Retry or check the URL. |
| 400 | Bad request | Missing or malformed url parameter. |
| 401 | Unauthorized | Invalid credentials. Check your API key in your dashboard. |
| 429 | Rate limit exceeded | Slow down your requests or upgrade your plan. |
Price accuracy: Prices are scraped in real time from the product page. For geo-sensitive pricing (e.g. Amazon US vs Amazon FR), use proxyCountry with premiumProxy: true to ensure you retrieve the correct market price.
const username = "yourUsername";
const apiKey = "yourApiKey";
const url = "https://www.scraping-bot.io/example-ebay.html";
const auth = "Basic " + Buffer.from(`${username}:${apiKey}`).toString("base64");
async function scrape() {
const response = await fetch("http://api.scraping-bot.io/scrape/retail", {
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
},
}),
});
const data = await response.json();
console.log(data);
}
scrape();Each request will return the product data in JSON format
{
"error": null,
"data": {
"title": "Apple iPhone XR 64GB Red Unlocked A2105 GSM SEALED BOX- 1 Year Apple Warranty",
"description": "Apple iPhone XR. 1 YEAR APPLE CARE WARRANTY.",
"image": "https://www.scraping-bot.io/iphone_example_ebay_files/s-l500.png",
"price": 689,
"shippingFees": 18,
"currency": "GBP",
"isInStock": true,
"EAN13": "0190198770660",
"ASIN": null,
"ISBN": null,
"color": "White",
"brand": "Apple",
"category": {
"name": "Mobile & Smart Phones",
"url": "https://www.ebay.co.uk/b/Mobile-Smart-Phones-/9355"
},
"categories": [
{
"name": "Mobile Phones & Communication",
"url": "https://www.ebay.co.uk/b/Mobile-Phones-Communication-/15032"
},
{
"name": "Mobile & Smart Phones",
"url": "https://www.ebay.co.uk/b/Mobile-Smart-Phones-/9355"
}
],
"siteURL": "https://www.ebay.co.uk/itm/Apple-iPhone-XR-64GB-Red-Unlocked-A2105-GSM-SEALED-BOX-1-Year-Apple-Warranty-/123902112947",
"siteHtml": null,
"productHasVariations": null,
"error": null,
"statusCode": 200,
"isFinished": null,
"isDead": null,
"htmlLength": 128240,
"captchaFound": false,
"isHtmlPage": true,
"host": "www.scraping-bot.io",
"deliveryDate": "Fri. 13 Sep. - Mon. 23 Sep. ",
"originalPrice": null
}
}