Google Autocomplete Suggestions Scraper – Keyword Ideas avatar

Google Autocomplete Suggestions Scraper – Keyword Ideas

Pricing

from $0.40 / 1,000 search suggestions

Go to Apify Store
Google Autocomplete Suggestions Scraper – Keyword Ideas

Google Autocomplete Suggestions Scraper – Keyword Ideas

Get Google search suggestions for a list of keywords in bulk: a-z, question and preposition expansion, any language and country. Pay only per distinct suggestion delivered; no API key, no proxy, no personal data.

Pricing

from $0.40 / 1,000 search suggestions

Rating

0.0

(0)

Developer

Rowcraft

Rowcraft

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

24 minutes ago

Last modified

Share

Google Autocomplete Suggestions Scraper: Keyword Ideas in Bulk

Get the Google search suggestions that appear while someone types, for a whole list of keywords at once, in the language and country you choose. Add the expansions you want (a to z after the keyword, question words in front, prepositions after, a letter in front) and one keyword turns into hundreds of real search phrases, delivered as JSON, CSV or Excel with the exact text that produced each one.

You pay per distinct suggestion delivered. There is no API key, no login, no proxy and no browser: the actor sends plain requests, one at a time, to the public suggestion endpoint, after reading its robots.txt.

Three facts before you start, because they decide whether this is the right tool:

  • It gives phrases, not numbers. The suggestion list does not carry search volumes, competition or trends, and the actor does not invent them. Use it to find what people type; use another source to measure how often.
  • One request returns about ten suggestions. More suggestions come from more requests: the plain keyword is 1 request, the a to z expansion is 26 more, and all expansions together are 92 more per keyword. At the default pace of one request every 700 ms that is about 80 requests a minute.
  • Expansions go one level deep. A suggestion is never expanded again, so a run is predictable in size and time and cannot grow without limit.

Results of Google Autocomplete Suggestions Scraper – Keyword Ideas in the Apify dataset view

What you get

One row per distinct suggestion:

  • The suggestion itself, as Google wrote it, with spaces cleaned
  • The keyword you gave (query) and the text that was sent to Google when the suggestion first appeared (expandedQuery, for example standing desk c or how meal prep)
  • How that text was made (expansionType): base for your keyword, alphabet for a letter or digit after it, question for a question word in front, preposition for a preposition after it, prefix for a letter in front
  • The position of the suggestion in the list Google returned for that text, counting from 1
  • Language and country used, and the time the suggestion was read
  • A stable id made of language, country and the suggestion in lower case, which is what Only new rows remembers between runs

The run also writes a COVERAGE record with one line per keyword (ok, empty, partial, error, blocked, not_checked or robots_disallowed, with the reason and the number of requests and rows) and a RUN_SUMMARY with the counts: requests sent, suggestions read, duplicates skipped, suggestions dropped by the privacy filter, and why the run stopped.

Why this actor

  • You pay for suggestions, not for requests. A suggestion that already appeared under an earlier request of the same run is delivered once and charged once. Suggestions equal to the text you typed, failed requests and refused requests are never charged.
  • Every row says where it came from. expandedQuery and expansionType tell you which expansion found the phrase, so you can keep only the questions, only the "keyword for ..." phrases, or only what the plain keyword returned.
  • Language and country are separate settings. The same keyword gives different suggestions in different markets, and 39 languages and 60 countries are in the lists, so you can compare markets in one schedule.
  • Polite and honest by design. The actor identifies itself, reads robots.txt first, sends one request at a time with a pause between them, uses no proxy and does not try to get around a block. When Google answers with a rate limit, a refusal or the CAPTCHA page, the run stops cleanly, tells you in the summary, and keeps what it already delivered.
  • Built for schedules. Turn on Only new rows and a weekly run costs only the suggestions you did not have last week, which is a simple way to watch a market for new search phrases.
  • Small and cheap to run. The actor runs in 256 MB, and the platform usage of a run is included in the price per suggestion.

How to use it

  1. Open the Actor and fill in Keywords (the other fields are optional filters).
  2. Set Maximum suggestions to a small number for a first try (the default is a safe start).
  3. Click Start. The status line shows progress; the run stops cleanly at your limit or at the charge limit you set in the run options.
  4. Open the Dataset tab and download JSON, CSV, Excel, XML or HTML, or send the rows to Google Sheets, Slack, Make, n8n or Zapier with the Integrations tab.
  5. To run it on a schedule, use Schedules in Apify Console and turn on Only new rows since the last run below: every run then costs only the new rows, and a webhook URL tells you when something new came in.

A first run that costs next to nothing: keep Keywords as it is, pick Alphabet under Expansions, and leave Maximum suggestions delivered at 100. It sends about eleven requests and finishes in under a minute.

Input

FieldWhat it does
queriesKeywords or phrases, one per line. Spaces are cleaned, duplicates are skipped, and a keyword is cut at 200 characters. Up to 10,000 per run.
languageThe language of the suggestions (hl), default en. A list of 39 languages.
countryThe country the suggestions are for (gl), default us. A list of 60 countries.
expansionsAny of alphabet (keyword + a to z), digits (keyword + 0 to 9), questions (14 question words in front), prepositions (16 prepositions after), prefixAlphabet (a letter in front). Empty = only the plain keyword.
maxItemsStop after this many delivered suggestions. 0 = no limit.
onlyNew, stateNameDeliver only suggestions that were not delivered to you in an earlier run with the same state name
notifyUrl, notifyWhenEmptyA webhook that receives one message when the run ends; see Automation below
requestIntervalMsPause between requests, default 700 ms, minimum 500 ms

How many requests an expansion sends for each keyword:

ExpansionText sentRequests
nonestanding desk1
alphabetstanding desk a ... standing desk z26
digitsstanding desk 0 ... standing desk 910
questionswhat standing desk, why standing desk, how standing desk ...14
prepositionsstanding desk for, standing desk with, standing desk near ...16
prefixAlphabeta standing desk ... z standing desk26

Example: one keyword with the a to z expansion, 100 suggestions at most.

{
"queries": ["standing desk"],
"language": "en",
"country": "us",
"expansions": ["alphabet"],
"maxItems": 100
}

Example: questions and prepositions for two keywords in German, for Germany.

{
"queries": ["küche planen", "arbeitsplatte"],
"language": "de",
"country": "de",
"expansions": ["questions", "prepositions"],
"maxItems": 0
}

Example: a weekly check of new search phrases around a brand, with a Slack message when something new appears.

{
"queries": ["your brand", "your product category"],
"expansions": ["alphabet", "questions"],
"onlyNew": true,
"stateName": "weekly-brand-watch",
"notifyUrl": "https://hooks.slack.com/services/..."
}

Output

9 fields per row. Empty values are null, never missing, so CSV and Excel columns are stable.

FieldTypeExample
idstringen|us|standing desk converter
querystringstanding desk
expandedQuerystringstanding desk c
expansionTypestringalphabet
suggestionstringstanding desk converter
positioninteger2
languagestringen
countrystringus
scrapedAtstring2026-10-22T10:21:05.310Z

Example rows

Two real rows from a run (long texts shortened here, complete in the dataset):

[
{
"id": "en|us|standing desk converter",
"query": "standing desk",
"expandedQuery": "standing desk",
"expansionType": "base",
"suggestion": "standing desk converter",
"position": 2,
"language": "en",
"country": "us",
"scrapedAt": "2026-10-22T10:10:25.794Z"
},
{
"id": "en|us|how meal prep for weight loss",
"query": "meal prep",
"expandedQuery": "how meal prep",
"expansionType": "question",
"suggestion": "how meal prep for weight loss",
"position": 4,
"language": "en",
"country": "us",
"scrapedAt": "2026-10-22T10:11:02.121Z"
}
]

Results can be downloaded as JSON, CSV, Excel, XML or HTML from the Dataset tab, or read through the Apify API.

position is the place in the list Google returned for expandedQuery. When a suggestion is identical to the text that was sent (Google sometimes returns the typed text itself, first in the list), it is skipped, so the first delivered row of such a keyword has position 2. Because each suggestion is delivered once, the position and the expandedQuery are those of the first request that returned it. expandedQuery is shown without the space that questions and prepositions end with.

Input form of Google Autocomplete Suggestions Scraper – Keyword Ideas

Pricing

Pay per result. You pay for each suggestion delivered to your dataset, nothing else: no subscription, no minimum, no charge for rows your filters drop or for the requests behind them.

Your Apify planPrice per 1,000 rowsPrice per row
Free plan$0.60$0.0006
Starter plan$0.55$0.00055
Scale plan$0.48$0.00048
Business plan and above$0.40$0.0004

Example: 1,000 suggestions cost $0.60 on the Free plan and $0.40 on the Business plan. Platform usage of the run (compute, storage) is included in that price and is not billed to you separately (pay per event: the actor covers it). A start event of $0.00005 is charged once per run (Apify default). Cap your spend: set Maximum total charge in the run options. The actor stops cleanly when the cap is reached and you keep everything delivered until then. The run summary (RUN_SUMMARY in the key-value store) says why a run stopped.

Automation: only new rows, notifications, schedules

Only new rows has a clear meaning here. The actor remembers the id of every suggestion it delivered to you (language, country and suggestion in lower case). The next run with the same stateName skips those and charges only suggestions that are new for you. The first run delivers everything it finds. Use a different stateName for each keyword list, language or country that you want to track separately.

Only new rows since the last run. Turn on onlyNew and the actor remembers every suggestion it delivered to you (in a key-value store named rowcraft-google-autocomplete-suggestions-scraper-state in your Apify account). The next run with the same stateName skips what you already have and you pay only for new rows. The first run delivers everything that matches. Use a different stateName for each schedule or search so they keep separate memories.

Notification when the run ends. Put a webhook address in notifyUrl and the actor sends one JSON POST with the number of new rows, links to the dataset (JSON and CSV) and the run. It works out of the box with Slack and Discord incoming webhooks (the message is in text and content), with Make, n8n and Zapier catch hooks, and with your own endpoint. By default it is sent only when there is at least one new row; notifyWhenEmpty sends it every time.

Schedules. Create a schedule in Apify Console (hourly, daily, weekly or cron) with onlyNew on. A daily schedule gives you a feed of new suggestions for the price of the new rows only.

Integrations. Send the results to Make, n8n, Zapier, Google Sheets, Slack, Google Drive, Airtable or any webhooks from the Integrations tab of the Actor, with no code. Apify also offers native actions for Make, n8n and Zapier.

API, SDKs and AI agents. Every run is available through the Apify API and the official JavaScript and Python clients; the Actor can also be called by AI agents through the Apify MCP server. The example input in the API tab is a working call.

Use cases

  • Keyword research for SEO and content: start from a seed keyword and collect hundreds of phrases people actually type, grouped by the expansion that found them.
  • FAQ sections and article outlines: run the questions expansion and keep the rows whose expansionType is question; each one is a question in the words searchers use.
  • Product and category naming: the prepositions expansion shows the uses and comparisons attached to a product ("for", "vs", "without"), which helps with titles and filters in a shop.
  • Market comparison: run the same keywords for several languages and countries and compare what each market adds after the keyword.
  • Ad keyword and negative keyword lists: the alphabet expansion surfaces brand names, accessories and unrelated meanings next to your keyword, useful when you build match lists.
  • Trend watching: a schedule with Only new rows tells you when a new phrase starts to appear around your brand, product or topic.
  • Training data for your own tools: a clean list of short real queries per topic and language, with no personal data.

Ready-made examples, each with the input filled in (open one and press Start, or save it as your own task):

What this actor does not do

  • Give search volumes, competition, cost per click, trends or rankings. The suggestion endpoint does not provide them, and the actor does not estimate them.
  • Return search results, "People also ask" boxes, "Related searches" or any page of Google Search. Only the suggestion list is read.
  • Read suggestions of YouTube, Amazon, Bing or any other service. This actor reads one endpoint, the one behind Google Search suggestions.
  • Expand suggestions again. The depth is always one level: your keyword, then its expansions.
  • Use proxies, solve CAPTCHAs or get around a block. When Google refuses a request, the run stops and says so.
  • Look at who typed what. The endpoint returns aggregated phrases without any information about people, and so does this actor.

Limits and fair use

  • About ten suggestions per request. Google decides the number; the actor reports what comes back. The distinct suggestions per keyword depend on the keyword: in our test runs 11 requests of the a to z expansion gave 100 distinct suggestions for a product keyword, and 15 question requests gave 111 for a food keyword. Obscure keywords can give few or none, and then COVERAGE marks the keyword empty.
  • One request at a time, 700 ms apart by default (minimum 500 ms), after one robots.txt request per run. A keyword with every expansion is 93 requests, about a minute and a half. 1,000 keywords with the a to z expansion are 27,000 requests, five to six hours: raise the run timeout or split the list.
  • A refusal ends the run. If Google answers with HTTP 429, 503 or 403, with an anti-bot page, or with a redirect to its CAPTCHA page, the actor stops at once, does not retry, writes the reason into RUN_SUMMARY and COVERAGE, and marks the keywords it did not reach as not_checked. Suggestions delivered before the refusal stay in the dataset. Try again later, with a longer pause or with fewer expansions. Ten failed requests in a row (for example answers that are not a suggestion list) stop the run in the same way.
  • The endpoint is not a documented product. It is the address the Google Search box uses and it answers without a key today, but it can change its answer, add limits or disappear without notice. If that happens the actor reports it; it does not look for another way in.
  • Suggestions vary. They change with time, with language and country, and a little between two identical requests. A second run can return a phrase the first did not.
  • Keywords are cut at 200 characters and cleaned of repeated spaces. Up to 10,000 keywords per run.
  • The run stops 60 seconds before its timeout with the summary, the coverage and the Only new rows memory saved.

Data source and licence

The data is the list of search suggestions that the Google Search box shows while a person types. The actor asks for it the way a browser does, with the suggestqueries.google.com suggestion endpoint, a keyword, a language (hl) and a country (gl). No key, cookie or login is used.

Before the first request the actor reads the robots.txt of that host and applies it. On 22 October 2026 the host returned "not found" for robots.txt, which means no restrictions, and the robots.txt of the main Google site had no rule for the suggestion path. The Google Terms of Service (https://policies.google.com/terms) forbid using automated means to access its services in violation of the machine-readable instructions on its web pages, such as robots.txt files; the actor reads and obeys those instructions on every run, and stops if they change.

The suggestions are short search phrases shaped by many people's searches. They stay subject to the terms of the service that produces them: Rowcraft claims no rights over them, and you are responsible for how you use the results under the law and the terms that apply to you.

This actor is independent and not affiliated with or endorsed by Google. Google and the names of its services are trademarks of their owner and are used only to say which suggestions the actor reads. How the suggestions are created is explained in the help page at https://support.google.com/websearch/answer/7368877.

Privacy: no personal data

Rowcraft actors are built not to collect personal data:

  • The endpoint returns aggregated search phrases, not the searches of individuals, and the actor sends no cookies, no account and no identifier of yours.
  • A suggestion that contains an @, a run of seven or more digits, or a text that looks like an e-mail address or a phone number is dropped before it reaches the dataset, and counted in the summary as personalLookingSkipped.
  • A phrase can still name a public figure or a business when many people search for it. The actor cannot tell a name from other words and does not try to; the rows hold the phrase, nothing about anyone who typed it.
  • The keywords you give are stored only in the input and in the query field of your own dataset.

You are responsible for using the data in line with the law that applies to you.

Other Rowcraft actors

All Rowcraft actors read official or public sources, deliver flat rows without personal data and support only-new runs and notifications:

FAQ

Is it legal to scrape Google autocomplete? The actor reads a public suggestion endpoint without a login, after checking and obeying its robots.txt, and the Google Terms of Service forbid automated access only when it violates the machine-readable instructions of the site. We read the page of the terms on 22 October 2026 and describe it in the Data source section. This is not legal advice: whether and how you may use the phrases, for example in a commercial product, depends on the law and on the terms that apply to you.

Does it collect personal data? No personal data. The endpoint returns aggregated search phrases, suggestions with an @ or a long number are dropped, and nothing about the people who typed is available or stored. See the Privacy section.

Why is the result empty or smaller than I expected? Open the COVERAGE and RUN_SUMMARY records. A keyword marked empty got no suggestions from Google, which happens with rare or misspelled keywords. blocked or a warning in the summary means Google refused a request and the run stopped; try again later. robots_disallowed means robots.txt changed. With Only new rows on, suggestions you already received are skipped and not charged. With Maximum suggestions delivered set low, the run stops as soon as the number is reached.

Does it show search volume? No. The suggestion endpoint returns only phrases, and this actor does not estimate volumes or competition. Combine the phrases with a volume source of your choice.

How many suggestions do I get for one keyword? The plain keyword gives about ten. Each expansion request adds up to ten more, and duplicates are removed: in our test runs the first 11 requests of the a to z expansion gave 100 distinct suggestions and 15 question requests gave 111. All expansions together send 93 requests per keyword. Rare keywords give far fewer, and the last requests of an expansion add fewer new phrases than the first ones.

What do the expansion types mean? base is your keyword as typed. alphabet adds a letter or a digit after it ("standing desk c"). question puts a question word in front ("how standing desk"), preposition adds a preposition after it ("standing desk for"), and prefix puts a letter in front ("c standing desk"). Google often completes an expansion into a more natural phrase, so a suggestion may not start with the text that was sent.

Why does the same keyword give different suggestions in two countries? Google tailors suggestions to the country (gl) and the language (hl). Set both so that the answer matches the market you are studying.

Do I pay for duplicates or for blocked requests? No. A suggestion that appeared in an earlier request of the same run is skipped, suggestions equal to the typed text are skipped, and failed or refused requests produce no rows. Only distinct suggestions delivered to your dataset are charged, plus the small start event.

What happens if Google blocks the run? The actor stops at once: no retries, no proxy, no CAPTCHA solving. You keep the suggestions already delivered and pay only for them. The summary says which request was refused and how, and COVERAGE lists the keywords that were not reached.

Can I get more than ten suggestions per request? No, the endpoint returns about ten at most. The way to get more is more requests with small changes, which is what the expansions do.

Which languages and countries can I use? The 39 languages and 60 countries in the lists of the input form, with the codes shown there (hl and gl of the endpoint). Choose the pair that matches the market you study.

How do I run it every week and only pay for new phrases? Turn on Only new rows since the last run, give the run a stateName, and create a schedule in Apify Console. A webhook in notifyUrl tells you when new phrases arrived.

Support and reviews

Problems, missing fields, questions: open an issue on the Issues tab of this Actor. We answer within one working day and fix confirmed bugs in the next release; the changelog lists every change.

If this Actor saved you time, a short review on its page helps other users find it and helps us keep improving it.