# Amazon Keyword Research - Autocomplete & Search Volume Tool (`seemuapps/amazon-keyword-research`) Actor

Find Amazon keywords from autocomplete with A-Z expansion, result counts per keyword and reverse-ASIN page-1 rank checks across 22 Amazon marketplaces.

- **URL**: https://apify.com/seemuapps/amazon-keyword-research.md
- **Developed by:** [Seemu Scraping](https://apify.com/seemuapps) (community)
- **Stats:** 4 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 keywords

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 Keyword Research - Autocomplete & Search Volume Tool

Find the keywords Amazon shoppers actually type. Enter a seed keyword like "yoga mat" and get hundreds of long-tail Amazon search terms from the search-box autocomplete, ranked by how prominently Amazon suggests them, with optional search result counts and reverse-ASIN rank checks. Works on 22 Amazon marketplaces, no login and no seller account needed.

### What you get

For every keyword, one clean dataset row:

- **keyword** and the **seedKeyword** it came from
- **marketplace** and **domain** (amazon.com, amazon.co.uk, amazon.de, ...)
- **source** (`seed` or `autocomplete`), **expansionType** (`seed`, `suffix-a-z`, `suffix-0-9`, `prefix-a-z`, `modifier`) and the **expansion** letter or word that surfaced it
- **suggestionRank**: position in the autocomplete dropdown (1 = top), plus **bestRank** across all expansions
- **timesSuggested** and **autocompleteScore**: how often and how high Amazon suggests the phrase across every expansion query. A higher score means Amazon pushes the phrase harder, which is a useful relative demand signal
- **wordCount** and **containsSeed** for quick long-tail filtering
- **refTag**, **strategyId**, **candidateSources**: Amazon's own autocomplete metadata
- **resultCount** (optional): the exact number of products Amazon returns for the keyword, plus **resultCountText** as displayed, e.g. "1-48 of over 8,000 results"
- **correctedKeyword**: set when Amazon rewrites the search to a different phrase
- **asinRanks**, **bestOrganicRank** and **topOrganicAsins** (optional reverse-ASIN mode): where your products appear in the top organic results for each keyword (organic and sponsored), plus the competing ASINs in rank order
- **searchUrl**: a direct link to the Amazon search results page

Keywords are deduplicated across all expansions and seeds, so each phrase appears once. Export to JSON, CSV, Excel or Google Sheets from the Apify console.

### Use cases

- **Amazon SEO and listing optimization**: find the exact phrases to put in titles, bullet points and backend search terms
- **Amazon PPC keyword research**: build exact-match and phrase-match keyword lists for Sponsored Products campaigns
- **Product research and niche finding**: compare result counts to spot keywords with real shopper interest and fewer competing products
- **Reverse ASIN and rank tracking**: check which keywords your product (or a competitor's) ranks for on page 1
- **International expansion**: research keywords in the local language of each Amazon marketplace

### How to use

1. Enter one or more **Seed keywords** (e.g. "yoga mat", "coffee grinder").
2. Pick the **Amazon store** (United States, United Kingdom, Germany, Japan, India, ...).
   Optional: pick a **Shopper country** to see the store as a shopper in another country would, e.g. amazon.com seen from Canada. Leave it empty to use the store's own country.
3. Choose a **Keyword expansion**:
   - **None**: only the ~10 suggestions for the seed itself
   - **A-Z**: the seed followed by every letter, about 150-250 keywords per seed
   - **A-Z + 0-9**: adds numbers, good for sizes and model numbers
   - **Buyer and question modifiers**: "best", "cheap", "how to", "for", "with", "vs", ... in the marketplace language
   - **All**: letters before and after the seed, numbers and modifiers, often 300-500 keywords per seed
4. Set **Max keywords per seed** (default 200, 0 = no limit). The strongest suggestions are kept first.
5. Optional: turn on **Include search result count** to get the number of products Amazon returns per keyword.
6. Optional: add your **ASINs** (or product URLs) to see where they rank for each keyword. **Rank depth** sets how many organic results to check (default 20, up to 48 = the whole first page). All ASINs are checked on the same page, so adding more ASINs does not cost more.
7. Run the actor. Results appear in the **Dataset** tab.

### Output example

```json
{
  "keyword": "yoga mat thick",
  "seedKeyword": "yoga mat",
  "marketplace": "US",
  "domain": "amazon.com",
  "department": "aps",
  "source": "autocomplete",
  "expansionType": "seed",
  "expansion": null,
  "query": "yoga mat",
  "suggestionRank": 2,
  "bestRank": 1,
  "timesSuggested": 2,
  "autocompleteScore": 19,
  "wordCount": 3,
  "containsSeed": true,
  "refTag": "nb_sb_ss_i_2_8",
  "strategyId": "organic",
  "candidateSources": "local",
  "resultCount": 8958,
  "resultCountText": "1-48 of over 8,000 results",
  "resultCountStatus": "ok",
  "correctedKeyword": null,
  "lookupCountry": "US",
  "asinRanks": null,
  "bestOrganicRank": null,
  "rankDepth": null,
  "organicResultsScanned": null,
  "topOrganicAsins": null,
  "searchUrl": "https://www.amazon.com/s?k=yoga+mat+thick",
  "fetchedAt": "2026-10-06T09:00:00.000Z",
  "notice": null
}
```

With ASINs set, `asinRanks` lists each ASIN with `found`, `organicRank` (position among organic results), `overallRank` (position among all product slots, ads included) and `sponsored` (true when it appears in an ad slot). `topOrganicAsins` lists the organic results checked, in order, so you can also see who you compete with.

### About search volume and result counts

Amazon does not publish monthly search volume. This tool gives you two honest signals instead:

- **autocompleteScore / timesSuggested**: Amazon ranks autocomplete suggestions by what shoppers search for, so phrases that are suggested often and near the top are the ones shoppers type most. Use it to compare keywords against each other, not as an absolute monthly number.
- **resultCount**: how many products compete for the keyword. It is a competition and market-size signal, not search volume.

Amazon tailors results and rankings to the shopper's delivery country. Stores such as amazon.co.uk, .de, .fr, .it, .es, .co.jp, .com.au and .in show foreign visitors a different, international-shipping catalogue, so for those stores every lookup runs with a local, in-country shopping session. Other stores show the same ranking to everyone, and `lookupCountry` tells you where each lookup was made from. Counts and ranks naturally move a little from one search to the next, even for the same shopper.

### Supported marketplaces

United States, Canada, Mexico, Brazil, United Kingdom, Germany, France, Italy, Spain, Netherlands, Sweden, Poland, Belgium, Ireland, Turkey, United Arab Emirates, Saudi Arabia, Egypt, India, Japan, Singapore and Australia.

### Departments

Leave **Department code** as `aps` (All departments) or enter a department code to scope suggestions and searches, e.g. `stripbooks`, `electronics`, `beauty`, `sporting`, `toys-and-games` or `pets` on amazon.com. Other stores use their own codes, e.g. `sports`, `toys` or `baby` on amazon.co.uk. If a code is not recognized, the actor falls back to All departments and tells you in the log.

### Pricing

You pay per result:

- **Keyword result**: each keyword row in the dataset
- **Result count**: each keyword with a search result count (only when the option is on)
- **ASIN rank check**: each keyword checked for your ASINs on amazon.com, .ca, .com.mx, .com.br, .nl, .se, .pl, .com.be, .ie, .com.tr, .ae, .sa, .eg and .sg (replaces the result count charge for that keyword, the count is included)
- **ASIN rank check (international)**: the same check on amazon.co.uk, .de, .fr, .it, .es, .co.jp, .com.au and .in, which need a local in-country shopping session, and on any store when a different **Shopper country** is set

One rank check covers all your ASINs for that keyword.

Rows that only carry a notice (e.g. a typo in the input or no suggestions found) are free. Set a maximum cost per run in the run options to cap your spend.

### FAQ

**Do I need an Amazon account or API key?** No. Everything comes from Amazon's public storefront.

**Why do some keywords not contain my seed?** Amazon's autocomplete also suggests related phrases (brands, synonyms). Filter on `containsSeed` if you only want exact long-tails.

**Why is a result count missing?** If Amazon is temporarily unavailable for a keyword, the row is still returned with `resultCountStatus: "failed"` and you are not charged for the count.

**Can I see a store the way shoppers in another country see it?** Yes. Set **Shopper country**, e.g. amazon.com with Canada. Result counts and ASIN ranks then reflect what a Canadian shopper sees (only products that ship to Canada), and `lookupCountry` shows CA. Autocomplete suggestions always come from the store itself.

**Can I check competitor products?** Yes. Put any ASINs in the ASIN field to see where they rank on page 1 for each keyword.

# Actor input Schema

## `keywords` (type: `array`):

One or more seed keywords, e.g. 'yoga mat'. Each seed is expanded into the long-tail phrases Amazon shoppers see in the search box.

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

Amazon store to research. Suggestions and result counts come from that store, in its own language.

## `shopperCountry` (type: `string`):

Optional. See results, ranks and result counts as a shopper located in this country would (e.g. amazon.com seen from Canada). Leave empty to use the store's own country.

## `expansion` (type: `string`):

How far to expand each seed. A-Z types the seed followed by every letter ('yoga mat a', 'yoga mat b', ...). Modifiers add buyer-intent and question words in the marketplace language ('best', 'how to', 'for', 'with', ...). All combines everything, including letters before the seed.

## `maxKeywords` (type: `integer`):

Maximum keyword rows returned for each seed, strongest suggestions first. 0 = no limit.

## `includeResultCount` (type: `boolean`):

Also look up how many products Amazon returns for each keyword (e.g. '1-48 of over 8,000 results', plus the exact count). This is a competition signal, not monthly search volume. Billed as a separate event per keyword looked up.

## `asins` (type: `array`):

Optional. Up to 10 ASINs or product URLs. For every keyword the actor checks the top organic search results (see Rank depth) and reports where each ASIN ranks, organic and sponsored. All ASINs are checked on the same page, so a keyword costs one rank check however many ASINs you add. Turns on result counts automatically and is billed per keyword checked instead of the result-count event.

## `rankDepth` (type: `integer`):

How many organic (non-sponsored) page-1 results to check for your ASINs. 20 covers the positions that get most clicks; 48 checks the whole first page. Sponsored slots seen above that depth are reported too.

## `asinMatchesOnly` (type: `boolean`):

With ASINs set, drop keywords where none of your ASINs appear on page 1. Dropped keywords are not billed as keyword results, but the rank check itself still is.

## `department` (type: `string`):

Optional. Scope suggestions and searches to one department. 'aps' = All departments. amazon.com examples: stripbooks, electronics, fashion, beauty, hpc, kitchen, garden, lawngarden, sporting, toys-and-games, pets, baby-products, automotive, tools, office-products, grocery, videogames. Other stores use their own codes (e.g. 'sports', 'toys', 'baby' on amazon.co.uk). Unknown codes fall back to All departments.

## Actor input object example

```json
{
  "keywords": [
    "yoga mat"
  ],
  "marketplace": "US",
  "shopperCountry": "",
  "expansion": "a-z",
  "maxKeywords": 200,
  "includeResultCount": false,
  "asins": [],
  "rankDepth": 20,
  "asinMatchesOnly": false,
  "department": "aps"
}
```

# Actor output Schema

## `results` (type: `string`):

Fields: keyword, seedKeyword, marketplace, source, expansionType, expansion, suggestionRank, timesSuggested, autocompleteScore, resultCount, resultCountText, lookupCountry, asinRanks, bestOrganicRank, topOrganicAsins, searchUrl.

## `summary` (type: `string`):

SUMMARY record in the default key-value store: query counts, lookups, duplicates skipped.

# 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 = {
    "keywords": [
        "yoga mat"
    ],
    "asins": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/amazon-keyword-research").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 = {
    "keywords": ["yoga mat"],
    "asins": [],
}

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/amazon-keyword-research").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 '{
  "keywords": [
    "yoga mat"
  ],
  "asins": []
}' |
apify call seemuapps/amazon-keyword-research --silent --output-dataset

```

## MCP server setup

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

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/rgO850MEwYqnqsWY5/builds/ddIz9KMR2ZmXIgFVc/openapi.json
