{
  "data": {
    "id": "Lh0Nho79lKMarONeP",
    "actId": "zgFNSzKiYNCzNrdL9",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-11-05T06:22:46.519Z",
    "finishedAt": "2026-11-05T06:22:50.117Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3467,
      "runTimeSecs": 3.467,
      "computeUnits": 0.003852222222222222,
      "imageSizeBytes": 319003648
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Amazon Keyword Suggestions Scraper Input\",\n  \"description\": \"Discover Amazon's own search-autocomplete suggestions for one or more seed keywords across 23 marketplaces, with optional alphabetical, question, comparison and buyer-intent expansion.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"keywords\": {\n      \"title\": \"Seed keywords\",\n      \"type\": \"array\",\n      \"description\": \"One or more seed keywords or phrases to expand into Amazon autocomplete suggestions.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": [\n        \"wireless earbuds\"\n      ]\n    },\n    \"marketplace\": {\n      \"title\": \"Marketplace\",\n      \"type\": \"string\",\n      \"description\": \"Single Amazon marketplace to query. Used when `marketplaces` is empty.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"US\",\n        \"CA\",\n        \"MX\",\n        \"BR\",\n        \"IE\",\n        \"ES\",\n        \"GB\",\n        \"FR\",\n        \"BE\",\n        \"NL\",\n        \"DE\",\n        \"IT\",\n        \"SE\",\n        \"ZA\",\n        \"PL\",\n        \"EG\",\n        \"TR\",\n        \"SA\",\n        \"AE\",\n        \"IN\",\n        \"SG\",\n        \"AU\",\n        \"JP\"\n      ],\n      \"enumTitles\": [\n        \"United States (amazon.com)\",\n        \"Canada (amazon.ca)\",\n        \"Mexico (amazon.com.mx)\",\n        \"Brazil (amazon.com.br)\",\n        \"Ireland (amazon.ie)\",\n        \"Spain (amazon.es)\",\n        \"United Kingdom (amazon.co.uk)\",\n        \"France (amazon.fr)\",\n        \"Belgium (amazon.com.be)\",\n        \"Netherlands (amazon.nl)\",\n        \"Germany (amazon.de)\",\n        \"Italy (amazon.it)\",\n        \"Sweden (amazon.se)\",\n        \"South Africa (amazon.co.za)\",\n        \"Poland (amazon.pl)\",\n        \"Egypt (amazon.eg)\",\n        \"Turkey (amazon.com.tr)\",\n        \"Saudi Arabia (amazon.sa)\",\n        \"United Arab Emirates (amazon.ae)\",\n        \"India (amazon.in)\",\n        \"Singapore (amazon.sg)\",\n        \"Australia (amazon.com.au)\",\n        \"Japan (amazon.co.jp)\"\n      ],\n      \"default\": \"US\",\n      \"prefill\": \"US\"\n    },\n    \"marketplaces\": {\n      \"title\": \"Multiple marketplaces\",\n      \"type\": \"array\",\n      \"description\": \"Optional multi-market sweep, e.g. [\\\"US\\\", \\\"GB\\\", \\\"DE\\\"]. Leave empty to use the single `marketplace` value. Codes are the same as the marketplace dropdown.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"departments\": {\n      \"title\": \"Departments\",\n      \"type\": \"array\",\n      \"description\": \"Amazon department aliases to scope suggestions, e.g. [\\\"aps\\\", \\\"kitchen\\\"]. Leave empty for the all-departments default (`aps`). Common aliases: aps, electronics, computers, fashion, kitchen, stripbooks, beauty, hpc, pet-supplies, toys-and-games, home-improvement, automotive, grocery, office-products, watches, shoes, luggage, digital-text, audible, amazon-devices, instant-video, todays-deals.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": [\n        \"aps\"\n      ]\n    },\n    \"expandAlphabet\": {\n      \"title\": \"Expand with suffix A-Z\",\n      \"type\": \"boolean\",\n      \"description\": \"Append each letter a-z to every query (e.g. `yoga mat a`) to surface more than the per-query cap.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"expandPrefixAlphabet\": {\n      \"title\": \"Expand with prefix A-Z\",\n      \"type\": \"boolean\",\n      \"description\": \"Prepend each letter a-z to every query (e.g. `a yoga mat`). Returns a different suggestion set from suffix expansion.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"expandNumbers\": {\n      \"title\": \"Expand with digits 0-9\",\n      \"type\": \"boolean\",\n      \"description\": \"Append each digit 0-9 to every query, useful for sizes, models and quantities.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"expandQuestions\": {\n      \"title\": \"Expand with questions\",\n      \"type\": \"boolean\",\n      \"description\": \"Query locale-aware question stems such as `how to`, `what is` and `where to buy` in front of each seed.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"expandComparisons\": {\n      \"title\": \"Expand with comparisons\",\n      \"type\": \"boolean\",\n      \"description\": \"Query comparison tokens such as `vs`, `or`, `versus` and `and` after each seed.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"expandPrepositions\": {\n      \"title\": \"Expand with prepositions\",\n      \"type\": \"boolean\",\n      \"description\": \"Query preposition tokens such as `for`, `with`, `without`, `under` and `over` after each seed.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"expandBuyerModifiers\": {\n      \"title\": \"Expand with buyer modifiers\",\n      \"type\": \"boolean\",\n      \"description\": \"Query locale-aware buyer-intent modifiers such as `best`, `cheap`, `for men`, `for women` and `waterproof`.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"customSuffixes\": {\n      \"title\": \"Custom suffixes\",\n      \"type\": \"array\",\n      \"description\": \"Additional suffixes to append to every query, e.g. [\\\"for men\\\", \\\"waterproof\\\", \\\"iphone 15\\\"].\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"maxDepth\": {\n      \"title\": \"Max recursion depth\",\n      \"type\": \"integer\",\n      \"description\": \"Recursively re-query newly discovered suggestions as fresh seeds, up to this depth (0 = original seeds only; 3 = three hops).\",\n      \"minimum\": 0,\n      \"maximum\": 3,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"queryMode\": {\n      \"title\": \"Suggestion endpoint dialect\",\n      \"type\": \"string\",\n      \"description\": \"`enhanced` returns thumbnails, widgets and predictive text when Amazon provides them; `organic` is the plain keyword response; `both` requests both and unions the results.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"enhanced\",\n        \"organic\",\n        \"both\"\n      ],\n      \"enumTitles\": [\n        \"Enhanced (thumbnails, widgets, predictive text)\",\n        \"Organic (keyword responses only)\",\n        \"Both (union of both responses)\"\n      ],\n      \"default\": \"enhanced\",\n      \"prefill\": \"enhanced\"\n    },\n    \"includeWidgets\": {\n      \"title\": \"Include widget rows\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit Amazon's optional widget suggestions (carousels, refinements, entity cards) when the enhanced endpoint returns them.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeSeed\": {\n      \"title\": \"Include seed as a record\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit one `SEED` record per seed keyword in addition to Amazon's suggestions.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"dedupe\": {\n      \"title\": \"Deduplicate suggestions\",\n      \"type\": \"boolean\",\n      \"description\": \"Merge repeated suggestions into one record per seed, marketplace and department, with a relative volume proxy and provenance. Turn off to emit every occurrence.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"resultOrder\": {\n      \"title\": \"Result order\",\n      \"type\": \"string\",\n      \"description\": \"Order within each seed, marketplace and department group. `volume` sorts by the relative query-count score (requires dedupe).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"source\",\n        \"alphabetical\",\n        \"volume\"\n      ],\n      \"enumTitles\": [\n        \"Source order (first seen)\",\n        \"Alphabetical\",\n        \"Relative volume proxy\"\n      ],\n      \"default\": \"source\",\n      \"prefill\": \"source\"\n    },\n    \"mustContainSeed\": {\n      \"title\": \"Must contain the seed\",\n      \"type\": \"boolean\",\n      \"description\": \"Drop suggestions that do not contain the original seed keyword.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeTerms\": {\n      \"title\": \"Must contain any of these terms\",\n      \"type\": \"array\",\n      \"description\": \"Keep only suggestions containing at least one of these terms. Leave empty to keep all.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"excludeTerms\": {\n      \"title\": \"Exclude these terms\",\n      \"type\": \"array\",\n      \"description\": \"Drop suggestions containing any of these terms.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"onlyQuestions\": {\n      \"title\": \"Questions only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only question-shaped suggestions (question word or trailing question mark).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"onlyLongTail\": {\n      \"title\": \"Long-tail only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only suggestions with three or more words.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"minWordCount\": {\n      \"title\": \"Minimum word count\",\n      \"type\": \"integer\",\n      \"description\": \"Drop suggestions with fewer words than this value.\",\n      \"minimum\": 0,\n      \"maximum\": 20,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"maxSuggestions\": {\n      \"title\": \"Max suggestions\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on total records emitted in this run.\",\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"default\": 500,\n      \"prefill\": 3\n    },\n    \"maxSuggestionsPerKeyword\": {\n      \"title\": \"Max suggestions per seed\",\n      \"type\": \"integer\",\n      \"description\": \"Cap emitted records per seed, marketplace and department. 0 means no per-seed cap.\",\n      \"minimum\": 0,\n      \"maximum\": 5000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"maxQueries\": {\n      \"title\": \"Max queries\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on HTTP requests across the whole run. The run status message says when this cap stopped it.\",\n      \"minimum\": 1,\n      \"maximum\": 20000,\n      \"default\": 400,\n      \"prefill\": 3\n    },\n    \"maxConcurrency\": {\n      \"title\": \"Max concurrent requests\",\n      \"type\": \"integer\",\n      \"description\": \"Parallel requests. Values above 8 give little extra speed and are more likely to be rate-limited.\",\n      \"minimum\": 1,\n      \"maximum\": 10,\n      \"default\": 4,\n      \"prefill\": 1\n    },\n    \"requestDelayMs\": {\n      \"title\": \"Delay between requests (ms)\",\n      \"type\": \"integer\",\n      \"description\": \"Pause per worker between requests. 0 is fastest; 100-250 is gentler.\",\n      \"minimum\": 0,\n      \"maximum\": 5000,\n      \"default\": 100,\n      \"prefill\": 0\n    }\n  },\n  \"required\": [\n    \"keywords\"\n  ]\n}",
    "readme": "# Amazon Autocomplete Keyword Expander\n\nTurn a handful of seed phrases into the real keyword ideas Amazon's own search box suggests. This actor reads Amazon's public autocomplete service across **23 marketplaces**, can sweep several departments in one run, and expands each seed through eight different query axes so you see far more than the ten suggestions a single lookup returns. No account, cookies, or proxy setup is required.\n\n## What this actor does\n\n- **23 Amazon marketplaces** — from `amazon.com` and `amazon.co.uk` to `amazon.co.jp`, `amazon.com.au` and `amazon.in`\n- **Multi-market and multi-department runs** — compare the same seed across countries and browse aliases such as electronics, kitchen, fashion or books\n- **Eight expansion axes** — suffix A-Z, prefix A-Z, 0-9, questions, comparisons, prepositions, buyer modifiers and your own custom suffixes\n- **Recursive discovery** — optionally treat newly found suggestions as fresh seeds, up to three hops deep\n- **Two response dialects** — enhanced (thumbnails, widget cards, predictive text) or organic keyword responses, or both in one pass\n- **Filters and ranking** — keep questions or long-tail phrases, require or exclude terms, cap results per seed and overall, and order by source, alphabet or the relative volume proxy\n- **Deduplication with provenance** — one row per unique phrase per seed, marketplace and department, showing every query variant that surfaced it\n- **Empty fields are omitted**\n\n## Output per suggestion\n\n- `marketplace` — `countryCode`, `domain`, `marketplaceId`, `currency`, `language`\n- `seedKeyword` — the original seed this row belongs to\n- `query` / `prefix` — the exact query text sent to Amazon\n- `suggestion` — the suggested keyword\n- `department` — the Amazon department alias used\n- `locale` — the marketplace language, e.g. `en-US`\n- `suggestionType` — Amazon's response type, e.g. `KEYWORD` or `WIDGET`; `SEED` for an echoed seed\n- `suggType` — Amazon's finer subtype, e.g. `KeywordSuggestion`\n- `expansionType` / `expansionToken` — `seed`, `suffixAlphabet`, `prefixAlphabet`, `digits`, `question`, `comparison`, `preposition`, `buyerModifier`, `custom` or `recursive`, plus the letter, digit or word used\n- `expansionDepth` / `expansionParent` — recursion level and the suggestion that led to this query\n- `position` / `amazonRank` — 1-based slot in the response that returned the phrase\n- `bestRank` / `rank` — best slot across all queries, and final rank inside the seed group\n- `volumeProxy` — how many distinct query variants surfaced the phrase; a relative signal, not monthly search volume\n- `surfacedByQueries` — up to 20 query variants that returned it\n- `searchUrl` — ready-to-open Amazon search URL for the suggestion\n- `wordCount`, `isQuestion`, `containsSeed` — shape helpers for filtering and analysis\n- `thumbnailUrl` — product thumbnail when the enhanced response supplies one\n- `widget` — optional widget object: `id`, `template`, `slot`, `byline`, `refinement`, `title`, `subtitle`, `imageUrl`, `imageShape`, `linkUrl`, `items[]`\n- `predictiveText` — Amazon's predictive completion for the query, when present\n- `strategyId` / `strategyApiType` / `candidateSources` / `refTag` / `prior` / `ghost` / `help` — Amazon's own suggestion metadata\n- `responseId` / `shuffled` — request correlation id and whether Amazon randomized the response order\n- `sourceUrl` — the exact autocomplete request URL\n- `recordType: \"suggestion\"`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `keywords` | array | – | Seed keywords or phrases to expand (required) |\n| `marketplace` | string | `US` | Single marketplace; used when `marketplaces` is empty |\n| `marketplaces` | array | `[]` | Optional codes for a multi-market sweep, e.g. `[\"US\",\"GB\",\"DE\"]` |\n| `departments` | array | `[]` | Department aliases, e.g. `[\"aps\",\"kitchen\",\"electronics\"]` |\n| `expandAlphabet` | bool | `false` | Append A-Z to each query |\n| `expandPrefixAlphabet` | bool | `false` | Prepend A-Z to each query |\n| `expandNumbers` | bool | `false` | Append 0-9 to each query |\n| `expandQuestions` | bool | `false` | Add locale-aware question stems |\n| `expandComparisons` | bool | `false` | Add `vs` / `or` / `versus` / `and` style tokens |\n| `expandPrepositions` | bool | `false` | Add `for` / `with` / `without` / `under` style tokens |\n| `expandBuyerModifiers` | bool | `false` | Add `best` / `cheap` / `for men` style modifiers |\n| `customSuffixes` | array | `[]` | Your own suffixes |\n| `maxDepth` | int | `0` | Recursion depth, 0-3 |\n| `queryMode` | string | `enhanced` | `enhanced` / `organic` / `both` |\n| `includeWidgets` | bool | `false` | Emit widget rows when available |\n| `includeSeed` | bool | `false` | Emit one `SEED` row per seed |\n| `dedupe` | bool | `true` | Merge repeats and add volume/provenance fields |\n| `resultOrder` | string | `source` | `source` / `alphabetical` / `volume` |\n| `mustContainSeed` | bool | `false` | Drop suggestions without the seed text |\n| `includeTerms` | array | `[]` | Keep suggestions containing at least one term |\n| `excludeTerms` | array | `[]` | Drop suggestions containing any term |\n| `onlyQuestions` | bool | `false` | Keep question-shaped suggestions |\n| `onlyLongTail` | bool | `false` | Keep suggestions with 3+ words |\n| `minWordCount` | int | `0` | Drop shorter suggestions |\n| `maxSuggestions` | int | `500` | Overall record cap (1-10,000) |\n| `maxSuggestionsPerKeyword` | int | `0` | Per seed/market/department cap; 0 = no cap |\n| `maxQueries` | int | `400` | Overall request cap (1-20,000) |\n| `maxConcurrency` | int | `4` | Parallel requests (1-10) |\n| `requestDelayMs` | int | `100` | Pause between requests (0-5,000 ms) |\n\n### Example: one seed, one market\n\n```json\n{\n  \"keywords\": [\"wireless earbuds\"],\n  \"marketplace\": \"US\",\n  \"maxSuggestions\": 25\n}\n```\n\n### Example: full keyword-research sweep\n\n```json\n{\n  \"keywords\": [\"yoga mat\"],\n  \"marketplace\": \"US\",\n  \"expandAlphabet\": true,\n  \"expandPrefixAlphabet\": true,\n  \"expandQuestions\": true,\n  \"expandComparisons\": true,\n  \"expandPrepositions\": true,\n  \"expandBuyerModifiers\": true,\n  \"maxSuggestions\": 800,\n  \"maxQueries\": 400,\n  \"resultOrder\": \"volume\"\n}\n```\n\n### Example: compare countries and departments\n\n```json\n{\n  \"keywords\": [\"running shoes\"],\n  \"marketplaces\": [\"US\", \"GB\", \"DE\", \"JP\"],\n  \"departments\": [\"aps\", \"shoes\", \"fashion\"],\n  \"maxSuggestionsPerKeyword\": 150,\n  \"maxSuggestions\": 1200\n}\n```\n\n### Example: questions and long-tail only, with thumbnails\n\n```json\n{\n  \"keywords\": [\"air purifier\"],\n  \"marketplace\": \"US\",\n  \"expandQuestions\": true,\n  \"onlyQuestions\": true,\n  \"onlyLongTail\": true,\n  \"queryMode\": \"both\",\n  \"includeWidgets\": true,\n  \"maxSuggestions\": 200\n}\n```\n\n## Use cases\n\n- **Amazon SEO and PPC** — build exact-match keyword lists from the phrases shoppers actually type into Amazon\n- **Listing optimization** — find long-tail phrasing for titles, bullets and backend search terms\n- **Niche research** — expand one product idea into hundreds of related buying-intent phrases\n- **International expansion** — compare autocomplete demand signals for the same seed in different marketplaces\n- **Category discovery** — sweep departments to see how suggestions change between broad and scoped searches\n- **Content planning** — turn question and comparison suggestions into buying guides and FAQ content\n\n## FAQ\n\n### Is this a search-volume tool?\n\nNo. Amazon does not publish monthly search volume, and this actor does not invent one. `position` is the order Amazon returned at request time, and `volumeProxy` counts how many distinct query variants surfaced the same phrase. Both are relative signals for prioritisation, not absolute demand numbers.\n\n### Why do I only get about ten suggestions per query?\n\nAmazon's autocomplete response is capped at roughly ten keyword suggestions per request. The expansion axes work around that cap by sending related queries (`yoga mat a`, `a yoga mat`, `best yoga mat`, and so on), then merging and deduplicating the results.\n\n### What is the difference between organic and enhanced?\n\nThe organic dialect returns the plain keyword list. The enhanced dialect returns that list plus optional thumbnails, widget cards and predictive text when Amazon provides them. **Both** requests each dialect and unions the results, which costs twice as many requests but can surface extra phrases.\n\n### Why are thumbnails missing for some rows or markets?\n\nThumbnails come from Amazon's enhanced responses and are mostly present on the US and sometimes Canada marketplaces. Other markets usually return none. The field is omitted when Amazon does not supply an image; no placeholder or synthetic image is ever added.\n\n### How does the India marketplace work?\n\nAmazon's own India completion host is occasionally unavailable. When that happens, the actor automatically retries the same Indian marketplace through Amazon's UK and UAE completion hosts, keeping the Indian marketplace id and locale. The run status message tells you which host was used.\n\n### Why did my run stop before the result count I expected?\n\nAmazon caps each raw response, and the actor also enforces your `maxSuggestions`, `maxSuggestionsPerKeyword`, `maxQueries` and `maxDepth` limits. The run status message names the limit that stopped it, so you can raise that specific cap and run again.\n\n### Why do some department aliases return unrelated suggestions?\n\nAmazon sometimes returns a generic cross-department fallback instead of an empty list. The record keeps the department alias that produced it, so you can see exactly which scope returned the phrase.\n\n### Is authentication, a proxy or a browser required?\n\nNo. The autocomplete service is public JSON. The actor calls it directly with no login, cookies, API key, browser rendering or proxy configuration.\n\n### Is this affiliated with Amazon?\n\nNo. This is an independent third-party actor that reads Amazon's public autocomplete responses.\n\n## Limitations\n\n- Amazon returns at most about ten keyword suggestions per query, so breadth comes from the expansion axes and the query cap.\n- Thumbnails and widget rows are only available from enhanced responses and are sparse outside the US marketplace.\n- `volumeProxy` is a count of distinct query variants, not search volume.\n- Department scoping is Amazon's own behaviour; an unrelated alias can return a generic fallback row.\n- Recursion and many expansion axes multiply request counts. Use `maxQueries`, `maxSuggestions` and `maxSuggestionsPerKeyword` to keep runs bounded.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "amazon-autocomplete-keyword-expander",
      "title": "Amazon Autocomplete Keyword Expander",
      "description": "Mine Amazon's own search-box autocomplete for any seed across 23 marketplaces, multiple departments and eight expansion axes. Returns ranked keyword ideas with dedupe, filters, provenance, thumbnails and widget data.",
      "version": "1.1",
      "buildTag": "latest",
      "defaultMemoryMbytes": 1024,
      "minMemoryMbytes": 1024,
      "dockerfile": "./Dockerfile",
      "readme": "# Amazon Autocomplete Keyword Expander\n\nTurn a handful of seed phrases into the real keyword ideas Amazon's own search box suggests. This actor reads Amazon's public autocomplete service across **23 marketplaces**, can sweep several departments in one run, and expands each seed through eight different query axes so you see far more than the ten suggestions a single lookup returns. No account, cookies, or proxy setup is required.\n\n## What this actor does\n\n- **23 Amazon marketplaces** — from `amazon.com` and `amazon.co.uk` to `amazon.co.jp`, `amazon.com.au` and `amazon.in`\n- **Multi-market and multi-department runs** — compare the same seed across countries and browse aliases such as electronics, kitchen, fashion or books\n- **Eight expansion axes** — suffix A-Z, prefix A-Z, 0-9, questions, comparisons, prepositions, buyer modifiers and your own custom suffixes\n- **Recursive discovery** — optionally treat newly found suggestions as fresh seeds, up to three hops deep\n- **Two response dialects** — enhanced (thumbnails, widget cards, predictive text) or organic keyword responses, or both in one pass\n- **Filters and ranking** — keep questions or long-tail phrases, require or exclude terms, cap results per seed and overall, and order by source, alphabet or the relative volume proxy\n- **Deduplication with provenance** — one row per unique phrase per seed, marketplace and department, showing every query variant that surfaced it\n- **Empty fields are omitted**\n\n## Output per suggestion\n\n- `marketplace` — `countryCode`, `domain`, `marketplaceId`, `currency`, `language`\n- `seedKeyword` — the original seed this row belongs to\n- `query` / `prefix` — the exact query text sent to Amazon\n- `suggestion` — the suggested keyword\n- `department` — the Amazon department alias used\n- `locale` — the marketplace language, e.g. `en-US`\n- `suggestionType` — Amazon's response type, e.g. `KEYWORD` or `WIDGET`; `SEED` for an echoed seed\n- `suggType` — Amazon's finer subtype, e.g. `KeywordSuggestion`\n- `expansionType` / `expansionToken` — `seed`, `suffixAlphabet`, `prefixAlphabet`, `digits`, `question`, `comparison`, `preposition`, `buyerModifier`, `custom` or `recursive`, plus the letter, digit or word used\n- `expansionDepth` / `expansionParent` — recursion level and the suggestion that led to this query\n- `position` / `amazonRank` — 1-based slot in the response that returned the phrase\n- `bestRank` / `rank` — best slot across all queries, and final rank inside the seed group\n- `volumeProxy` — how many distinct query variants surfaced the phrase; a relative signal, not monthly search volume\n- `surfacedByQueries` — up to 20 query variants that returned it\n- `searchUrl` — ready-to-open Amazon search URL for the suggestion\n- `wordCount`, `isQuestion`, `containsSeed` — shape helpers for filtering and analysis\n- `thumbnailUrl` — product thumbnail when the enhanced response supplies one\n- `widget` — optional widget object: `id`, `template`, `slot`, `byline`, `refinement`, `title`, `subtitle`, `imageUrl`, `imageShape`, `linkUrl`, `items[]`\n- `predictiveText` — Amazon's predictive completion for the query, when present\n- `strategyId` / `strategyApiType` / `candidateSources` / `refTag` / `prior` / `ghost` / `help` — Amazon's own suggestion metadata\n- `responseId` / `shuffled` — request correlation id and whether Amazon randomized the response order\n- `sourceUrl` — the exact autocomplete request URL\n- `recordType: \"suggestion\"`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `keywords` | array | – | Seed keywords or phrases to expand (required) |\n| `marketplace` | string | `US` | Single marketplace; used when `marketplaces` is empty |\n| `marketplaces` | array | `[]` | Optional codes for a multi-market sweep, e.g. `[\"US\",\"GB\",\"DE\"]` |\n| `departments` | array | `[]` | Department aliases, e.g. `[\"aps\",\"kitchen\",\"electronics\"]` |\n| `expandAlphabet` | bool | `false` | Append A-Z to each query |\n| `expandPrefixAlphabet` | bool | `false` | Prepend A-Z to each query |\n| `expandNumbers` | bool | `false` | Append 0-9 to each query |\n| `expandQuestions` | bool | `false` | Add locale-aware question stems |\n| `expandComparisons` | bool | `false` | Add `vs` / `or` / `versus` / `and` style tokens |\n| `expandPrepositions` | bool | `false` | Add `for` / `with` / `without` / `under` style tokens |\n| `expandBuyerModifiers` | bool | `false` | Add `best` / `cheap` / `for men` style modifiers |\n| `customSuffixes` | array | `[]` | Your own suffixes |\n| `maxDepth` | int | `0` | Recursion depth, 0-3 |\n| `queryMode` | string | `enhanced` | `enhanced` / `organic` / `both` |\n| `includeWidgets` | bool | `false` | Emit widget rows when available |\n| `includeSeed` | bool | `false` | Emit one `SEED` row per seed |\n| `dedupe` | bool | `true` | Merge repeats and add volume/provenance fields |\n| `resultOrder` | string | `source` | `source` / `alphabetical` / `volume` |\n| `mustContainSeed` | bool | `false` | Drop suggestions without the seed text |\n| `includeTerms` | array | `[]` | Keep suggestions containing at least one term |\n| `excludeTerms` | array | `[]` | Drop suggestions containing any term |\n| `onlyQuestions` | bool | `false` | Keep question-shaped suggestions |\n| `onlyLongTail` | bool | `false` | Keep suggestions with 3+ words |\n| `minWordCount` | int | `0` | Drop shorter suggestions |\n| `maxSuggestions` | int | `500` | Overall record cap (1-10,000) |\n| `maxSuggestionsPerKeyword` | int | `0` | Per seed/market/department cap; 0 = no cap |\n| `maxQueries` | int | `400` | Overall request cap (1-20,000) |\n| `maxConcurrency` | int | `4` | Parallel requests (1-10) |\n| `requestDelayMs` | int | `100` | Pause between requests (0-5,000 ms) |\n\n### Example: one seed, one market\n\n```json\n{\n  \"keywords\": [\"wireless earbuds\"],\n  \"marketplace\": \"US\",\n  \"maxSuggestions\": 25\n}\n```\n\n### Example: full keyword-research sweep\n\n```json\n{\n  \"keywords\": [\"yoga mat\"],\n  \"marketplace\": \"US\",\n  \"expandAlphabet\": true,\n  \"expandPrefixAlphabet\": true,\n  \"expandQuestions\": true,\n  \"expandComparisons\": true,\n  \"expandPrepositions\": true,\n  \"expandBuyerModifiers\": true,\n  \"maxSuggestions\": 800,\n  \"maxQueries\": 400,\n  \"resultOrder\": \"volume\"\n}\n```\n\n### Example: compare countries and departments\n\n```json\n{\n  \"keywords\": [\"running shoes\"],\n  \"marketplaces\": [\"US\", \"GB\", \"DE\", \"JP\"],\n  \"departments\": [\"aps\", \"shoes\", \"fashion\"],\n  \"maxSuggestionsPerKeyword\": 150,\n  \"maxSuggestions\": 1200\n}\n```\n\n### Example: questions and long-tail only, with thumbnails\n\n```json\n{\n  \"keywords\": [\"air purifier\"],\n  \"marketplace\": \"US\",\n  \"expandQuestions\": true,\n  \"onlyQuestions\": true,\n  \"onlyLongTail\": true,\n  \"queryMode\": \"both\",\n  \"includeWidgets\": true,\n  \"maxSuggestions\": 200\n}\n```\n\n## Use cases\n\n- **Amazon SEO and PPC** — build exact-match keyword lists from the phrases shoppers actually type into Amazon\n- **Listing optimization** — find long-tail phrasing for titles, bullets and backend search terms\n- **Niche research** — expand one product idea into hundreds of related buying-intent phrases\n- **International expansion** — compare autocomplete demand signals for the same seed in different marketplaces\n- **Category discovery** — sweep departments to see how suggestions change between broad and scoped searches\n- **Content planning** — turn question and comparison suggestions into buying guides and FAQ content\n\n## FAQ\n\n### Is this a search-volume tool?\n\nNo. Amazon does not publish monthly search volume, and this actor does not invent one. `position` is the order Amazon returned at request time, and `volumeProxy` counts how many distinct query variants surfaced the same phrase. Both are relative signals for prioritisation, not absolute demand numbers.\n\n### Why do I only get about ten suggestions per query?\n\nAmazon's autocomplete response is capped at roughly ten keyword suggestions per request. The expansion axes work around that cap by sending related queries (`yoga mat a`, `a yoga mat`, `best yoga mat`, and so on), then merging and deduplicating the results.\n\n### What is the difference between organic and enhanced?\n\nThe organic dialect returns the plain keyword list. The enhanced dialect returns that list plus optional thumbnails, widget cards and predictive text when Amazon provides them. **Both** requests each dialect and unions the results, which costs twice as many requests but can surface extra phrases.\n\n### Why are thumbnails missing for some rows or markets?\n\nThumbnails come from Amazon's enhanced responses and are mostly present on the US and sometimes Canada marketplaces. Other markets usually return none. The field is omitted when Amazon does not supply an image; no placeholder or synthetic image is ever added.\n\n### How does the India marketplace work?\n\nAmazon's own India completion host is occasionally unavailable. When that happens, the actor automatically retries the same Indian marketplace through Amazon's UK and UAE completion hosts, keeping the Indian marketplace id and locale. The run status message tells you which host was used.\n\n### Why did my run stop before the result count I expected?\n\nAmazon caps each raw response, and the actor also enforces your `maxSuggestions`, `maxSuggestionsPerKeyword`, `maxQueries` and `maxDepth` limits. The run status message names the limit that stopped it, so you can raise that specific cap and run again.\n\n### Why do some department aliases return unrelated suggestions?\n\nAmazon sometimes returns a generic cross-department fallback instead of an empty list. The record keeps the department alias that produced it, so you can see exactly which scope returned the phrase.\n\n### Is authentication, a proxy or a browser required?\n\nNo. The autocomplete service is public JSON. The actor calls it directly with no login, cookies, API key, browser rendering or proxy configuration.\n\n### Is this affiliated with Amazon?\n\nNo. This is an independent third-party actor that reads Amazon's public autocomplete responses.\n\n## Limitations\n\n- Amazon returns at most about ten keyword suggestions per query, so breadth comes from the expansion axes and the query cap.\n- Thumbnails and widget rows are only available from enhanced responses and are sparse outside the US marketplace.\n- `volumeProxy` is a count of distinct query variants, not search volume.\n- Department scoping is Amazon's own behaviour; an unrelated alias can return a generic fallback row.\n- Recursion and many expansion axes multiply request counts. Use `maxQueries`, `maxSuggestions` and `maxSuggestionsPerKeyword` to keep runs bounded.\n",
      "input": {
        "title": "Amazon Keyword Suggestions Scraper Input",
        "description": "Discover Amazon's own search-autocomplete suggestions for one or more seed keywords across 23 marketplaces, with optional alphabetical, question, comparison and buyer-intent expansion.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "keywords": {
            "title": "Seed keywords",
            "type": "array",
            "description": "One or more seed keywords or phrases to expand into Amazon autocomplete suggestions.",
            "editor": "stringList",
            "default": [],
            "prefill": [
              "wireless earbuds"
            ]
          },
          "marketplace": {
            "title": "Marketplace",
            "type": "string",
            "description": "Single Amazon marketplace to query. Used when `marketplaces` is empty.",
            "editor": "select",
            "enum": [
              "US",
              "CA",
              "MX",
              "BR",
              "IE",
              "ES",
              "GB",
              "FR",
              "BE",
              "NL",
              "DE",
              "IT",
              "SE",
              "ZA",
              "PL",
              "EG",
              "TR",
              "SA",
              "AE",
              "IN",
              "SG",
              "AU",
              "JP"
            ],
            "enumTitles": [
              "United States (amazon.com)",
              "Canada (amazon.ca)",
              "Mexico (amazon.com.mx)",
              "Brazil (amazon.com.br)",
              "Ireland (amazon.ie)",
              "Spain (amazon.es)",
              "United Kingdom (amazon.co.uk)",
              "France (amazon.fr)",
              "Belgium (amazon.com.be)",
              "Netherlands (amazon.nl)",
              "Germany (amazon.de)",
              "Italy (amazon.it)",
              "Sweden (amazon.se)",
              "South Africa (amazon.co.za)",
              "Poland (amazon.pl)",
              "Egypt (amazon.eg)",
              "Turkey (amazon.com.tr)",
              "Saudi Arabia (amazon.sa)",
              "United Arab Emirates (amazon.ae)",
              "India (amazon.in)",
              "Singapore (amazon.sg)",
              "Australia (amazon.com.au)",
              "Japan (amazon.co.jp)"
            ],
            "default": "US",
            "prefill": "US"
          },
          "marketplaces": {
            "title": "Multiple marketplaces",
            "type": "array",
            "description": "Optional multi-market sweep, e.g. [\"US\", \"GB\", \"DE\"]. Leave empty to use the single `marketplace` value. Codes are the same as the marketplace dropdown.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Amazon department aliases to scope suggestions, e.g. [\"aps\", \"kitchen\"]. Leave empty for the all-departments default (`aps`). Common aliases: aps, electronics, computers, fashion, kitchen, stripbooks, beauty, hpc, pet-supplies, toys-and-games, home-improvement, automotive, grocery, office-products, watches, shoes, luggage, digital-text, audible, amazon-devices, instant-video, todays-deals.",
            "editor": "stringList",
            "default": [],
            "prefill": [
              "aps"
            ]
          },
          "expandAlphabet": {
            "title": "Expand with suffix A-Z",
            "type": "boolean",
            "description": "Append each letter a-z to every query (e.g. `yoga mat a`) to surface more than the per-query cap.",
            "default": false,
            "prefill": false
          },
          "expandPrefixAlphabet": {
            "title": "Expand with prefix A-Z",
            "type": "boolean",
            "description": "Prepend each letter a-z to every query (e.g. `a yoga mat`). Returns a different suggestion set from suffix expansion.",
            "default": false,
            "prefill": false
          },
          "expandNumbers": {
            "title": "Expand with digits 0-9",
            "type": "boolean",
            "description": "Append each digit 0-9 to every query, useful for sizes, models and quantities.",
            "default": false,
            "prefill": false
          },
          "expandQuestions": {
            "title": "Expand with questions",
            "type": "boolean",
            "description": "Query locale-aware question stems such as `how to`, `what is` and `where to buy` in front of each seed.",
            "default": false,
            "prefill": false
          },
          "expandComparisons": {
            "title": "Expand with comparisons",
            "type": "boolean",
            "description": "Query comparison tokens such as `vs`, `or`, `versus` and `and` after each seed.",
            "default": false,
            "prefill": false
          },
          "expandPrepositions": {
            "title": "Expand with prepositions",
            "type": "boolean",
            "description": "Query preposition tokens such as `for`, `with`, `without`, `under` and `over` after each seed.",
            "default": false,
            "prefill": false
          },
          "expandBuyerModifiers": {
            "title": "Expand with buyer modifiers",
            "type": "boolean",
            "description": "Query locale-aware buyer-intent modifiers such as `best`, `cheap`, `for men`, `for women` and `waterproof`.",
            "default": false,
            "prefill": false
          },
          "customSuffixes": {
            "title": "Custom suffixes",
            "type": "array",
            "description": "Additional suffixes to append to every query, e.g. [\"for men\", \"waterproof\", \"iphone 15\"].",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "maxDepth": {
            "title": "Max recursion depth",
            "type": "integer",
            "description": "Recursively re-query newly discovered suggestions as fresh seeds, up to this depth (0 = original seeds only; 3 = three hops).",
            "minimum": 0,
            "maximum": 3,
            "default": 0,
            "prefill": 0
          },
          "queryMode": {
            "title": "Suggestion endpoint dialect",
            "type": "string",
            "description": "`enhanced` returns thumbnails, widgets and predictive text when Amazon provides them; `organic` is the plain keyword response; `both` requests both and unions the results.",
            "editor": "select",
            "enum": [
              "enhanced",
              "organic",
              "both"
            ],
            "enumTitles": [
              "Enhanced (thumbnails, widgets, predictive text)",
              "Organic (keyword responses only)",
              "Both (union of both responses)"
            ],
            "default": "enhanced",
            "prefill": "enhanced"
          },
          "includeWidgets": {
            "title": "Include widget rows",
            "type": "boolean",
            "description": "Emit Amazon's optional widget suggestions (carousels, refinements, entity cards) when the enhanced endpoint returns them.",
            "default": false,
            "prefill": false
          },
          "includeSeed": {
            "title": "Include seed as a record",
            "type": "boolean",
            "description": "Emit one `SEED` record per seed keyword in addition to Amazon's suggestions.",
            "default": false,
            "prefill": false
          },
          "dedupe": {
            "title": "Deduplicate suggestions",
            "type": "boolean",
            "description": "Merge repeated suggestions into one record per seed, marketplace and department, with a relative volume proxy and provenance. Turn off to emit every occurrence.",
            "default": true,
            "prefill": true
          },
          "resultOrder": {
            "title": "Result order",
            "type": "string",
            "description": "Order within each seed, marketplace and department group. `volume` sorts by the relative query-count score (requires dedupe).",
            "editor": "select",
            "enum": [
              "source",
              "alphabetical",
              "volume"
            ],
            "enumTitles": [
              "Source order (first seen)",
              "Alphabetical",
              "Relative volume proxy"
            ],
            "default": "source",
            "prefill": "source"
          },
          "mustContainSeed": {
            "title": "Must contain the seed",
            "type": "boolean",
            "description": "Drop suggestions that do not contain the original seed keyword.",
            "default": false,
            "prefill": false
          },
          "includeTerms": {
            "title": "Must contain any of these terms",
            "type": "array",
            "description": "Keep only suggestions containing at least one of these terms. Leave empty to keep all.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "excludeTerms": {
            "title": "Exclude these terms",
            "type": "array",
            "description": "Drop suggestions containing any of these terms.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "onlyQuestions": {
            "title": "Questions only",
            "type": "boolean",
            "description": "Keep only question-shaped suggestions (question word or trailing question mark).",
            "default": false,
            "prefill": false
          },
          "onlyLongTail": {
            "title": "Long-tail only",
            "type": "boolean",
            "description": "Keep only suggestions with three or more words.",
            "default": false,
            "prefill": false
          },
          "minWordCount": {
            "title": "Minimum word count",
            "type": "integer",
            "description": "Drop suggestions with fewer words than this value.",
            "minimum": 0,
            "maximum": 20,
            "default": 0,
            "prefill": 0
          },
          "maxSuggestions": {
            "title": "Max suggestions",
            "type": "integer",
            "description": "Hard cap on total records emitted in this run.",
            "minimum": 1,
            "maximum": 10000,
            "default": 500,
            "prefill": 3
          },
          "maxSuggestionsPerKeyword": {
            "title": "Max suggestions per seed",
            "type": "integer",
            "description": "Cap emitted records per seed, marketplace and department. 0 means no per-seed cap.",
            "minimum": 0,
            "maximum": 5000,
            "default": 0,
            "prefill": 0
          },
          "maxQueries": {
            "title": "Max queries",
            "type": "integer",
            "description": "Hard cap on HTTP requests across the whole run. The run status message says when this cap stopped it.",
            "minimum": 1,
            "maximum": 20000,
            "default": 400,
            "prefill": 3
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "type": "integer",
            "description": "Parallel requests. Values above 8 give little extra speed and are more likely to be rate-limited.",
            "minimum": 1,
            "maximum": 10,
            "default": 4,
            "prefill": 1
          },
          "requestDelayMs": {
            "title": "Delay between requests (ms)",
            "type": "integer",
            "description": "Pause per worker between requests. 0 is fastest; 100-250 is gentler.",
            "minimum": 0,
            "maximum": 5000,
            "default": 100,
            "prefill": 0
          }
        },
        "required": [
          "keywords"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Amazon Autocomplete Keyword Expander Output",
        "description": "Amazon search-autocomplete keyword suggestions with marketplace, department, expansion lineage, relative volume proxy, search URLs, optional thumbnails and widget metadata.",
        "properties": {
          "suggestions": {
            "type": "string",
            "title": "Keyword suggestions",
            "description": "Dataset containing all scraped Amazon keyword suggestions.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Keyword suggestions",
              "transformation": {
                "fields": [
                  "seedKeyword",
                  "suggestion",
                  "rank",
                  "volumeProxy",
                  "department",
                  "marketplace.countryCode"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.1.2",
    "imageDigest": "ada4a7c7b0f217aa4f3d1a00d5ded3a19a9cb6a8677d852e96bc3c692d513584",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.003852222222222222
    }
  }
}