Amazon products
https://scrapely.15.204.158.166.sslip.io /api/v1/products Product and buy-box data on a platform and marketplace (platform default amazon, marketplace default us; see GET /v1/platforms for what is live) for 1 to 2,000 ASINs (10,000 at pulse). One result per unique ASIN, in request order, each with a status. Always 200 for a well-formed request, even when every ASIN is unavailable.
Cost per unique ASIN: pulse 0.25, lite 1, standard 3, full 10; include: ["delivery"] adds 3. The whole call is reserved up front, rounded up once per call (402 if your balance cannot cover it); partial and unavailable ASINs are refunded, so you pay for ok and not_found, plus delivery only where it came back. X-Scrapely-Credits is the final charge.
Duration (typical): pulse 10–20 s for 10,000 ASINs; lite 20–35 s for 2,000 ASINs; standard 25–45 s for 2,000 ASINs; full about a minute for 2,000 ASINs. Smaller calls are proportionally faster; include: ["delivery"] makes a call noticeably slower. Allow up to 300 s. Uses one concurrency slot.
Request body application/json
Send the items as asins (Amazon) or the generic ids.
platformstringamazon (live: us; coming soon: uk, de, fr, it, es, ca, mx, jp, au, in, br, nl, se, pl), walmart (coming soon), ebay (coming soon), target (coming soon), bestbuy (coming soon), aliexpress (coming soon). A coming-soon platform or marketplace answers 501 NOT_IMPLEMENTED with "coming_soon": true (nothing charged); an unknown one is a 400 listing the valid values. GET /v1/platforms has the full list.marketplacestringus, uk, de…); default the platform's main one. Prices come back in its currency.idsstring[]asins on Amazon). Send one or the other.asinsstring[]pulse without include. Upper-cased and de-duplicated; empty strings are ignored. Duplicates are fetched and charged once.tierstringrequiredpulse (0.25 credits per ASIN): New-offer count and lowest new price. The cheapest way to sweep a whole catalogue for change. lite (1 credit per ASIN): Buy-box price, stock and FBA. Built for recurring change-detection sweeps. standard (3 credits per ASIN): Adds title, description, merchant, condition, offer listing id and new/used offer summaries. For repricing. full (10 credits per ASIN): Everything: images, attributes, variations, list price, binding, reviews. For building a listing. Pulse returns no buy box: its lowest new price equals the buy-box price for ~92% of ASINs, so use it to detect change, not as a price.includestring[]delivery (+3 credits per ASIN): the buy-box delivery promise for every ok / partial ASIN, any tier. Caps the call at 2,000 ASINs. Charged only for ASINs whose delivery comes back non-null.{
"platform": "amazon",
"marketplace": "us",
"ids": [
"string"
],
"asins": [
"0060094664",
"B0009KNLV6",
"BZZZZZZZZZ"
],
"tier": "lite",
"include": [
"delivery"
]
}cURL
curl -X POST "https://scrapely.15.204.158.166.sslip.io/api/v1/products" \
-H "Content-Type: application/json" \
-d '{"platform":"amazon","marketplace":"us","ids":["string"],"asins":["0060094664","B0009KNLV6","BZZZZZZZZZ"],"tier":"lite","include":["delivery"]}'TypeScript
const res = await fetch('https://scrapely.15.204.158.166.sslip.io/api/v1/products', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({"platform":"amazon","marketplace":"us","ids":["string"],"asins":["0060094664","B0009KNLV6","BZZZZZZZZZ"],"tier":"lite","include":["delivery"]}),
});
const data = await res.json();Python
import requests
res = requests.request(
"POST",
"https://scrapely.15.204.158.166.sslip.io/api/v1/products",
headers={
"Content-Type": "application/json",
},
json={"platform": "amazon", "marketplace": "us", "ids": ["string"], "asins": ["0060094664", "B0009KNLV6", "BZZZZZZZZZ"], "tier": "lite", "include": ["delivery"]},
)
data = res.json()Go
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
req, _ := http.NewRequest("POST", "https://scrapely.15.204.158.166.sslip.io/api/v1/products", strings.NewReader(`{"platform":"amazon","marketplace":"us","ids":["string"],"asins":["0060094664","B0009KNLV6","BZZZZZZZZZ"],"tier":"lite","include":["delivery"]}`))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapely.15.204.158.166.sslip.io/api/v1/products');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"platform":"amazon","marketplace":"us","ids":["string"],"asins":["0060094664","B0009KNLV6","BZZZZZZZZZ"],"tier":"lite","include":["delivery"]}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;Ruby
require 'net/http'
require 'uri'
uri = URI('https://scrapely.15.204.158.166.sslip.io/api/v1/products')
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req.body = '{"platform":"amazon","marketplace":"us","ids":["string"],"asins":["0060094664","B0009KNLV6","BZZZZZZZZZ"],"tier":"lite","include":["delivery"]}'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(req)
end
puts res.bodyJava
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://scrapely.15.204.158.166.sslip.io/api/v1/products"))
.header("Content-Type", "application/json")
.method("POST", BodyPublishers.ofString("{\"platform\":\"amazon\",\"marketplace\":\"us\",\"ids\":[\"string\"],\"asins\":[\"0060094664\",\"B0009KNLV6\",\"BZZZZZZZZZ\"],\"tier\":\"lite\",\"include\":[\"delivery\"]}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Responses
Example
{
"platform": "amazon",
"marketplace": "us",
"tier": "pulse",
"include": [
"delivery"
],
"results": [
{
"asin": "B0009KNLV6",
"id": "B0009KNLV6",
"price": {
"amount": null,
"currency": null
},
"availability": {
"inStock": true,
"message": "In Stock"
},
"seller": {
"id": "string",
"name": "string"
},
"fulfillment": {
"byPlatform": true,
"name": "string"
},
"url": "string",
"images": [
"string"
],
"status": "ok",
"fetchedAt": "2024-01-01T00:00:00Z",
"buybox": {
"price": null,
"currency": null,
"priceDisplay": null,
"inStock": null,
"availabilityType": null,
"fulfillerName": null,
"isFba": null,
"availabilityMessage": null,
"condition": null,
"merchant": null,
"offerListingId": null
},
"title": "string",
"description": [
"string"
],
"offers": {
"newCount": 0,
"newMinPrice": 0,
"usedCount": 0,
"usedMinPrice": 0,
"refurbishedCount": 0,
"refurbishedMinPrice": 0,
"collectibleCount": 0,
"collectibleMinPrice": 0,
"currency": "USD"
},
"isParent": true,
"full": {
"listPrice": 0,
"currency": "USD",
"images": [
null
],
"attributes": {
"Brand": "Acme",
"Item Weight": "1.2 Pounds"
},
"variationChildren": [
null
],
"binding": "Paperback",
"reviews": {
"count": null,
"rating": null
}
},
"delivery": {
"standard": null,
"fastest": null,
"isPrime": null,
"shipsFrom": null
},
"deliveryError": "not_fetched"
}
],
"stats": {
"requested": 0,
"ok": 0,
"partial": 0,
"notFound": 0,
"unavailable": 0,
"elapsedMs": 0,
"delivery": {
"requested": 0,
"ok": 0,
"failed": 0
}
},
"credits": 3
}Schema
platformstringrequiredmarketplacestringrequiredtierstringrequiredincludestring[]include.resultsProductResult[]requiredShow child parameters
asinstringrequiredidstringrequiredpriceMoneyShow child parameters
amountnumberrequiredcurrencystringrequiredavailabilityobjectShow child parameters
inStockbooleanrequiredmessagestringsellerobjectShow child parameters
idstringnamestringrequiredfulfillmentobjectShow child parameters
byPlatformbooleanrequirednamestringurlstringimagesstring[]statusstringrequiredok: returned with no errors (charged). partial: returned, but some fields could not be read: do not trust price or stock, re-fetch at a higher tier (refunded). not_found: Amazon says the product does not exist: delist, do not retry (charged). unavailable: we could not get an answer this time: retry later, not evidence the ASIN is dead (refunded).fetchedAtstringrequiredbuyboxBuyboxok and partial at lite, standard and full. Never at pulse.Show child parameters
pricenumbercurrency.currencystringprice.priceDisplaystringinStockbooleanrequiredavailabilityTypestringfulfillerNamestringisFbabooleanrequiredavailabilityMessagestringconditionstringmerchantobjectofferListingIdstringtitlestringdescriptionstring[]offersobjectnewCount and newMinPrice only (lowest new price from any seller, not necessarily the buy box). Refurbished and collectible fields are full only.Show child parameters
newCountintegernewMinPricenumberusedCountintegerusedMinPricenumberrefurbishedCountintegerrefurbishedMinPricenumbercollectibleCountintegercollectibleMinPricenumbercurrencystringisParentbooleanfullobjectShow child parameters
listPricenumbercurrency.currencystringlistPrice; present with it.imagesstring[]requiredattributesobjectrequiredvariationChildrenstring[]requiredbindingstringreviewsobjectdeliveryDeliveryinclude: ["delivery"]. null when there is no promise (see deliveryError); that ASIN's delivery credits are refunded.Show child parameters
standardDeliveryPromiserequiredfastestDeliveryPromiseisPrimebooleanshipsFromstringdeliveryErrorstringdelivery is null. not_fetched: the product was not ok/partial. no_offer: no buy-box offer. no_promise: the offer had no delivery date. fetch_failed: we could not get the promise this time (retry later). deadline: the call ran out of time.statsobjectrequiredShow child parameters
requestedintegerrequiredokintegerrequiredpartialintegerrequirednotFoundintegerrequiredunavailableintegerrequiredelapsedMsintegerrequireddeliveryobjectinclude: ["delivery"].Show child parameters
requestedintegerrequiredokintegerrequiredfailedintegerrequiredcreditsintegerrequiredX-Scrapely-Credits).MISSING_PARAM or INVALID_PARAM; param names the culprit.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringUNAUTHORIZED: missing, unknown or revoked key.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringINSUFFICIENT_CREDITS: nothing was charged.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringRATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringINTERNAL: our fault, not charged. Quote X-Request-Id.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringExample
{
"error": {
"code": {},
"message": "Amazon UK is coming soon.",
"param": "marketplace",
"docs": "string"
},
"coming_soon": {}
}Schema
errorobjectrequiredShow child parameters
codemessagestringparamstringdocsstringcoming_soonrequiredhttps://scrapely.15.204.158.166.sslip.io /api/v1/offers Every offer for 1 to 100 items on a platform and marketplace (platform default amazon, marketplace default us): price, shipping, condition, seller, FBA and which offer holds the buy box. One result per unique ASIN, in request order. Always 200 for a well-formed request.
Cost: 5 credits per unique ASIN, reserved up front (402 if your balance cannot cover it); unavailable ASINs are refunded. X-Scrapely-Credits is the final charge.
Depth: every offer for the ASIN, up to 31 (featured offer first, then cheapest first). Duration: a 100-ASIN call usually takes well under a minute; allow up to 180 s. Uses one concurrency slot.
Request body application/json
Send the items as asins (Amazon) or the generic ids.
platformstringamazon (live: us; coming soon: uk, de, fr, it, es, ca, mx, jp, au, in, br, nl, se, pl), walmart (coming soon), ebay (coming soon), target (coming soon), bestbuy (coming soon), aliexpress (coming soon). A coming-soon platform or marketplace answers 501 NOT_IMPLEMENTED with "coming_soon": true (nothing charged); an unknown one is a 400 listing the valid values. GET /v1/platforms has the full list.marketplacestringus, uk, de…); default the platform's main one. Prices come back in its currency.idsstring[]asins on Amazon).asinsstring[]conditionstringall (default), new, or used (every non-new condition: used, renewed/refurbished, collectible).{
"platform": "amazon",
"marketplace": "us",
"ids": [
"string"
],
"asins": [
"B0009KNLV6",
"BZZZZZZZZZ"
],
"condition": "all"
}cURL
curl -X POST "https://scrapely.15.204.158.166.sslip.io/api/v1/offers" \
-H "Content-Type: application/json" \
-d '{"platform":"amazon","marketplace":"us","ids":["string"],"asins":["B0009KNLV6","BZZZZZZZZZ"],"condition":"all"}'TypeScript
const res = await fetch('https://scrapely.15.204.158.166.sslip.io/api/v1/offers', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({"platform":"amazon","marketplace":"us","ids":["string"],"asins":["B0009KNLV6","BZZZZZZZZZ"],"condition":"all"}),
});
const data = await res.json();Python
import requests
res = requests.request(
"POST",
"https://scrapely.15.204.158.166.sslip.io/api/v1/offers",
headers={
"Content-Type": "application/json",
},
json={"platform": "amazon", "marketplace": "us", "ids": ["string"], "asins": ["B0009KNLV6", "BZZZZZZZZZ"], "condition": "all"},
)
data = res.json()Go
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
req, _ := http.NewRequest("POST", "https://scrapely.15.204.158.166.sslip.io/api/v1/offers", strings.NewReader(`{"platform":"amazon","marketplace":"us","ids":["string"],"asins":["B0009KNLV6","BZZZZZZZZZ"],"condition":"all"}`))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapely.15.204.158.166.sslip.io/api/v1/offers');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"platform":"amazon","marketplace":"us","ids":["string"],"asins":["B0009KNLV6","BZZZZZZZZZ"],"condition":"all"}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;Ruby
require 'net/http'
require 'uri'
uri = URI('https://scrapely.15.204.158.166.sslip.io/api/v1/offers')
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req.body = '{"platform":"amazon","marketplace":"us","ids":["string"],"asins":["B0009KNLV6","BZZZZZZZZZ"],"condition":"all"}'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(req)
end
puts res.bodyJava
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://scrapely.15.204.158.166.sslip.io/api/v1/offers"))
.header("Content-Type", "application/json")
.method("POST", BodyPublishers.ofString("{\"platform\":\"amazon\",\"marketplace\":\"us\",\"ids\":[\"string\"],\"asins\":[\"B0009KNLV6\",\"BZZZZZZZZZ\"],\"condition\":\"all\"}"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Responses
Example
{
"platform": "amazon",
"marketplace": "us",
"results": [
{
"id": "B0009KNLV6",
"asin": "B0009KNLV6",
"status": "ok",
"fetchedAt": "2024-01-01T00:00:00Z",
"buyboxOfferListingId": "string",
"offers": [
{
"offerListingId": null,
"price": null,
"currency": null,
"priceDisplay": null,
"shipping": null,
"condition": null,
"conditionNote": null,
"seller": null,
"fulfillment": null,
"isBuybox": null,
"availability": null,
"delivery": null
}
]
}
],
"stats": {
"requested": 0,
"ok": 0,
"partial": 0,
"notFound": 0,
"unavailable": 0,
"elapsedMs": 0
},
"credits": 5
}Schema
platformstringrequiredmarketplacestringrequiredresultsOffersResult[]requiredShow child parameters
idstringrequiredasinstringrequiredstatusstringrequiredok: the offer list was read (charged; may be empty). not_found: Amazon has no such product (charged). unavailable: we could not get an answer this time, or the call ran out of time (refunded; retry later).fetchedAtstringrequiredbuyboxOfferListingIdstringcondition filters it out of offers).offersOffer[]requiredShow child parameters
offerListingIdstringrequiredpricenumberrequiredcurrency.currencystringprice and shipping.priceDisplaystringshippingnumbercurrency; 0 for free delivery; absent when Amazon does not state it.conditionstringrequirednew, used_like_new, used_very_good, used_good, used_acceptable, refurbished, collectible_*.conditionNotestringsellerobjectrequiredfulfillmentobjectrequiredisBuyboxbooleanrequiredavailabilitystringdeliverystringstatsobjectrequiredShow child parameters
requestedintegerrequiredokintegerrequiredpartialintegerrequirednotFoundintegerrequiredunavailableintegerrequiredelapsedMsintegerrequiredcreditsintegerrequiredX-Scrapely-Credits).MISSING_PARAM or INVALID_PARAM; param names the culprit.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringUNAUTHORIZED: missing, unknown or revoked key.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringINSUFFICIENT_CREDITS: nothing was charged.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringRATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringINTERNAL: our fault, not charged. Quote X-Request-Id.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringExample
{
"error": {
"code": {},
"message": "Amazon UK is coming soon.",
"param": "marketplace",
"docs": "string"
},
"coming_soon": {}
}Schema
errorobjectrequiredShow child parameters
codemessagestringparamstringdocsstringcoming_soonrequiredhttps://scrapely.15.204.158.166.sslip.io /api/v1/products/{id}/offers A convenience alias for a single-item POST /v1/offers: same response (results holds one entry), same price (5 credits unless unavailable). A malformed id is a 400 whose param names the platform's id (asin on Amazon).
Parameters
idstringpathrequiredconditionstringqueryall (default), new, or used (every non-new condition: used, renewed/refurbished, collectible).platformstringqueryamazon (live: us; coming soon: uk, de, fr, it, es, ca, mx, jp, au, in, br, nl, se, pl), walmart (coming soon), ebay (coming soon), target (coming soon), bestbuy (coming soon), aliexpress (coming soon). A coming-soon platform or marketplace answers 501 NOT_IMPLEMENTED with "coming_soon": true (nothing charged); an unknown one is a 400 listing the valid values. GET /v1/platforms has the full list.marketplacestringqueryus, uk, de…); default the platform's main one. Prices come back in its currency.cURL
curl -X GET "https://scrapely.15.204.158.166.sslip.io/api/v1/products/{id}/offers?condition=&platform=&marketplace="TypeScript
const res = await fetch('https://scrapely.15.204.158.166.sslip.io/api/v1/products/{id}/offers?condition=&platform=&marketplace=', {
method: 'GET',
});
const data = await res.json();Python
import requests
res = requests.request(
"GET",
"https://scrapely.15.204.158.166.sslip.io/api/v1/products/{id}/offers?condition=&platform=&marketplace=",
)
data = res.json()Go
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://scrapely.15.204.158.166.sslip.io/api/v1/products/{id}/offers?condition=&platform=&marketplace=", nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapely.15.204.158.166.sslip.io/api/v1/products/{id}/offers?condition=&platform=&marketplace=');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;Ruby
require 'net/http'
require 'uri'
uri = URI('https://scrapely.15.204.158.166.sslip.io/api/v1/products/{id}/offers?condition=&platform=&marketplace=')
req = Net::HTTP::Get.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(req)
end
puts res.bodyJava
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://scrapely.15.204.158.166.sslip.io/api/v1/products/{id}/offers?condition=&platform=&marketplace="))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Responses
Example
{
"platform": "amazon",
"marketplace": "us",
"results": [
{
"id": "B0009KNLV6",
"asin": "B0009KNLV6",
"status": "ok",
"fetchedAt": "2024-01-01T00:00:00Z",
"buyboxOfferListingId": "string",
"offers": [
{
"offerListingId": null,
"price": null,
"currency": null,
"priceDisplay": null,
"shipping": null,
"condition": null,
"conditionNote": null,
"seller": null,
"fulfillment": null,
"isBuybox": null,
"availability": null,
"delivery": null
}
]
}
],
"stats": {
"requested": 0,
"ok": 0,
"partial": 0,
"notFound": 0,
"unavailable": 0,
"elapsedMs": 0
},
"credits": 5
}Schema
platformstringrequiredmarketplacestringrequiredresultsOffersResult[]requiredShow child parameters
idstringrequiredasinstringrequiredstatusstringrequiredok: the offer list was read (charged; may be empty). not_found: Amazon has no such product (charged). unavailable: we could not get an answer this time, or the call ran out of time (refunded; retry later).fetchedAtstringrequiredbuyboxOfferListingIdstringcondition filters it out of offers).offersOffer[]requiredShow child parameters
offerListingIdstringrequiredpricenumberrequiredcurrency.currencystringprice and shipping.priceDisplaystringshippingnumbercurrency; 0 for free delivery; absent when Amazon does not state it.conditionstringrequirednew, used_like_new, used_very_good, used_good, used_acceptable, refurbished, collectible_*.conditionNotestringsellerobjectrequiredfulfillmentobjectrequiredisBuyboxbooleanrequiredavailabilitystringdeliverystringstatsobjectrequiredShow child parameters
requestedintegerrequiredokintegerrequiredpartialintegerrequirednotFoundintegerrequiredunavailableintegerrequiredelapsedMsintegerrequiredcreditsintegerrequiredX-Scrapely-Credits).MISSING_PARAM or INVALID_PARAM; param names the culprit.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringUNAUTHORIZED: missing, unknown or revoked key.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringINSUFFICIENT_CREDITS: nothing was charged.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringRATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringINTERNAL: our fault, not charged. Quote X-Request-Id.Example
{
"error": {
"code": "MISSING_PARAM",
"message": "string",
"param": "string",
"docs": "/docs/errors#insufficient_credits"
}
}Schema
errorobjectrequiredShow child parameters
codestringrequiredmessage.messagestringrequiredparamstringdocsstringExample
{
"error": {
"code": {},
"message": "Amazon UK is coming soon.",
"param": "marketplace",
"docs": "string"
},
"coming_soon": {}
}Schema
errorobjectrequiredShow child parameters
codemessagestringparamstringdocsstringcoming_soonrequired