Nimbryxo Studio

Amazon Best Sellers & Rankings Scraper

Scrape Amazon's Best Sellers, New Releases, Most Wished For, Most Gifted and Movers & Shakers charts. Get rank, ASIN, title, price, rating and category for every product on a chart, with optional deeper category coverage.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
chartTypestringrequiredWhich Amazon chart to scrape.
domainstringoptionalWhich Amazon marketplace to scrape the chart from.
categoryUrlsarrayoptionalAmazon category slugs (e.g. `electronics`, `electronics/172541`) or full chart URLs to scrape. Each entry is combined with `chartType` and `domain` to build the chart page.
Show all input fields
FieldTypeRequiredDescription
chartTypestringrequiredWhich Amazon chart to scrape.
domainstringoptionalWhich Amazon marketplace to scrape the chart from.
categoryUrlsarrayoptionalAmazon category slugs (e.g. `electronics`, `electronics/172541`) or full chart URLs to scrape. Each entry is combined with `chartType` and `domain` to build the chart page.
categoryNodeIdsarrayoptionalAmazon browse-node IDs in `rootSlug/nodeId` form (e.g. `electronics/172541` for Headphones). Combined with `categoryUrls` if both are provided.
maxDepthintegeroptionalWhen > 0, also walk each category's left-nav subcategory links this many levels deep, scraping each subcategory's own chart too. 0 = only the given categories.
startPageintegeroptionalFirst chart page to fetch (each page is a separate ranked page on Amazon's site, not a fixed rank count).
maxPagesintegeroptionalMaximum number of chart pages to fetch per category, starting at `startPage`.
maxItemsPerCategoryintegeroptionalHard cap on chart items emitted per category (across all its pages).
maxItemsintegeroptionalHard cap on total chart items emitted across all categories in this run.
includeProductDetailsbooleanoptionalFor each chart item, also fetch its product detail page for purchase-option and additional rating data. Slower and bounded by `maxProductDetails`.
maxProductDetailsintegeroptionalHard cap on how many chart items get product-detail enrichment when `includeProductDetails` is on.
proxyConfigurationobjectoptionalApify proxy used to fetch chart pages. Datacenter (AUTO) is used by default and works for most requests; the actor escalates to residential only after repeated blocks on a session.

Download the published input schema

View complete JSON
{
  "description": "Scrape Amazon's Best Sellers, New Releases, Most Wished For, Most Gifted, or Movers & Shakers charts for one or more categories.",
  "properties": {
    "categoryNodeIds": {
      "default": [],
      "description": "Amazon browse-node IDs in `rootSlug/nodeId` form (e.g. `electronics/172541` for Headphones). Combined with `categoryUrls` if both are provided.",
      "editor": "stringList",
      "prefill": [],
      "title": "Category node IDs",
      "type": "array"
    },
    "categoryUrls": {
      "default": [
        "electronics"
      ],
      "description": "Amazon category slugs (e.g. `electronics`, `electronics/172541`) or full chart URLs to scrape. Each entry is combined with `chartType` and `domain` to build the chart page.",
      "editor": "stringList",
      "prefill": [
        "electronics"
      ],
      "title": "Category URLs or slugs",
      "type": "array"
    },
    "chartType": {
      "default": "bestSellers",
      "description": "Which Amazon chart to scrape.",
      "editor": "select",
      "enum": [
        "bestSellers",
        "newReleases",
        "mostWishedFor",
        "mostGifted",
        "moversAndShakers"
      ],
      "enumTitles": [
        "Best Sellers",
        "New Releases",
        "Most Wished For",
        "Most Gifted",
        "Movers & Shakers"
      ],
      "prefill": "bestSellers",
      "title": "Chart type",
      "type": "string"
    },
    "domain": {
      "default": "amazon.com",
      "description": "Which Amazon marketplace to scrape the chart from.",
      "editor": "select",
      "enum": [
        "amazon.com",
        "amazon.co.uk",
        "amazon.de",
        "amazon.fr",
        "amazon.it",
        "amazon.es",
        "amazon.ca",
        "amazon.com.au",
        "amazon.co.jp",
        "amazon.in",
        "amazon.com.br",
        "amazon.com.mx",
        "amazon.nl",
        "amazon.se",
        "amazon.pl",
        "amazon.com.tr",
        "amazon.ae",
        "amazon.sa",
        "amazon.sg",
        "amazon.eg"
      ],
      "enumTitles": [
        "United States (amazon.com)",
        "United Kingdom (amazon.co.uk)",
        "Germany (amazon.de)",
        "France (amazon.fr)",
        "Italy (amazon.it)",
        "Spain (amazon.es)",
        "Canada (amazon.ca)",
        "Australia (amazon.com.au)",
        "Japan (amazon.co.jp)",
        "India (amazon.in)",
        "Brazil (amazon.com.br)",
        "Mexico (amazon.com.mx)",
        "Netherlands (amazon.nl)",
        "Sweden (amazon.se)",
        "Poland (amazon.pl)",
        "Turkey (amazon.com.tr)",
        "UAE (amazon.ae)",
        "Saudi Arabia (amazon.sa)",
        "Singapore (amazon.sg)",
        "Egypt (amazon.eg)"
      ],
      "prefill": "amazon.com",
      "title": "Amazon domain",
      "type": "string"
    },
    "includeProductDetails": {
      "default": false,
      "description": "For each chart item, also fetch its product detail page for purchase-option and additional rating data. Slower and bounded by `maxProductDetails`.",
      "prefill": false,
      "title": "Enrich with product detail page",
      "type": "boolean"
    },
    "maxDepth": {
      "default": 0,
      "description": "When > 0, also walk each category's left-nav subcategory links this many levels deep, scraping each subcategory's own chart too. 0 = only the given categories.",
      "maximum": 3,
      "minimum": 0,
      "prefill": 0,
      "title": "Subcategory recursion depth",
      "type": "integer"
    },
    "maxItems": {
      "default": 200,
      "description": "Hard cap on total chart items emitted across all categories in this run.",
      "maximum": 2000,
      "minimum": 1,
      "prefill": 20,
      "title": "Max total items",
      "type": "integer"
    },
    "maxItemsPerCategory": {
      "default": 60,
      "description": "Hard cap on chart items emitted per category (across all its pages).",
      "maximum": 500,
      "minimum": 1,
      "prefill": 20,
      "title": "Max items per category",
      "type": "integer"
    },
    "maxPages": {
      "default": 2,
      "description": "Maximum number of chart pages to fetch per category, starting at `startPage`.",
      "maximum": 20,
      "minimum": 1,
      "prefill": 2,
      "title": "Max pages per category",
      "type": "integer"
    },
    "maxProductDetails": {
      "default": 10,
      "description": "Hard cap on how many chart items get product-detail enrichment when `includeProductDetails` is on.",
      "maximum": 100,
      "minimum": 1,
      "prefill": 5,
      "title": "Max product detail fetches",
      "type": "integer"
    },
    "proxyConfiguration": {
      "default": {
        "useApifyProxy": true
      },
      "description": "Apify proxy used to fetch chart pages. Datacenter (AUTO) is used by default and works for most requests; the actor escalates to residential only after repeated blocks on a session.",
      "editor": "proxy",
      "prefill": {
        "useApifyProxy": true
      },
      "title": "Proxy configuration",
      "type": "object"
    },
    "startPage": {
      "default": 1,
      "description": "First chart page to fetch (each page is a separate ranked page on Amazon's site, not a fixed rank count).",
      "maximum": 20,
      "minimum": 1,
      "prefill": 1,
      "title": "Start page",
      "type": "integer"
    }
  },
  "required": [
    "chartType"
  ],
  "schemaVersion": 1,
  "title": "Amazon Best Sellers & Rankings Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
chartItemsstringoptionalDataset containing all scraped Amazon chart items and chart-metadata records.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Ranked chart items from Amazon's Best Sellers, New Releases, Most Wished For, Most Gifted, and Movers & Shakers pages -- rank, ASIN, title, price, rating, and category.",
  "properties": {
    "chartItems": {
      "description": "Dataset containing all scraped Amazon chart items and chart-metadata records.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Amazon chart items",
      "type": "string"
    }
  },
  "title": "Amazon Best Sellers & Rankings Scraper Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Chart items",
      "transformation": {
        "fields": [
          "rank",
          "asin",
          "title",
          "chartType",
          "category",
          "price",
          "rating",
          "ratingsCount",
          "url"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Amazon Best Sellers & Rankings Scraper

Scrape Amazon's chart family -- Best Sellers, New Releases, Most Wished For, Most Gifted, and Movers & Shakers -- for any category on any Amazon marketplace. Get rank, ASIN, title, price, rating, and category for every product Amazon currently exposes on a chart, with optional recursion into subcategories and optional product-detail enrichment.

What this actor does

  • Five chart types: Best Sellers, New Releases, Most Wished For, Most Gifted, Movers & Shakers
  • Any category: pass a category slug (electronics), a slug + browse-node ID (electronics/172541), or paste a full Amazon chart URL
  • Category-tree recursion: optionally walk each category's subcategory links up to a configurable depth, scraping every subcategory's own chart too
  • 20 Amazon marketplaces: amazon.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .co.jp, .in, .com.br, .com.mx, .nl, .se, .pl, .com.tr, .ae, .sa, .sg, .eg
  • Honest empty-chart handling: Movers & Shakers legitimately has no items for many categories -- the actor emits a clear chart-metadata record instead of silently returning zero items or substituting unrelated products
  • Empty fields are omitted

Output per chart item

  • rank -- position on the chart
  • asin -- Amazon Standard Identification Number
  • title, url, image
  • price -- {value, currency, display} (only emitted when Amazon shows an explicit price)
  • stars, reviewsCount
  • badge -- e.g. BestSeller, AmazonsChoice (only when Amazon shows one)
  • format -- format/variant summary, e.g. "Paperback" or "4 formats available" (books/media charts only, when Amazon's card shows one)
  • chartType, category, categoryNodeId, categoryUrl, page
  • rankChangeDirection, rankChangeAmount -- Movers & Shakers only, and only when Amazon's own rank-change marker is present
  • listPrice, inStock -- only when includeProductDetails is enabled, and only when the product's own detail page shows explicit crossed-out list-price or in-stock/out-of-stock evidence (never inferred)
  • childCategories -- sibling/child category links {name, path, url, nodeId} from the chart page's own category nav, when present (e.g. "Camera & Photo", "Computers & Accessories" under Electronics)
  • recordType: "chartItem", scrapedAt

Output: chart metadata record

Emitted once per category when a chart is empty or a page cannot be loaded, instead of returning zero items silently:

  • chartType, category, categoryNodeId, categoryUrl, domain
  • extractedItemCount -- how many items were actually extracted (0 for an empty/failed chart)
  • message -- human-readable explanation (e.g. "No items currently available for this chart/category.")
  • recordType: "chartMetadata", scrapedAt

Input

Field Type Default Description
chartType string bestSellers bestSellers / newReleases / mostWishedFor / mostGifted / moversAndShakers
domain string amazon.com Which Amazon marketplace to scrape
categoryUrls array ["electronics"] Category slugs, slug/nodeId pairs, or full chart URLs
categoryNodeIds array [] Additional rootSlug/nodeId entries
maxDepth int 0 Subcategory recursion depth (0-3)
startPage int 1 First chart page to fetch
maxPages int 2 Max chart pages to fetch per category
maxItemsPerCategory int 60 Hard cap on items per category
maxItems int 200 Hard cap on total items across the run
includeProductDetails boolean false Enrich items with product-detail-page data
maxProductDetails int 10 Cap on product-detail fetches when enabled
proxyConfiguration object AUTO Apify proxy (datacenter by default)

Example: Best Sellers in Electronics

{
  "chartType": "bestSellers",
  "categoryUrls": ["electronics"],
  "maxItems": 50
}

Example: New Releases for a specific subcategory (Headphones)

{
  "chartType": "newReleases",
  "categoryUrls": ["electronics/172541"],
  "maxItems": 30
}

Example: recurse a whole department's subcategories

{
  "chartType": "bestSellers",
  "categoryUrls": ["electronics"],
  "maxDepth": 2,
  "maxItemsPerCategory": 20,
  "maxItems": 500
}

Example: Movers & Shakers on the UK marketplace

{
  "chartType": "moversAndShakers",
  "domain": "amazon.co.uk",
  "categoryUrls": ["electronics"]
}

Use cases

  • Market research -- track which products dominate a category's chart over time
  • Competitive intelligence -- monitor a competitor's category ranking and pricing
  • Trend spotting -- New Releases and Movers & Shakers surface emerging products before they're widely known
  • Gift-guide content -- Most Gifted and Most Wished For power seasonal buying-guide content
  • Category research -- recurse a department's full subcategory tree to map an entire vertical's top products

FAQ

Is this actor affiliated with Amazon? No. This is a third-party actor that scrapes Amazon's public chart pages.

Does the actor guarantee "Top 100" for every category? No. The actor extracts all chart items Amazon currently exposes up to your maxPages/maxItemsPerCategory limits in a single session. Amazon's own pagination does not reliably expose a fixed rank count on every category, so the actor never claims a guaranteed top-N -- check extractedItemCount on the chart-metadata record to see how many items were actually found.

Why is Movers & Shakers sometimes empty? Amazon itself frequently has no movers-and-shakers data for a given category at a given time -- this is a real, documented state on Amazon's own site, not a scraper bug. The actor emits a chart-metadata record explaining this instead of guessing or substituting unrelated recommended products.

Why do some items have no price or rating? Amazon only shows these when they exist on the chart card. The actor never fabricates a price or rating -- if the field is missing, it's omitted from the record entirely.

How is rank different from position across separate runs? rank reflects Amazon's own displayed chart position at scrape time. The actor holds no state between runs, so rankChangeDirection/rankChangeAmount (Movers & Shakers only) are populated strictly from Amazon's own rank-change marker on the page, never inferred by comparing separate runs.

Does the actor need a proxy? No -- it uses Apify's free AUTO (datacenter) proxy by default, which works for the large majority of requests. If a session gets repeatedly blocked, the actor automatically escalates to a residential proxy session as a fallback.

Can I scrape a whole department's subcategories in one run? Yes -- set maxDepth to 1-3 and the actor walks each category's subcategory links (visible in Amazon's own left-nav) that many levels deep, scraping each subcategory's own chart.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build ERhYC4a3fFU4C7GYC. Documentation is regenerated from the default published build; private drafts are not included.