Amazon Keywords Discovery Tool avatar

Amazon Keywords Discovery Tool

Pricing

from $2.99 / 1,000 keyword discoveries

Go to Apify Store
Amazon Keywords Discovery Tool

Amazon Keywords Discovery Tool

Discover source-backed public Amazon autocomplete suggestions for seed keywords with marketplace, locale, filtering, serialized pacing, and provenance controls.

Pricing

from $2.99 / 1,000 keyword discoveries

Rating

0.0

(0)

Developer

w3crawler

w3crawler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Amazon Keyword Discovery Scraper

What does Amazon Keyword Discovery Scraper do?

Amazon Keyword Discovery Scraper discovers public Amazon autocomplete phrases and enriches each keyword with data from its public Amazon search page. Each output row keeps the autocomplete provenance and can also include result-count metadata, related searches, pagination information, and a bounded list of product cards.

The structured autocomplete response is the primary source. The search-page layer is a public HTML/DOM-style fallback enrichment step based on the same keyword URL that a user would open in Amazon. It does not log in, submit orders, access private pages, or attempt to bypass CAPTCHA, paywalls, regional restrictions, or other access controls.

Why use Amazon Keyword Discovery Scraper?

  • Discover keywords from one seed or a bounded list of seeds.
  • Expand seeds with A-Z and 0-9 suffix queries.
  • Apply include and exclude keyword filters before records are written.
  • Sort keywords by source order, alphabetically, or normalized length.
  • Get a rich record for each keyword rather than only a phrase string.
  • Capture public result counts, related searches, next-page URLs, and top product details.
  • Choose the Amazon marketplace, product sort, price bounds, page limit, product limit, and enrichment request cap.
  • Use bounded concurrency, pacing, retries, timeouts, and dataset batching.

What data can Amazon Keyword Discovery Scraper collect?

Each record includes the autocomplete context and stable derived keyword metrics. When search enrichment is enabled and the public page is available, the same record also contains search-page and product-card fields. Optional values are omitted when Amazon does not expose them; the Actor never substitutes fabricated values.

FieldTypeDescription
idstringStable identifier made from the marketplace and normalized keyword.
keywordstringSuggestion text returned by Amazon autocomplete.
normalizedKeywordstringLocale-normalized value used for deduplication and sorting.
keywordLengthintegerUnicode character count of the keyword.
keywordWordCountintegerWhitespace-delimited word count.
positionintegerOne-based position in the final sorted dataset.
seedKeywordstringSeed phrase that produced the autocomplete query.
seedIndexintegerOne-based seed index.
queriedPhrasestringExact autocomplete phrase submitted to Amazon.
queryIndexintegerOne-based expansion query index for the seed.
queryTypeenumseed or append_character.
expansionCharacterstringA-Z or 0-9 suffix used by an expansion query, when applicable.
sourceRankintegerOne-based rank in the autocomplete response.
marketplacestringAmazon host selected for the run.
marketplaceIdstringAmazon public marketplace identifier.
localestringLanguage and normalization locale.
searchUrlURLPublic Amazon search URL, including configured sort and price bounds.
sourcestringStable provenance value: Amazon public autocomplete.
searchSortByenumProduct ordering requested for search-page enrichment.
searchMinPricenumberOptional lower product-price bound.
searchMaxPricenumberOptional upper product-price bound.
searchEnrichmentStatusenumenriched, partial, not_requested, unavailable, or blocked.
searchPagesScrapedintegerNumber of public result pages successfully parsed.
searchHasNextPagebooleanWhether the last parsed page advertises another page.
searchPageTitlestringHTML title from the public result page, when available.
searchResultCountintegerApproximate result count displayed by Amazon.
searchResultCountTextstringResult-count text displayed by Amazon.
searchHasNoResultsbooleanWhether Amazon explicitly reports that the query matched no products.
searchPageStatusCodeintegerValidated HTTP status for a parsed result page.
searchNextPageUrlURLPublic URL advertised by the last parsed result page.
relatedQueriesstring arrayRelated-search phrases exposed on the result page.
topProductsobject arrayBounded product-card data from the result page.
searchEnrichmentScrapedAtdate-timeTime at which page enrichment completed.
searchEnrichmentFailureCategorystringSafe category explaining an unavailable enrichment request.
scrapedAtdate-timeTime at which the autocomplete record was normalized.

Each topProducts object can contain:

FieldTypeDescription
positionintegerPosition within the combined product list.
pageNumberintegerAmazon result-page number.
asinstringProduct ASIN from the public result card.
titlestringProduct title.
urlURLPublic Amazon product URL.
imageUrlURLProduct image URL when exposed.
pricenumberParsed numeric price when exposed.
currencystringCurrency marker or code when exposed.
priceTextstringDisplayed price text.
ratingnumberRating on the 0-5 scale.
reviewCountintegerParsed review count.
isSponsoredbooleanWhether the card is marked sponsored.
badgestringAmazon badge such as Amazon's Choice or Best Seller.
boughtInPastMonthstringPublic bought-in-past-month text.
offerCountTextstringPublic offer-count text.
availabilitystringPublic availability or delivery text.

The samples/sample-record.json comes from a bounded local Actor run on 2026-09-26. It contains 32 populated fields, a result count, and five product cards from Amazon's public response. Chrome may show additional cards or related searches that are not present in the Actor's HTTP response; the Actor does not infer values that its response does not expose.

How to scrape Amazon

The Actor first requests Amazon's public completion endpoint and validates status code, final origin, JSON content type, response size, challenge signals, JSON syntax, and payload shape. The marketplace input selects both the public marketplace ID (mid) and that marketplace's own completion host (completion.amazon.com, completion.amazon.co.uk, and so on); Amazon answers a foreign marketplace's mid on another marketplace's host with HTTP 200 and an empty suggestions array, so the host is part of the marketplace selection. It then optionally requests the public search page for each final keyword and validates HTTPS marketplace origin, HTML content type, response size, challenge signals, and recognizable search-result evidence (a result count, product card, or explicit no-results message) before marking the page enriched.

The search parser reads the public result-card structure observed in Amazon's search UI, including ASIN cards, h2 product links, price spans, ratings, review counts, sponsored labels, badges, offer text, delivery/availability text, related searches, and the s-pagination-next link. It stores mapped fields only; raw HTML, headers, cookies, authorization data, signed URLs, and tokens are not written to the dataset.

Autocomplete expansion is the Actor's bounded query pagination model: every seed/query is processed at most once, and maxQueriesPerSeed plus maxTotalQueries cap the plan. Search-page pagination is independently bounded by maxSearchPagesPerKeyword and maxEnrichmentRequests. maxItems is global across all unique keywords. Dataset records are pushed in batches using datasetBatchSize.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Input

Minimal rich input

{ "seedKeyword": "wireless earbuds" }

Multiple seeds, filters, sorting, and developer options

{
"seedKeywords": ["wireless earbuds", "bluetooth headphones"],
"marketplace": "amazon.com",
"locale": "en-US",
"expansionMode": "seed",
"suggestionLimit": 10,
"maxQueriesPerSeed": 1,
"maxTotalQueries": 2,
"maxItems": 12,
"includeKeywords": ["wireless"],
"excludeKeywords": ["wired"],
"sortBy": "alphabetical",
"includeSearchMetadata": true,
"maxProductsPerKeyword": 3,
"maxSearchPagesPerKeyword": 1,
"maxEnrichmentRequests": 12,
"searchSortBy": "rating",
"requestDelayMs": 300,
"maxConcurrency": 2,
"maxRequestRetries": 2,
"requestTimeoutSecs": 12,
"datasetBatchSize": 5,
"proxyConfiguration": { "useApifyProxy": false }
}

Page metadata without product arrays

{
"seedKeyword": "camera",
"expansionMode": "seed",
"suggestionLimit": 8,
"maxItems": 8,
"includeSearchMetadata": true,
"maxProductsPerKeyword": 0,
"maxSearchPagesPerKeyword": 2,
"maxEnrichmentRequests": 10,
"searchSortBy": "priceAsc",
"searchMinPrice": 10,
"searchMaxPrice": 200,
"proxyConfiguration": { "useApifyProxy": false }
}

Input fields

FieldType and defaultNotes
seedKeywordstringOne seed phrase.
seedKeywordsstring arrayUp to 100 seeds; takes precedence over seedKeyword.
marketplaceenum, amazon.comOne of the 12 supported Amazon marketplaces. Each marketplace is queried on its own completion host with its own market ID.
localeenum, autoAuto follows the selected marketplace.
expansionModeenum, lettersAndNumbersseed, letters, or lettersAndNumbers.
suggestionLimitinteger, 121-20 suggestions per autocomplete response.
maxQueriesPerSeedinteger, 371-37 expansion queries per seed.
maxTotalQueriesinteger, 1000Global autocomplete-query cap, 1-5000.
maxItemsinteger, 500Global unique keyword-record cap, 1-5000.
includeKeywordsstring arrayKeep a suggestion when it contains one of these substrings.
excludeKeywordsstring arrayDiscard a suggestion when it contains one of these substrings.
sortByenum, sourceOrdersourceOrder, alphabetical, lengthAsc, or lengthDesc.
includeSearchMetadataboolean, trueEnable public search-page and product-card enrichment.
maxProductsPerKeywordinteger, 50-20 product cards per keyword.
maxSearchPagesPerKeywordinteger, 11-3 public search pages per keyword.
maxEnrichmentRequestsinteger, 50Global page-request cap, 0-200.
searchSortByenum, featuredfeatured, priceAsc, priceDesc, rating, newest, or bestSellers.
searchMinPricenumberOptional public search lower price bound.
searchMaxPricenumberOptional public search upper price bound; cannot be below searchMinPrice.
requestDelayMsinteger, 300Delay before each request, 0-15000 ms.
maxConcurrencyinteger, 2Concurrent requests, 1-8.
maxRequestRetriesinteger, 2Retries, 0-5.
requestTimeoutSecsinteger, 12Per-request timeout, 5-120 seconds.
datasetBatchSizeinteger, 50Records per dataset push, 1-100.
proxyConfigurationobjectAuthorized Apify Proxy or custom HTTP(S) proxy options.

The compatibility aliases alphabetExpansion, maxKeywords, minDelayMs, maxRetries, requestTimeoutMs, enrichSearchResults, useApifyProxy, proxyUrls, proxyGroups, and proxyCountryCode remain accepted. Prefer the modern sectioned fields; when both a modern field and its alias are supplied, the modern field wins.

The authoritative input types, defaults, enum values, and bounds are in .actor/input_schema.json.

Output

The default dataset contains one rich record per unique normalized keyword. OUTPUT is a key-value summary with status, record/request/candidate/filter/duplicate counts, query-plan counts, sort settings, enrichment request counts, dataset-batch count, marketplace, connection mode, failure categories, boundary status, and completion time.

Dataset rows follow .actor/dataset_schema.json. The required and optional row fields are listed here:

Example OUTPUT summary:

{
"status": "completed",
"records": 12,
"requestsCompleted": 2,
"requestsFailed": 0,
"candidates": 20,
"filtered": 0,
"duplicates": 0,
"failureCategories": [],
"stoppedByBoundary": false,
"marketplace": "amazon.com",
"connectionMode": "direct",
"sortBy": "alphabetical",
"searchSortBy": "featured",
"seedCount": 2,
"queriesPlanned": 2,
"queriesProcessed": 2,
"maxConcurrency": 2,
"datasetBatchesPushed": 3,
"includeSearchMetadata": true,
"enrichmentRequestsCompleted": 12,
"enrichmentRequestsFailed": 0,
"maxEnrichmentRequests": 50,
"completedAt": "2026-09-05T12:00:02.000Z"
}

If any autocomplete or public search-page request fails, the Actor reports a failed run even when it has already saved valid keyword records from other requests. Such records retain their truthful searchEnrichmentStatus (partial, unavailable, or blocked) and safe failure category. A page that lacks recognizable search-result evidence is retried within the configured limit and then reported as unavailable. Explicit no-results pages are accepted and marked with searchHasNoResults. No-results autocomplete inputs complete with an empty dataset. The Actor never pushes placeholder rows.

Tips and advanced options

  • Start with seed-only expansion and a small maxItems while checking a marketplace.
  • Set maxEnrichmentRequests to roughly maxItems for one page per keyword; increase it only when additional pages are needed.
  • Set maxProductsPerKeyword to 0 when result counts, related searches, and pagination are enough.
  • Use searchSortBy and price bounds to make the product-card slice more useful for a specific analysis.
  • Keep maxConcurrency modest and requestDelayMs nonzero for responsible public-service request volume.
  • Use an authorized proxy only when your Actor account and target-side terms allow it. Proxy credentials are never logged or returned.
  • Amazon may show localized prices, delivery text, sponsored cards, or fewer fields depending on marketplace, locale, and session state.

FAQ, support, and responsible use

Does the Actor access private Amazon data?

No. It uses public autocomplete and public search-page content only. It does not use accounts, cookies, checkout flows, private APIs, or access-control bypasses.

Does it handle multiple datasets and pagination?

Multiple seeds and multiple bounded autocomplete queries are combined into one default dataset with seed/query provenance. Public search-page pagination is followed only when the page advertises a next-page link, and only within maxSearchPagesPerKeyword and maxEnrichmentRequests. Each keyword record includes searchPagesScraped, searchHasNextPage, and searchNextPageUrl when available.

Is this an official Amazon product?

No. This is an independent Actor and is not affiliated with or endorsed by Amazon. Use it in accordance with Amazon's terms, applicable laws, and your own authorization. Do not use it to bypass restrictions or collect data you are not allowed to access.

Where can I get help?

For reproducible support, include the input, marketplace, OUTPUT summary, and safe failure category. Do not include credentials, cookies, authorization headers, proxy URLs containing secrets, or raw response bodies.

When a card has separate brand and product headings, extraction retains the most complete observed h2 label/full title within that product card. Explicit refusal responses stop without retry; an enrichment refusal skips later queued enrichment. A run with failed enrichment is partial. The root INPUT.json uses the bounded, paced enrichment fixture.