# Amazon Product Research API - Sales Estimates and Keyword Data (`nabeelbaghoor/amazon-product-research-api`) Actor

Amazon product research data from the Jungle Scout API: filter products by sales, revenue, price, rank and reviews, daily sales estimates per ASIN, related keywords with search volume and PPC bids, ASIN keyword ranks and brand share of voice. 10 marketplaces. Bring your own key.

- **URL**: https://apify.com/nabeelbaghoor/amazon-product-research-api.md
- **Developed by:** [Nabeel Hassan](https://apify.com/nabeelbaghoor) (community)
- **Categories:** E-commerce, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 product or keyword record returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Amazon Product Research API - Sales Estimates and Keyword Data

Pull Amazon product research data into your own tools: filter any of 10 Amazon marketplaces by monthly sales, revenue, price, rank and reviews, read daily sales estimates per ASIN, and research keywords with search volume, PPC bids and brand share of voice.

### What it collects

- **Product database**: filter the Amazon catalogue of one marketplace by category, title keywords or ASINs, price, net price after FBA fees, best seller rank, estimated monthly units sold and revenue, reviews, star rating, weight, number of sellers, listing quality score, seller type (Amazon, FBA, FBM), size tier and last update date. Each product row carries title, brand, category, breadcrumb path, price, estimated 30-day units sold and revenue, rank and subcategory ranks, rating and reviews, buy box owner, seller count, parent and variant ASINs, date first available, dimensions and weight, FBA, referral and closing fees, EAN, UPC, ISBN and GTIN lists, image URL and product URL.
- **Daily sales estimates**: estimated units sold and last known price for each day of a period, per ASIN, with daily revenue computed. Variant ASINs report their parent's totals.
- **Related keywords**: for a seed keyword, related search terms with exact and broad monthly search volume, 30 and 90 day trends, exact and broad PPC bids, Sponsored Brand bid, ease of ranking score, relevancy score, organic and sponsored product counts and dominant category.
- **Keywords an ASIN ranks for**: the search terms up to 10 ASINs appear for, with organic, sponsored and overall rank, and competitor ranks compared against the first ASIN.
- **Weekly search volume history**: exact match search volume for a keyword, week by week.
- **Brand share of voice**: which brands own a keyword's first three result pages, organic and sponsored, with the leading brand, suggested bid, 30-day search volume and click and conversion data for the top 3 ASINs.
- Marketplaces: US, UK, Germany, India, Canada, France, Italy, Spain, Mexico and Japan.
- Read only, pay per result, bring your own key.

### Input

| Field | What it does |
| --- | --- |
| What to read | Product database (default, needs no ASINs or keywords), daily sales estimates, related keywords, keywords an ASIN ranks for, weekly search volume history, or brand share of voice. |
| Amazon marketplace | us, uk, de, in, ca, fr, it, es, mx or jp. |
| ASINs or keywords | One per line. ASINs or product URLs for the ASIN services, keywords for the keyword services. |
| Categories | Root categories to keep, spelled as the marketplace lists them. |
| Title keywords or ASINs to include / exclude | Product database title and ASIN filters. |
| Seller types / Size tiers | Amazon, FBA, FBM; standard or oversize. |
| Minimum and maximum price, net price, rank, sales, revenue, reviews, rating, weight, sellers, listing quality score | Product database ranges. |
| Updated on or after / before | Product database refresh date range. |
| Sort products by / Sort keywords by | Sort order, such as highest monthly revenue or highest search volume first. |
| Keyword filters | Minimum and maximum exact and broad search volume, word count and organic product count. |
| Start date / End date | Period for sales estimates and search volume history. |
| Maximum results | Row cap for the run, 500 by default. |
| API key name / API key | Your own credential, as secret inputs. |

### FAQ

#### What is an Amazon product research API used for?

Finding products worth selling and keywords worth targeting, in bulk and on a schedule. An Amazon FBA seller pulls every Home & Kitchen product with 300 to 3,000 monthly sales, under 200 reviews and a price between 20 and 50 dollars into a spreadsheet each week. A brand aggregator tracks daily unit sales for a list of acquisition target ASINs. A PPC manager exports related keywords with exact search volume and suggested bids before building a Sponsored Products campaign. An agency checks which brands own the first three result pages for a client's main keyword.

#### Which data source does this actor read?

The Jungle Scout public REST API at developer.junglescout.com, through the six read routes in its published OpenAPI document: product database query, sales estimates query, keywords by keyword, keywords by ASIN, historical search volume and share of voice. Every row keeps the marketplace and the ASIN or keyword that produced it.

#### Do I need an API key?

Yes. This actor is bring-your-own-key and never ships one. Generate a key on the Developer page of your provider account; you get a key name and an API key, and the key is shown only once. Paste both into the input, or set the `DATA_API_KEY` environment secret as `KEY_NAME:API_KEY`. A missing key, a refused key or a key not enabled for the chosen marketplace ends the run cleanly with a message saying which it was.

#### How accurate are the sales and revenue estimates?

They are the provider's model estimates, not Amazon figures. Monthly units sold come from best seller rank history, and estimated 30-day revenue is units sold times price. Daily sales estimates for a variant ASIN are reported for its parent ASIN, which aggregates all variants.

#### Which categories can I filter by?

The root categories each marketplace lists, such as Home & Kitchen, Sports & Outdoors, Toys & Games, Pet Supplies or Beauty & Personal Care in the US, Küche, Haushalt & Wohnen in Germany or Cuisine & Maison in France. A category that is not in the marketplace's list is refused before any call, because the provider would otherwise return nothing without saying why.

#### What happens when there is nothing for an ASIN or keyword?

It becomes its own row with `found: false` and a note with the provider's own reason, such as an invalid ASIN or a keyword with no share of voice data. Those rows are never charged.

#### Can this actor change anything in my account?

No. The provider documents no write routes. Three routes are sent as POST because that is how the provider documents their query bodies; they only read. The key is sent only in the Authorization header and never appears in a row or the log.

#### How is it priced?

Pay per result with two prices. A product, a keyword or a keyword's share of voice is one rich record. A daily sales estimate or one week of search volume is one lighter time series point. Rows for ASINs or keywords that produced nothing are free. Your provider subscription applies separately.

### Example output

```json
{
  "service": "productDatabase",
  "serviceLabel": "Product database",
  "marketplace": "us",
  "requested": null,
  "found": true,
  "recordId": "us/B0EXAMPLE1",
  "asin": "B0EXAMPLE1",
  "title": "Stainless Steel Insulated Water Bottle, 32 oz",
  "brand": "ExampleBrand",
  "category": "Sports & Outdoors",
  "price": 24.99,
  "rating": 4.6,
  "reviews": 1873,
  "productRank": 1520,
  "approximate30DayUnitsSold": 2140,
  "approximate30DayRevenue": 53478.6,
  "listingQualityScore": 7,
  "numberOfSellers": 1,
  "sellerType": "FBA",
  "buyBoxOwner": "ExampleBrand Store",
  "fbaFee": 5.4,
  "referralFee": 3.75,
  "totalFees": 9.15,
  "productUrl": "https://www.amazon.com/dp/B0EXAMPLE1",
  "updatedAt": "2026-09-27",
  "retrievedAt": "2026-09-28T09:14:52.118Z",
  "note": null
}
```

Values are illustrative; every source field is one the provider documents.

### Keyword map

Amazon product research API, Amazon sales estimator, Amazon product database, Amazon sales data API, ASIN sales estimates, Amazon keyword research API, Amazon search volume, keyword PPC bid data, share of voice Amazon, FBA product research, best seller rank data, Amazon revenue estimates, Jungle Scout API.

# Actor input Schema

## `service` (type: `string`):

Product database queries the Amazon catalogue of one marketplace with the filters below and needs nothing else, so it is the default. Daily sales estimates reads estimated units sold and price per day for each ASIN. Related keywords expands each seed keyword. Keywords an ASIN ranks for lists the search terms up to 10 ASINs appear for. Weekly search volume history and brand share of voice read one keyword per line.

## `marketplace` (type: `string`):

The Amazon store to read. Your API key must be enabled for it.

## `identifiers` (type: `array`):

One per line. ASINs (or Amazon product URLs) for daily sales estimates and for keywords an ASIN ranks for (at most 10, compared against the first). Keywords for related keywords, weekly search volume history and brand share of voice. The product database reads none.

## `categories` (type: `array`):

Product database and related keywords: keep only these Amazon root categories, one per line, spelled as the marketplace lists them. US examples: Home & Kitchen, Kitchen & Dining, Sports & Outdoors, Toys & Games, Pet Supplies, Beauty & Personal Care, Health & Household, Electronics. Left empty, every category is searched.

## `includeKeywords` (type: `array`):

Product database: keep products whose title contains these words, or these exact ASINs. Up to 100 entries of up to 50 characters.

## `excludeKeywords` (type: `array`):

Product database: leave out products whose title contains these words, or these exact ASINs.

## `sellerTypes` (type: `array`):

Product database: keep products sold by these seller types. Left empty, all three are included.

## `productTiers` (type: `array`):

Product database: keep standard size or oversize products. Left empty, both are included.

## `excludeTopBrands` (type: `boolean`):

Product database: leave out the dominant brands, to find niches a new seller can enter.

## `excludeUnavailableProducts` (type: `boolean`):

Product database: leave out products that are currently unavailable.

## `minPrice` (type: `number`):

Product database: minimum. Last known price, in the marketplace currency.

## `maxPrice` (type: `number`):

Product database: maximum. Last known price, in the marketplace currency.

## `minNet` (type: `number`):

Product database: minimum. Price less FBA fees, in the marketplace currency.

## `maxNet` (type: `number`):

Product database: maximum. Price less FBA fees, in the marketplace currency.

## `minRank` (type: `integer`):

Product database: minimum. Best seller rank in the main category.

## `maxRank` (type: `integer`):

Product database: maximum. Best seller rank in the main category.

## `minSales` (type: `integer`):

Product database: minimum. Estimated monthly units sold.

## `maxSales` (type: `integer`):

Product database: maximum. Estimated monthly units sold.

## `minRevenue` (type: `number`):

Product database: minimum. Estimated monthly revenue, in the marketplace currency.

## `maxRevenue` (type: `number`):

Product database: maximum. Estimated monthly revenue, in the marketplace currency.

## `minReviews` (type: `integer`):

Product database: minimum. Number of reviews.

## `maxReviews` (type: `integer`):

Product database: maximum. Number of reviews.

## `minRating` (type: `number`):

Product database: minimum. Star rating, 1 to 5.

## `maxRating` (type: `number`):

Product database: maximum. Star rating, 1 to 5.

## `minWeight` (type: `number`):

Product database: minimum. Weight in pounds.

## `maxWeight` (type: `number`):

Product database: maximum. Weight in pounds.

## `minSellers` (type: `integer`):

Product database: minimum. Number of sellers (FBA, FBM and Amazon together).

## `maxSellers` (type: `integer`):

Product database: maximum. Number of sellers (FBA, FBM and Amazon together).

## `minLqs` (type: `number`):

Product database: minimum. Listing quality score, 1 to 10.

## `maxLqs` (type: `number`):

Product database: maximum. Listing quality score, 1 to 10.

## `minUpdatedAt` (type: `string`):

Product database: keep products whose data was refreshed on or after this date (YYYY-MM-DD).

## `maxUpdatedAt` (type: `string`):

Product database: keep products whose data was refreshed on or before this date (YYYY-MM-DD).

## `productSort` (type: `string`):

Product database: sort order. A leading minus sorts descending, so -revenue puts the highest estimated monthly revenue first. Left blank, the provider sorts by name.

## `keywordSort` (type: `string`):

Related keywords and keywords an ASIN ranks for: sort order. Left blank, the provider sorts by exact match monthly search volume, highest first.

## `minSearchVolumeExact` (type: `integer`):

Related keywords and keywords an ASIN ranks for: minimum exact match monthly search volume.

## `maxSearchVolumeExact` (type: `integer`):

Related keywords and keywords an ASIN ranks for: maximum exact match monthly search volume.

## `minSearchVolumeBroad` (type: `integer`):

Related keywords and keywords an ASIN ranks for: minimum broad match monthly search volume.

## `maxSearchVolumeBroad` (type: `integer`):

Related keywords and keywords an ASIN ranks for: maximum broad match monthly search volume.

## `minWordCount` (type: `integer`):

Related keywords and keywords an ASIN ranks for: minimum number of words in the keyword.

## `maxWordCount` (type: `integer`):

Related keywords and keywords an ASIN ranks for: maximum number of words in the keyword.

## `minOrganicProductCount` (type: `integer`):

Related keywords and keywords an ASIN ranks for: minimum number of organic products shown for the keyword.

## `maxOrganicProductCount` (type: `integer`):

Related keywords and keywords an ASIN ranks for: maximum number of organic products shown for the keyword.

## `includeVariants` (type: `boolean`):

Keywords an ASIN ranks for: also count the ranking of the ASINs' variants. Can return many more keywords.

## `startDate` (type: `string`):

Daily sales estimates and weekly search volume history: first day of the period, as YYYY-MM-DD. Left blank, 30 days (sales) or 90 days (search volume) before the end date.

## `endDate` (type: `string`):

Daily sales estimates and weekly search volume history: last day of the period, as YYYY-MM-DD, before today. Left blank, yesterday.

## `maxResults` (type: `integer`):

Stop after this many rows across the whole run.

## `requestsPerMinute` (type: `integer`):

Pacing ceiling for calls to the provider, whose documented limit is 300 per minute per account. Rate limited answers are retried after the wait the provider names.

## `apiKeyName` (type: `string`):

The name you gave the key when you generated it on the Developer page of your provider account. Leave blank if you give the key as KEY\_NAME:API\_KEY below or in the DATA\_API\_KEY secret.

## `apiKey` (type: `string`):

Your own API key, shown once when it is generated on the Developer page of your provider account. This actor is bring-your-own-key and never ships one. Leave blank to use the DATA\_API\_KEY environment secret (KEY\_NAME:API\_KEY). It is sent only in the Authorization header and never written to a row or the log.

## `apiType` (type: `string`):

The X-API-Type header: junglescout for standard accounts, cobalt for Enterprise accounts.

## `baseUrl` (type: `string`):

Override the host the actor calls. Only useful for testing against a different environment.

## Actor input object example

```json
{
  "service": "productDatabase",
  "marketplace": "us",
  "excludeTopBrands": false,
  "excludeUnavailableProducts": false,
  "includeVariants": true,
  "maxResults": 500,
  "requestsPerMinute": 60,
  "apiType": "junglescout"
}
```

# Actor output Schema

## `records` (type: `string`):

One row per product, per ASIN and day, per keyword, or per keyword and week, alongside the input that produced it.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("nabeelbaghoor/amazon-product-research-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("nabeelbaghoor/amazon-product-research-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call nabeelbaghoor/amazon-product-research-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nabeelbaghoor/amazon-product-research-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dn0ENHr6MdNWrcIS4/builds/ZSdq4MJG96OdZFyjR/openapi.json
