Search & SEO · Live on Apify

Google Autocomplete Keyword Scraper

Get the phrases Google suggests when people start typing. Add seed keywords, pick a language and country, and export the list.

About $0.05 for 1,000 suggestions$0.00005 per suggestion + $0.001 per run. Apify bills you, not us.One suggestion in a run of its own: about $0.001.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

suggestioncoffee near me
normalizedSuggestioncoffee near me
seedcoffee

How to use it: 3 steps

  1. 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.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: coffee in Seed keywords. Each start is one run.
  3. 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 forPriceWhen
Saved suggestion$0.00005One unique useful Google Autocomplete suggestion saved to the default Dataset.
Start fee$0.001Charged 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
  1. Open Input in Apify Console.
  2. For a new form, keep the small prefill: keywords: ["coffee"], language: "en", country: "us", client: "chrome", and expansionModes: ["exact"].
  3. Keep maxResults: 100 for the demo. Set a maximum cost per run in Apify if you need a platform charge cap.
  4. Click Start.
  5. Open Output → Suggestions or the default Dataset. Check suggestion, seed, generatedQuery and googleRank. Open Run summary for empty responses, errors and limits.
Use cases
TaskSettingsFields to useNext step
Content ideaskeywords, expansionModes: ["exact", "questions"]suggestion, generatedQuery, expansionTokenReview phrases in your content plan.
Locale comparisonRepeat the same keywords with different language / countryseed, language, country, googleRank, fetchedAtCompare snapshots; differences are not search-volume measurements.
Search interface researchexpansionModes: ["exact"]suggestion, seed, googleRankUse 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

SymptomWhat to checkSafe next action
Empty Datasetstatus, emptyResponses, technicalFailures, outcomesTry a clear public seed only when the summary confirms a valid empty response.
invalid_inputSeed count/length and allowed settingsCorrect the input; do not add a login or token.
blocked_or_consent, rate_limitedAccess denial, HTML or redirectsStop repeated runs. Retry later with a small query plan and lower concurrency.
malformed_responseUnexpected JSON, suggestion types or a different echoed queryShare the run ID with support. Do not treat it as an empty suggestion list.
retry_exhaustedTimeout/network/server failure after bounded attemptsUse fewer queries or lower concurrency; check the summary before retrying.
response_too_largeResponse size exceeded maxResponseBytesCheck for source drift; increase the byte cap only within the documented range.
stopped with useful rowslimits and outcomesExport the rows already saved. Increase only the specific limit you need.
resource_errorMemory outside 256–1,024 MBChoose supported memory. This is separate from invalid input.
Recent updates
  1. 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.
  2. Version 0.1.4

    • Uploaded the release candidate to Apify as latest.
    • Added PPE-aware Dataset writes for the suggestion-saved event.
    • Reduced public hard caps to 500 generated Google requests and 5,000 saved suggestions.
  3. Version 0.1.1

    • Hardened local npm start so 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.

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.

one result · JSON
{
  "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.

Python · apify-client
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
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"}'
LangChain · langchain-apify
# 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)
FieldType
idstring
suggestionstring
normalizedSuggestionstring
seedstring
normalizedSeedstring
generatedQuerystring
expansionModestring
expansionTokenstring
languagestring
countrystring
clientstring
surfacestring
googleRankinteger
sourceUrlstring
sourceRequestIdstring
fetchedAtstring
metadataobject
duplicateOfstring
Input settings (15)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Seed keywords requiredkeywordsarray["coffee"]
Languagelanguagestring"en"
Countrycountrystring"us"
Google clientclientstring"chrome"
Expansion modesexpansionModesarray["exact"]
Question prefixesquestionPrefixesarray["how", "what", "where", "why", "when", "which"]
Maximum Google requestsmaxGeneratedQueriesinteger50
Maximum saved suggestionsmaxResultsinteger100
Maximum concurrencymaxConcurrencyinteger4
Request timeoutrequestTimeoutMillisinteger8000
Maximum retriesmaxRetriesinteger1
Maximum response sizemaxResponseBytesinteger65536
Maximum run timemaxRunTimeSecondsinteger240
Include Google metadataincludeRawMetadatabooleantrue
Maximum estimated chargemaxChargeUsdnumber

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure