Google Autocomplete Keyword Expander – A-Z & Questions
Pricing
$2.00 / 1,000 keyword expandeds
Google Autocomplete Keyword Expander – A-Z & Questions
Expand seed keywords with Google Autocomplete suggestions: a-z, 0-9, question words, prepositions and custom modifiers, chosen language/country (hl/gl), optional recursion. One row per keyword or per suggestion, plus CSV. US$0.002 per keyword with results, no start fee. Unofficial; no proxy needed.
Pricing
$2.00 / 1,000 keyword expandeds
Rating
0.0
(0)
Developer
星賢 陳
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Google Autocomplete Keyword Expander – A-Z, Questions, Language & Country Options
Give it seed keywords. It returns the suggestions Google Autocomplete shows for each seed, plus for the seed with a–z, 0–9, question words, prepositions or your own modifiers added. Use it for long-tail keyword research, content ideas and "people also ask"-style question lists. Language (hl) and country (gl) are configurable; no proxy and no Google account are needed.
Unofficial. Not affiliated with, endorsed by or sponsored by Google. "Google" is used only to describe the data source. The Actor reads Google's public, undocumented autocomplete endpoint (
suggestqueries.google.com), which Google can change or limit without notice.
What you get
- One dataset row per expanded keyword (default):
suggestions(array of strings),suggestionCount, anddetails(each suggestion with themode,modifier, exactquerysent andrank1–10). OUTPUT.csvin the key-value store: flat, one row per suggestion:seed, keyword, depth, mode, modifier, query, suggestion, rank, lang, country, status, error.RUN_SUMMARY: requests, 429s, keywords with data / empty / failed, charged events.- Set
outputLayout: "flat"if you want one dataset row per suggestion instead.
Suggestions are deduplicated per seed (or per run with dedupAcrossSeeds). Optional recursion (maxDepth 1–2, hard cap 2) expands the top suggestions of each keyword again; maxKeywords (max 1000) caps the total. By default it is 100, or the number of seeds if there are more, so every seed is expanded. If you set a lower limit, the seeds beyond it get a free row with status skipped-max-keywords.
Example output (real run, 2026-10-17, seed "air fryer", hl=en, gl=us)
Dataset row (arrays shortened here; the real row had 375 suggestions):
{"seed": "air fryer", "keyword": "air fryer", "depth": 0, "status": "ok", "suggestionCount": 375,"suggestions": ["air fryer", "air fryer baked potato", "air fryer chicken breast", "air fryer salmon", "air fryer chicken wings", "…"],"details": [{ "suggestion": "air fryer baked potato", "mode": "base", "modifier": null, "query": "air fryer", "rank": 2 }, "…"],"lang": "en", "country": "us", "error": null}
OUTPUT.csv rows from the same run:
seed,keyword,depth,mode,modifier,query,suggestion,rank,lang,country,status,errorair fryer,air fryer,0,base,,air fryer,air fryer baked potato,2,en,us,ok,air fryer,air fryer,0,questions,why,why air fryer,why air fryer is better than oven,2,en,us,ok,air fryer,air fryer,0,questions,why,why air fryer,why air fryer smell like plastic,3,en,us,ok,air fryer,air fryer,0,alphabet,b,air fryer b,air fryer broccoli,4,en,us,ok,
Expansion modes
| Input | Queries per keyword | Example query |
|---|---|---|
includeBase (default on) | 1 | air fryer |
alphabet (default on) | 26 | air fryer b |
questions (default on) | 12: how, what, why, when, where, which, who, can, is, are, does, will | why air fryer |
numbers | 10 | air fryer 2 |
prepositions | 12: for, with, without, to, near, vs, like, versus, and, or, is, can | air fryer vs |
customModifiers + customPosition | 1 per modifier per position | best air fryer |
Google returns up to 10 suggestions per query. They may not contain the exact modifier: for example, how standing desk returned "what standing desk to buy".
Measured performance (internal tests, 2026-10-17; not a guarantee)
50-seed run on Apify (internal test, 2026-10-17, build 0.2.8 with the RondelBot/1.0 User-Agent, default modes = 39 queries per seed, 256 MB): 50/50 seeds returned suggestions, 1,950 requests, 0 throttled (0 × HTTP 429), 17,467 suggestions (232–381 per seed, average 349), 878 s (about 18 s per seed; requests are sent one at a time with a 400 ms pause). At that pace, the maximum of 1,000 keywords per run should fit in the default 6-hour run timeout (an estimate; not tested).
Same 20 seeds, run on Apify at the same time with the RondelBot/1.0 User-Agent and with a standard Firefox User-Agent (internal test, 2026-10-17, build 0.2.7, default modes): both runs 20/20 seeds with suggestions, 780 requests, 0 failed requests. The RondelBot/1.0 User-Agent returned 6,581 suggestions and the Firefox one 6,884 (about 4% fewer with RondelBot/1.0).
Not tested with the current version: runs larger than 50 seeds, sustained scheduled use, or more than two parallel runs. Google may throttle heavier use. The Actor then retries 408/429/5xx errors with exponential backoff and honours Retry-After.
Pricing
Pay per event: US$0.002 per keyword expanded (a seed or a recursive child keyword that returned at least one suggestion). No start fee.
- Free: keywords where every query failed, keywords with no suggestions, and keywords skipped because your run hit its maximum charge or
maxKeywords. - Charging depends on whether suggestions came back, not on their quality. A keyword that gets any suggestions from Google is charged, even if the suggestions are not useful to you. A keyword with no suggestions gets status
emptyand is free (internal test, 2026-10-18, build 0.2.11: 4 random letter strings such as "qzxjv wplkq zzvx" each returned no suggestions in 2 runs and were not charged). Results for random strings can change over time. - With recursion, every expanded child keyword is a separate event. Example:
maxDepth: 1, recursionTopN: 5turns 1 seed into up to 6 events. - Cap your spend with the run's maximum total charge; the remaining keywords are skipped and not charged. Charges are recorded per keyword, so a platform restart does not charge the same keyword twice.
Input example
{"seeds": ["air fryer", "standing desk"],"alphabet": true,"questions": true,"prepositions": false,"customModifiers": ["best", "cheap"],"customPosition": "prefix","hl": "en","gl": "us","maxDepth": 0,"outputLayout": "keyword"}
Google Autocomplete API with Python, JavaScript and curl
Replace <YOUR_APIFY_TOKEN> with your token from Apify Console → Settings → API & Integrations.
curl (waits for the run and returns the dataset items):
curl -X POST "https://api.apify.com/v2/acts/raspberry_rondel~google-autocomplete-keywords/run-sync-get-dataset-items" \-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"seeds": ["air fryer"], "alphabet": false, "questions": true}'
Python (pip install "apify-client>=3"):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("raspberry_rondel/google-autocomplete-keywords").call(run_input={"seeds": ["air fryer"], "alphabet": False, "questions": True})for row in client.dataset(run.default_dataset_id).iterate_items():print(row["keyword"], row["status"], row["suggestionCount"], row["suggestions"][:5])
JavaScript / Node.js (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('raspberry_rondel/google-autocomplete-keywords').call({seeds: ['air fryer'],alphabet: false,questions: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const row of items) console.log(row.keyword, row.status, row.suggestionCount, row.suggestions.slice(0, 5));
Related: Google Trends
Need to know how interest in these keywords changes over time? Try our Google Trends Bulk Compare Actor: many keywords on one 0–100 scale, as flat rows and CSV.
FAQ
Is this search volume? No. Autocomplete shows what Google suggests, not how often a term is searched.
Are the results the same as in my browser? Not always. Browser suggestions can be personalised (signed-in history, location, device). This Actor sends anonymous requests with your hl/gl from Apify's servers, and Google changes suggestions over time.
Which languages and countries work? The Actor checks the hl/gl codes before it sends a request. Codes that are not valid language or two-letter country codes (for example hl: "xx-INVALID" or gl: "zz") are rejected: the run fails with an error message, nothing is fetched and nothing is charged. Valid codes are passed to Google as entered (surrounding spaces removed, the country code in lower case). This check confirms the code is a real language or country code, not that Google has suggestions for it. We checked only Japanese (hl=ja, gl=jp), which returned correct UTF-8 text. Other languages were not tested individually. The CSV is UTF-8 with a BOM so Excel opens it correctly.
Why does one keyword have fewer than 39 × 10 suggestions? Duplicates are removed, and many queries return fewer than 10 suggestions.
What happens on errors? Each failed query is retried with backoff. If some queries for a keyword fail, it is marked partial (charged, because it has data). If all fail, it gets an error row and is not charged.
Does it collect personal data? It is not designed to. It only sends your seed keywords and stores Google's public suggestion strings. Suggestions can occasionally contain the names of well-known people, as they appear in Google's suggestions.
Do I need a proxy? No. None is used.
Is it allowed to use this endpoint? The endpoint is public and needs no login or API key, and suggestqueries.google.com publishes no robots.txt. It is still an undocumented endpoint, not an official Google API, and Google's Terms of Service apply to how you use the results. Do not use the suggestions to manipulate search results or to generate spam content. The Actor sends requests at a modest pace (one at a time, with a short pause after each), and each request identifies the Actor in the User-Agent (RondelBot/1.0). You are responsible for making sure your use fits Google's terms and the laws that apply to you. This is general information, not legal advice.