Best Sellers
The amazon_bestsellers data source is designed to retrieve Amazon Best Sellers pages. To see the response example with retrieved data, download this sample output file in HTML format or check structured data output here.
Request samples
In the code examples below, we make a request to retrieve the 2nd page of Best Sellers in category, which ID is 172541, on amazon.com marketplace.
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
"source": "amazon_bestsellers",
"domain": "com",
"query": "172541",
"render": "html",
"start_page": 2,
"parse": true
}'import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'amazon_bestsellers',
'domain': 'com',
'query': '172541',
'render': 'html',
'start_page': 2,
'parse': True,
}
# Get response.
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('USERNAME', 'PASSWORD'),
json=payload,
)
# Print prettified response to stdout.
pprint(response.json())const https = require("https");
const username = "USERNAME";
const password = "PASSWORD";
const body = {
source: "amazon_bestsellers",
domain: "com",
query: "172541",
render: "html",
start_page: 2,
parse: true,
};
const options = {
hostname: "realtime.oxylabs.io",
path: "/v1/queries",
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization:
"Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
},
};
const request = https.request(options, (response) => {
let data = "";
response.on("data", (chunk) => {
data += chunk;
});
response.on("end", () => {
const responseData = JSON.parse(data);
console.log(JSON.stringify(responseData, null, 2));
});
});
request.on("error", (error) => {
console.error("Error:", error);
});
request.write(JSON.stringify(body));
request.end();https://realtime.oxylabs.io/v1/queries?source=amazon_bestsellers&domain=com&query=172541&render=html&start_page=2&parse=true&access_token=12345abcde<?php
$params = array(
'source' => 'amazon_bestsellers',
'domain' => 'com',
'query' => '172541',
'render' => 'html',
'start_page' => 2,
'parse' => true
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
const Username = "USERNAME"
const Password = "PASSWORD"
payload := map[string]interface{}{
"source": "amazon_bestsellers",
"domain": "com",
"query": "172541",
"render": "html",
"start_page": 2,
"parse": true,
}
jsonValue, _ := json.Marshal(payload)
client := &http.Client{}
request, _ := http.NewRequest("POST",
"https://realtime.oxylabs.io/v1/queries",
bytes.NewBuffer(jsonValue),
)
request.SetBasicAuth(Username, Password)
response, _ := client.Do(request)
responseText, _ := ioutil.ReadAll(response.Body)
fmt.Println(string(responseText))
}
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
namespace OxyApi
{
class Program
{
static async Task Main()
{
const string Username = "USERNAME";
const string Password = "PASSWORD";
var parameters = new {
source = "amazon_bestsellers",
domain = "com",
query = "172541",
render = "html",
start_page = 2,
parse = true
};
var client = new HttpClient();
Uri baseUri = new Uri("https://realtime.oxylabs.io");
client.BaseAddress = baseUri;
var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
requestMessage.Content = JsonContent.Create(parameters);
var authenticationString = $"{Username}:{Password}";
var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);
var response = await client.SendAsync(requestMessage);
var contents = await response.Content.ReadAsStringAsync();
Console.WriteLine(contents);
}
}
}package org.example;
import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;
public class Main implements Runnable {
private static final String AUTHORIZATION_HEADER = "Authorization";
public static final String USERNAME = "USERNAME";
public static final String PASSWORD = "PASSWORD";
public void run() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("source", "amazon_bestsellers");
jsonObject.put("domain", "com");
jsonObject.put("query", "172541");
jsonObject.put("render", "html");
jsonObject.put("start_page", 2);
jsonObject.put("parse", true);
Authenticator authenticator = (route, response) -> {
String credential = Credentials.basic(USERNAME, PASSWORD);
return response
.request()
.newBuilder()
.header(AUTHORIZATION_HEADER, credential)
.build();
};
var client = new OkHttpClient.Builder()
.authenticator(authenticator)
.readTimeout(180, TimeUnit.SECONDS)
.build();
var mediaType = MediaType.parse("application/json; charset=utf-8");
var body = RequestBody.create(jsonObject.toString(), mediaType);
var request = new Request.Builder()
.url("https://realtime.oxylabs.io/v1/queries")
.post(body)
.build();
try (var response = client.newCall(request).execute()) {
if (response.body() != null) {
try (var responseBody = response.body()) {
System.out.println(responseBody.string());
}
}
} catch (Exception exception) {
System.out.println("Error: " + exception.getMessage());
}
System.exit(0);
}
public static void main(String[] args) {
new Thread(new Main()).start();
}
}{
"source": "amazon_bestsellers",
"domain": "com",
"query": "172541",
"render": "html",
"start_page": 2,
"parse": true
}We use synchronous Realtime integration method in our examples. If you would like to use Proxy Endpoint or asynchronous Push-Pull integration, refer to the integration methods section.
Request parameter values
Generic
Basic setup and customization options for scraping Amazon Best Sellers pages.
source
Sets the scraper.
amazon_bestsellers
query
Browse node ID.
-
- mandatory parameter
Localization
Adapt results to specific geographical locations, domains, languages.
domain
Domain localization for Amazon. The full list of available domains can be found here.
com
locale
Accept-Language header value, which sets the interface language of the Amazon page. More info.
-
IMPORTANT: On most page types, Amazon tailors the returned results based on the delivery location of their customers. Therefore, we advise using the geo_location parameter to set your preferred delivery location. You can read more about using geo_location with Amazon here.
Pagination
Controls for managing the pagination and retrieval of search results.
start_page
Starting page number.
1
pages
Number of pages to retrieve.
1
Other
Additional advanced settings and controls for specialized requirements.
Code example
{
"source": "amazon_bestsellers",
"domain": "com",
"query": "172541",
"parse": true,
"context": [
{
"key": "currency",
"value": "AUD"
}
]
}Structured data
Below you can find a structured output example for amazon_bestsellers.
Data dictionary
HTML example

JSON structure
The amazon_bestsellers provides comprehensive data on the best-selling products on Amazon. The table below presents a detailed list of each field we parse, along with its description and data type. The table also includes some metadata.
url
The URL of the Amazon Best Sellers page.
string
page
The current page number.
integer
pages
The total number of pages.
integer
query
The original search term.
string
results
A dictionary containing the results of the search.
object
results.pos
An indicator denoting the position of a bestselling item.
integer
results.url
The URL of the best selling item.
string
results.asin
Amazon Standard Identification Number.
string
results.price
The price of the product.
string
results.title
The title of the product.
string
results.rating
The rating of the product.
float
results.currency
The currency in which the price is denominated.
string
results.is_prime
Indicates whether the product is eligible for Amazon Prime.
boolean
results.price_str
The original price before any discounts or promotions
float
results.price_upper
The upper limit of the price if applicable.
float
results_ratings_count
The total number of ratings given to the product.
integer
parse_status_code
The status code of the parsing job. You can see the parser status codes described here.
integer
created_at
The timestamp when the scraping job was created.
timestamp
updated_at
The timestamp when the scraping job was finished.
timestamp
job_id
The ID of the job associated with the scraping job.
string
status_code
The status code of the scraping job. You can see the scraper status codes described here.
integer
parser_type
The type of parser used for parsing the data.
string
Last updated
Was this helpful?

