logo

Search Results & Categories

Search Amazon and scrape category pages with structured results

The Search endpoint performs keyword searches on Amazon and returns structured product listings. This works for both search queries and category pages; since Amazon category pages use the same underlying structure as search results, this single endpoint handles both use cases. Get product titles, prices, ratings, Prime status, sponsored flags, and position rankings all in clean JSON format.


Endpoint

GET https://api.scrape.do/plugin/amazon/search

Input Parameters

ParameterTypeRequiredDescription
tokenstringYour Scrape.do API authentication token
keywordstringSearch query (must be URL-encoded)
geocodestringCountry code (e.g., us, gb, de, jp)
zipcodestringPostal code formatted according to country requirements
pageintegerPage number for pagination (default: 1)
languagestringLanguage code in ISO 639-1 format (e.g., EN, DE)
superbooleanEnable residential/mobile proxies (default: false)

Response Parameters

FieldTypeDescription
keywordstringThe search query that was executed
pagenumberCurrent page number
totalResultsstringTotal results count as displayed by Amazon
productsarrayList of product results
statusstringRequest status (success or error)
errorMessagestringError message if request failed

Product Object Fields

FieldTypeDescription
asinstringProduct ASIN number
titlestringProduct title
urlstringProduct detail page URL
imageUrlstringProduct thumbnail image URL
priceobjectPrice with currencyCode and amount
ratingobjectRating with value, count, and stars
reviewCountstringNumber of reviews as displayed
isSponsoredbooleanWhether this is a sponsored/ad placement
isPrimebooleanWhether Prime shipping is available
positionnumberPosition on the search results page
badgestringSpecial badge if present (e.g., "Best Seller", "Overall Pick")

Example Usage

Step 1: Define Your Search Query

Decide what you want to search for on Amazon. This can be:

  • Product keywords: laptop stands, wireless headphones, coffee maker
  • Brand + product: sony headphones, anker charger
  • Category browsing: Use category-specific keywords

For this example, we'll search for "laptop stands":

Amazon Search Results

The API will return structured data for each product in the search results, including ASINs, prices, ratings, and badges like "Best Seller" or "Overall Pick".

Step 2: Send the API Request

curl --location --request GET 'https://api.scrape.do/plugin/amazon/search?token=<SDO-token>&keyword=laptop%20stands&geocode=US&zipcode=10001&page=1'
import requests
import json

token = "<SDO-token>"
keyword = "laptop stands"
geocode = "US"
zipcode = "10001"
page = 1

url = f"https://api.scrape.do/plugin/amazon/search?token={token}&keyword={keyword}&geocode={geocode}&zipcode={zipcode}&page={page}"

response = requests.request("GET", url)

print(json.dumps(response.json(), indent=2))
const axios = require('axios');

const token = "<SDO-token>";
const keyword = encodeURIComponent("laptop stands");
const geocode = "US";
const zipcode = "10001";
const page = 1;

const url = `https://api.scrape.do/plugin/amazon/search?token=${token}&keyword=${keyword}&geocode=${geocode}&zipcode=${zipcode}&page=${page}`;

axios.get(url)
  .then(response => {
    console.log(JSON.stringify(response.data, null, 2));
  })
  .catch(error => {
    console.error(error);
  });
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
)

func main() {
    token := "<SDO-token>"
    keyword := url.QueryEscape("laptop stands")
    geocode := "US"
    zipcode := "10001"
    page := 1

    apiUrl := fmt.Sprintf(
        "https://api.scrape.do/plugin/amazon/search?token=%s&keyword=%s&geocode=%s&zipcode=%s&page=%d",
        token, keyword, geocode, zipcode, page,
    )

    resp, err := http.Get(apiUrl)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
require 'net/http'
require 'json'
require 'uri'

token = "<SDO-token>"
keyword = URI.encode_www_form_component("laptop stands")
geocode = "US"
zipcode = "10001"
page = 1

url = URI("https://api.scrape.do/plugin/amazon/search?token=#{token}&keyword=#{keyword}&geocode=#{geocode}&zipcode=#{zipcode}&page=#{page}")

response = Net::HTTP.get(url)

puts JSON.pretty_generate(JSON.parse(response))
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class AmazonSearch {
    public static void main(String[] args) throws Exception {
        String token = "<SDO-token>";
        String keyword = URLEncoder.encode("laptop stands", "UTF-8");
        String geocode = "US";
        String zipcode = "10001";
        int page = 1;

        String url = String.format(
            "https://api.scrape.do/plugin/amazon/search?token=%s&keyword=%s&geocode=%s&zipcode=%s&page=%d",
            token, keyword, geocode, zipcode, page
        );

        HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
        conn.setRequestMethod("GET");

        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        StringBuilder response = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        reader.close();

        System.out.println(response.toString());
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;

class Program
{
    static async Task Main()
    {
        string token = "<SDO-token>";
        string keyword = HttpUtility.UrlEncode("laptop stands");
        string geocode = "US";
        string zipcode = "10001";
        int page = 1;

        string url = $"https://api.scrape.do/plugin/amazon/search?token={token}&keyword={keyword}&geocode={geocode}&zipcode={zipcode}&page={page}";

        using HttpClient client = new HttpClient();
        string response = await client.GetStringAsync(url);

        Console.WriteLine(response);
    }
}
<?php
$token = "<SDO-token>";
$keyword = urlencode("laptop stands");
$geocode = "US";
$zipcode = "10001";
$page = 1;

$url = "https://api.scrape.do/plugin/amazon/search?token={$token}&keyword={$keyword}&geocode={$geocode}&zipcode={$zipcode}&page={$page}";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo json_encode(json_decode($response), JSON_PRETTY_PRINT);
?>

Step 3: Receive Structured Search Results

The API returns a paginated list of products with all relevant details:

{
  "keyword": "laptop stands",
  "page": 1,
  "totalResults": "1-16 of over 10,000 results",
  "products": [
    {
      "asin": "B0C1HGKNG7",
      "title": "Adjustable Laptop Stand for Desk, Ergonomic Computer Riser...",
      "url": "https://www.amazon.com/dp/B0C1HGKNG7",
      "imageUrl": "https://m.media-amazon.com/images/I/71abc123.jpg",
      "price": {
        "currencyCode": "USD",
        "amount": 29.95
      },
      "rating": {
        "value": 4.6,
        "count": 9100,
        "stars": 5
      },
      "reviewCount": "(9.1K)",
      "isSponsored": false,
      "isPrime": true,
      "position": 1,
      "badge": "Overall Pick"
    },
    {
      "asin": "B0CBL1TQMP",
      "title": "Portable Laptop Stand, Foldable Aluminum Computer Holder...",
      "url": "https://www.amazon.com/dp/B0CBL1TQMP",
      "imageUrl": "https://m.media-amazon.com/images/I/61xyz789.jpg",
      "price": {
        "currencyCode": "USD",
        "amount": 18.99
      },
      "rating": {
        "value": 4.4,
        "count": 2340,
        "stars": 4
      },
      "reviewCount": "(2.3K)",
      "isSponsored": true,
      "isPrime": true,
      "position": 2,
      "badge": null
    },
    {
      "asin": "B0D7EXAMPLE",
      "title": "Heavy Duty Laptop Stand with Cooling Fan...",
      "url": "https://www.amazon.com/dp/B0D7EXAMPLE",
      "imageUrl": "https://m.media-amazon.com/images/I/51def456.jpg",
      "price": {
        "currencyCode": "USD",
        "amount": 45.99
      },
      "rating": {
        "value": 4.8,
        "count": 567,
        "stars": 5
      },
      "reviewCount": "(567)",
      "isSponsored": false,
      "isPrime": false,
      "position": 3,
      "badge": "Best Seller"
    }
  ],
  "status": "success",
  "errorMessage": null
}

Pagination

To get additional pages of results, increment the page parameter:

/plugin/amazon/search?token=...&keyword=laptop%20stands&geocode=us&zipcode=14217&page=2

The isSponsored field helps you distinguish between organic results and paid placements. The position field shows the exact ranking on the page.

Search keywords must be URL-encoded. Response is limited to a maximum of 4MB.