Search Autocomplete by Market - the same seed, every market
Pricing
from $1.50 / 1,000 autocomplete queries
Search Autocomplete by Market - the same seed, every market
Google's own search suggestions for your seed keywords, asked once per market (language:country) so you can compare them side by side: "candle" completes differently in en:us, en:gb and de:de. Expands letter by letter. One row per suggestion per market. No login, no key, no invented volumes.
Pricing
from $1.50 / 1,000 autocomplete queries
Rating
0.0
(0)
Developer
Stephen Psaradellis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
22 days ago
Last modified
Categories
Share
Search Autocomplete by Market
The same seed keyword, asked of every market, side by side.
Type candle into Google in the United States and the box completes it to
candles, candlelight concert chicago. Ask the same thing with de:de and
the first completion is candlelight konzert, then candle light dinner. Ask
en:gb and the list changes again. That difference is what this Actor sells -
one dataset row per suggestion per market, ready to pivot.
It reads the public autocomplete endpoint the search box itself calls. No login, no API key, no results page, and no invented search volumes.
Use case
You are about to launch the same product page in three countries and you need
the words each market actually types. Not a translation of your English
keywords - the phrases the search box itself offers when someone starts typing
there. Ask candle in en:us, en:gb and de:de and you get three different
long tails; the rows come back tagged by market, so the pivot table that shows
you the gap is one step away. Same job for a market-entry brief, a localisation
QA pass, or a PPC list you would rather not guess at.
What you get
One row per suggestion per market:
| field | what it is |
|---|---|
keyword | the suggestion, exactly as returned |
market / language / country | the hl:gl pair that answered |
seed | the keyword you asked for |
query | the exact string sent (seed, seed + a letter, or a depth-2 suggestion) |
position | 1-based position in that market's list - an ordinal, not a rank |
relevance | the endpoint's own score when it sends one, verbatim; null otherwise |
depth | 0 seed, 1 letter-by-letter expansion, 2 discovered suggestion re-queried |
read_at | when the answer came back (UTC) |
A RUN_SUMMARY record in the key-value store carries the counts for the run:
seeds, markets, queries sent, empty answers, rows pushed, errors, the
robots.txt reading the run was permitted by, and what stopped the run if a
cap did.
Sample output
Two rows from a run on 2026-09-10, exactly as the dataset holds them: the same
seed, candle, at position 1 in two markets. This is the whole product in two
rows - the US box completes it to a noun, the German box completes it to an
event.
[{"keyword": "candles","seed": "candle","query": "candle","language": "en","country": "us","market": "en:us","position": 1,"depth": 0,"relevance": 602,"read_at": "2026-09-10T15:59:52.520Z"},{"keyword": "candlelight konzert","seed": "candle","query": "candle","language": "de","country": "de","market": "de:de","position": 1,"depth": 0,"relevance": 1250,"read_at": "2026-09-10T15:59:52.534Z"}]
How to run it
- Open the Actor in Apify Console and press Start. Run with an empty input and it uses the defaults: one seed, one market, expansion on.
- Put your own seeds in Seed keywords and your markets in Markets, as
language:countrypairs. Every seed is asked once per market, so three markets is three times the queries. - Read the dataset in Console, pivot it by
market, export it as JSON or CSV, or fetch it from the API with the run'sdefaultDatasetId.
Sample input
{"keywords": ["candle","running shoes"],"markets": ["en:us","en:gb","de:de"],"expand": true,"depth": 1,"maxQueries": 200,"maxSuggestions": 500}
Input
- keywords - the seeds to expand. One query each per market, plus 36 more per seed per market when expanding.
- markets -
language:countrypairs. Every seed is asked once per market. Each market multiplies the query count. - expand - also ask each seed followed by a space and every letter
a-zand digit0-9. This is what surfaces the long tail. 36 extra queries per seed per market. - depth -
2additionally re-queries every suggestion found, in the market that produced it. Bound it withmaxQueries. - maxQueries, maxSuggestions - caps on requests sent and rows pushed. Defaults 30,000 and 60,000. These caps are also your bill ceiling.
- concurrency, timeoutSecs - how the requests are paced.
Pricing
Pay per event, with no charge for starting the Actor and no charge for platform usage:
| event | price | when |
|---|---|---|
query | $0.0015 | one request to the autocomplete endpoint in one market |
suggestion-row | $0.002 | one suggestion pushed for one market |
An empty answer costs one query event and nothing else - a seed nobody searches is a finding, and you pay for it once rather than twice. The same suggestion in a second market is a second row, because the comparison is the product. What a run costs:
| run | events | price |
|---|---|---|
| default: 1 seed, 1 market, expanded, depth 1 | 37 queries + 535 rows (measured 2026-09-08) | about $1.13 |
| the sample input above (2 seeds x 3 markets, capped) | up to 200 + 500 | at most $1.30 |
| 1 seed, 3 markets, no expansion | 3 + about 45 | about $0.09 |
| the default caps, whatever you feed them | 30,000 + 60,000 | $165.00 |
Lower maxQueries and maxSuggestions to bound a run below that.
Use it from code
The API tab on this page has ready-made snippets for Node.js, Python and
curl, including run-sync-get-dataset-items, which starts a run and returns
the rows in one call.
Use it from Claude or ChatGPT (Apify MCP)
This Actor is a tool your assistant can call directly, over the
Model Context Protocol. Apify hosts the
server at https://mcp.apify.com; adding ?tools= pins this Actor as one
named tool rather than loading the whole store.
Claude Desktop or Claude Code - add a custom connector with the URL:
https://mcp.apify.com?tools=vital_tuxedo/search-autocomplete-by-market
Any other MCP client (Cursor, VS Code, ChatGPT developer mode, your own agent) - add the server to its config:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=vital_tuxedo/search-autocomplete-by-market","headers": { "Authorization": "Bearer <APIFY_TOKEN>" }}}}
Drop the headers block to use OAuth instead: the browser opens once so you
can sign in to Apify and approve access. Then ask in plain language:
What does Google complete "candle" to in the US, the UK and Germany? Show me what only the German list has.
Your assistant starts the run, waits for it and reads the dataset back. The per-event prices above are the whole cost - going through MCP adds nothing.
No Apify account at all? This Actor is flagged eligible for agentic
payments, so an agent holding USDC on Base can buy a prepaid Apify token at
https://agi.apify.com over x402 and run it with no account and no signup.
FAQ
Does it report search volume, difficulty or CPC? No. It reports what the
box completed, in what order, in which market. Nothing here is converted into
a number the source never published, and position is an ordinal within one
market's list rather than a rank across markets.
Does it read the results page? No. The publisher's own robots.txt
disallows /search and allows /complete/search, and this Actor stays on the
side of that line the publisher drew. It also re-reads that instruction at
the start of every run, matches the path with an RFC 9309 matcher, and stops
before reading anything - and without charging a query - if the path is ever
disallowed. Permission that was checked once and never again is permission you
may have stopped holding.
What is a market, exactly? An hl:gl pair: the interface language and the
country the request is made for. en:us, en:gb, de:de, ja:jp. The pair
is what the endpoint answers to, and it is what every row is tagged with.
Does it do YouTube suggestions? No. The same endpoint will serve them with one extra parameter, and this Actor deliberately does not send it: YouTube's terms forbid automated access outside its API.
Are non-Latin markets safe? Yes, and they were the reason for a fix. The
endpoint answers a Japanese market as Shift_JIS unless UTF-8 is asked for, and
forcing a UTF-8 decode corrupts it silently - a market broken rather than
missing. The encoding is requested explicitly, so ja:jp comes back as
Japanese rather than as replacement characters.
Why did two runs give different rows? Autocomplete is a live surface and
it moves. Every row carries read_at for exactly that reason.
Running locally
npm installnpm start
Input is read from storage/key_value_stores/default/INPUT.json; the dataset
lands under storage/datasets/default/.