How to use it: 3 steps
- Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
coffeein Seed keywords. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Collect live Google Autocomplete suggestions for your seed keywords. Choose a language and country preference. Each saved row shows the suggestion, the Google query that returned it and its position in that response.
Good for
- Find phrases to review when you plan an article or product page.
- Compare suggestion lists for the same seed with different language and country preferences.
- Export suggestions with their seed and query for your own search interface research.
Who uses it
Content writers
Find real phrases to use in article titles and headings.
SEO teams
Grow a keyword list from a few seed words.
Product marketers
See how people describe a product in other languages.
Price
Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.
| What you pay for | Price | When |
|---|---|---|
| Saved suggestion | $0.00005 | One unique useful Google Autocomplete suggestion saved to the default Dataset. |
| Start fee | $0.001 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
Examples
- One suggestion: about $0.001.
- 1,000 suggestions: about $0.05.
- Every day 100 suggestions, for 30 days: about $0.18 a month.
Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 98,000 suggestions.
Prices checked on 24 October 2026. See the current price on Apify.
Questions
Does it show search volume?
No. You get suggestions and their position in the list. Search volume, CPC and competition are not included.
Does it work for non-English keywords?
Yes. Cyrillic, accented and other Unicode text is kept. Google may still answer in another language.
Are country results the same as a local user sees?
Not exactly. The country setting is sent to Google, but the IP location does not change.
Do I need a Google API key?
No. You only need an Apify account to start the tool.
Are these search volumes or Google Search rankings?
No. googleRank is a position inside an Autocomplete response. Metadata does not provide verified search volume, CPC or competition.
Are country results exact local results?
No. country sends gl; it does not change IP location. Results can also depend on Google's current behavior.
Will a repeat run have the same IDs and order?
The same saved text and first query/context have the same synthetic ID. Query-plan grouping is deterministic. Google's suggestion text and order can change, and a different first expansion path can change an ID.
Why did a low row limit still make several requests?
The Actor fetches its bounded query plan before saving rows. Lower maxGeneratedQueries when you also need fewer source requests.
Can it monitor changes or expand recursively?
It can export repeated snapshots, but it has no built-in delta state, unchanged-result filter or recursive expansion. Compare exported snapshots in your own workflow.
Details
Step by step on Apify
- Open Input in Apify Console.
- For a new form, keep the small prefill:
keywords: ["coffee"],language: "en",country: "us",client: "chrome", andexpansionModes: ["exact"]. - Keep
maxResults: 100for the demo. Set a maximum cost per run in Apify if you need a platform charge cap. - Click Start.
- Open Output → Suggestions or the default Dataset. Check
suggestion,seed,generatedQueryandgoogleRank. Open Run summary for empty responses, errors and limits.
Use cases
| Task | Settings | Fields to use | Next step |
|---|---|---|---|
| Content ideas | keywords, expansionModes: ["exact", "questions"] | suggestion, generatedQuery, expansionToken | Review phrases in your content plan. |
| Locale comparison | Repeat the same keywords with different language / country | seed, language, country, googleRank, fetchedAt | Compare snapshots; differences are not search-volume measurements. |
| Search interface research | expansionModes: ["exact"] | suggestion, seed, googleRank | Use the exported list in your own analysis or prototype. |
Tips for better results
- Turn on question prefixes to get what, how and why phrases.
- Run the same seeds with two countries to compare lists.
- Set a maximum charge if you use many expansion modes.
Limits and good to know
Troubleshooting
| Symptom | What to check | Safe next action |
|---|---|---|
| Empty Dataset | status, emptyResponses, technicalFailures, outcomes | Try a clear public seed only when the summary confirms a valid empty response. |
invalid_input | Seed count/length and allowed settings | Correct the input; do not add a login or token. |
blocked_or_consent, rate_limited | Access denial, HTML or redirects | Stop repeated runs. Retry later with a small query plan and lower concurrency. |
malformed_response | Unexpected JSON, suggestion types or a different echoed query | Share the run ID with support. Do not treat it as an empty suggestion list. |
retry_exhausted | Timeout/network/server failure after bounded attempts | Use fewer queries or lower concurrency; check the summary before retrying. |
response_too_large | Response size exceeded maxResponseBytes | Check for source drift; increase the byte cap only within the documented range. |
stopped with useful rows | limits and outcomes | Export the rows already saved. Increase only the specific limit you need. |
resource_error | Memory outside 256–1,024 MB | Choose supported memory. This is separate from invalid input. |
Recent updates
Update · 8 October 2026
- Enforce documented batch and Unicode length limits.
- Redact transport/internal error diagnostics and reject mismatched query payloads.
- Preserve full request/failure/byte accounting at row limits and bound source retries by the run deadline.
Version 0.1.4
- Uploaded the release candidate to Apify as
latest. - Added PPE-aware Dataset writes for the
suggestion-savedevent. - Reduced public hard caps to 500 generated Google requests and 5,000 saved suggestions.
- Uploaded the release candidate to Apify as
Version 0.1.1
- Hardened local
npm startso a clean checkout builds before execution. - Added a deterministic regression for stable row order when concurrent responses finish out of order.
- Recorded independent technical acceptance evidence for private build
0.1.3.
- Hardened local
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"id": "sug_ea5550cf9d7b9437389da039680feb79",
"suggestion": "coffee near me",
"normalizedSuggestion": "coffee near me",
"seed": "coffee",
"normalizedSeed": "coffee",
"generatedQuery": "coffee",
"expansionMode": "exact",
"expansionToken": null,
"language": "en",
"country": "us",
"client": "firefox",
"surface": "web",
"googleRank": 1,
"sourceUrl": "https://suggestqueries.google.com/complete/search?client=firefox&q=%3Credacted%3E&hl=en&gl=us",
"sourceRequestId": "req_a11bd8afbabbaa481657418166b901ac",
"fetchedAt": "2026-10-08T16:49:44.091Z",
"metadata": {
"suggestsubtypes": [
512,
433
]
},
"duplicateOf": null
}Use it from code
Actor ID: cliqtomedia/google-autocomplete-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/google-autocomplete-scraper").call(run_input={
"keywords": [
"coffee"
],
"language": "en"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~google-autocomplete-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["coffee"], "language": "en"}'# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("cliqtomedia/google-autocomplete-scraper")
result = tool.invoke({"run_input": {"keywords": ["coffee"], "language": "en"}})
print(result)The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.
Data fields (18)
| Field | Type |
|---|---|
id | string |
suggestion | string |
normalizedSuggestion | string |
seed | string |
normalizedSeed | string |
generatedQuery | string |
expansionMode | string |
expansionToken | string |
language | string |
country | string |
client | string |
surface | string |
googleRank | integer |
sourceUrl | string |
sourceRequestId | string |
fetchedAt | string |
metadata | object |
duplicateOf | string |
Input settings (15)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Seed keywords required | keywords | array | ["coffee"] |
| Language | language | string | "en" |
| Country | country | string | "us" |
| Google client | client | string | "chrome" |
| Expansion modes | expansionModes | array | ["exact"] |
| Question prefixes | questionPrefixes | array | ["how", "what", "where", "why", "when", "which"] |
| Maximum Google requests | maxGeneratedQueries | integer | 50 |
| Maximum saved suggestions | maxResults | integer | 100 |
| Maximum concurrency | maxConcurrency | integer | 4 |
| Request timeout | requestTimeoutMillis | integer | 8000 |
| Maximum retries | maxRetries | integer | 1 |
| Maximum response size | maxResponseBytes | integer | 65536 |
| Maximum run time | maxRunTimeSeconds | integer | 240 |
| Include Google metadata | includeRawMetadata | boolean | true |
| Maximum estimated charge | maxChargeUsd | number |
Use cases with this tool
Each guide shows all the steps and the other tools.