Search Autocomplete by Market - the same seed, every market avatar

Search Autocomplete by Market - the same seed, every market

Pricing

from $1.50 / 1,000 autocomplete queries

Go to Apify Store
Search Autocomplete by Market - the same seed, every market

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

Stephen Psaradellis

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 days ago

Last modified

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:

fieldwhat it is
keywordthe suggestion, exactly as returned
market / language / countrythe hl:gl pair that answered
seedthe keyword you asked for
querythe exact string sent (seed, seed + a letter, or a depth-2 suggestion)
position1-based position in that market's list - an ordinal, not a rank
relevancethe endpoint's own score when it sends one, verbatim; null otherwise
depth0 seed, 1 letter-by-letter expansion, 2 discovered suggestion re-queried
read_atwhen 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

  1. 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.
  2. Put your own seeds in Seed keywords and your markets in Markets, as language:country pairs. Every seed is asked once per market, so three markets is three times the queries.
  3. Read the dataset in Console, pivot it by market, export it as JSON or CSV, or fetch it from the API with the run's defaultDatasetId.

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:country pairs. 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-z and digit 0-9. This is what surfaces the long tail. 36 extra queries per seed per market.
  • depth - 2 additionally re-queries every suggestion found, in the market that produced it. Bound it with maxQueries.
  • 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:

eventpricewhen
query$0.0015one request to the autocomplete endpoint in one market
suggestion-row$0.002one 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:

runeventsprice
default: 1 seed, 1 market, expanded, depth 137 queries + 535 rows (measured 2026-09-08)about $1.13
the sample input above (2 seeds x 3 markets, capped)up to 200 + 500at most $1.30
1 seed, 3 markets, no expansion3 + about 45about $0.09
the default caps, whatever you feed them30,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 install
npm start

Input is read from storage/key_value_stores/default/INPUT.json; the dataset lands under storage/datasets/default/.