Autocomplete Scraper: Google, YouTube and Bing Suggestions
Pricing
from $0.14 / 1,000 suggestions
Autocomplete Scraper: Google, YouTube and Bing Suggestions
Get search suggestions (autocomplete) for a keyword list from Google, YouTube, Bing, Yahoo and Yandex. A to Z, 0 to 9 and question-word expansion, any country and language, deduplicated, with position and source. No login.
Pricing
from $0.14 / 1,000 suggestions
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
From The Mine Works, makers of Amazon Product Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.
Updated 26 Oct 2026: first release. Keyword list in, search suggestions out, from Google, YouTube, Google Images, News and Shopping, Bing, Yahoo and Yandex. A to Z, 0 to 9, question-word and preposition expansion, any country and language, one deduplicated row per suggestion with its position and source. Bookmark this Actor on its Store page so it is one click away next time.
Why choose this actor?
- See what people type, not a guess. The suggestions a search box shows while you type are the most direct public signal of what people look for. Give a keyword and get the list; turn on A to Z, 0 to 9 and question words and one keyword becomes hundreds of long-tail phrases. In our test, 5 keywords on Google with all three expansions returned 3,458 unique suggestions from 255 calls in 6 seconds.
- Every row says where it came from.
source(which search box),query(the exact text typed),position(the slot in the dropdown),expansion(direct, alphabet, number, question, preposition, custom or related),times_suggested(how many of your queries returned it) and, on Google, YouTube and Bing, the source's ownrelevancescore. Sort bytimes_suggestedorrelevanceto see the strongest phrases first. - Pay per suggestion, nothing for errors. The summary row, error rows, duplicates and anything past your limits are never charged. No account, cookies or API key for any source.
Part of The Mine Works Marketing, SEO and reviews family: Facebook Ad Library Scraper, Google Ads Transparency Scraper, Similarweb Scraper, Google News Scraper, Trustpilot Reviews Scraper, Google Trends Scraper.
Try it in one minute
Paste this into the input (JSON view) and press Start. It asks Google, YouTube and Bing for the suggestions of two keywords. It returned 93 rows in 5 seconds in our test run:
{"keywords": ["coffee grinder", "running shoes"],"sources": ["google", "youtube", "bing"],"maxItems": 100}
Put more keywords on separate lines, add "expandAlphabet": true for the A to Z fan-out, or add "country": "gb" to see what a UK searcher is shown. Apify's free plan includes $5 of credit every month, so you can try it on a real keyword list before you pay anything.
Copy to your AI assistant
themineworks/autocomplete-scraper on Apify. Returns the search suggestions (autocomplete) that Google, YouTube, Bing, Yahoo, Yandex and more show for a keyword list, one flat row per unique suggestion with position and source, no login. Call ApifyClient("TOKEN").actor("themineworks/autocomplete-scraper").call(run_input={"keywords": ["coffee grinder"], "sources": ["google", "youtube", "bing"], "expandAlphabet": true, "maxItems": 1000}), then client.dataset(run["defaultDatasetId"]).list_items().items. Input: keywords (list of strings, required, up to 5,000); sources (list, default ["google"]; google, youtube, bing, yahoo, yandex, google_images, google_news, google_shopping; amazon, duckduckgo and ebay are skipped unless useSourcesDisallowedByRobotsTxt is true); country (two letters, default "us"); language (default "en"); extraMarkets (list of "country:language", e.g. "gb:en", "de:de"); expandAlphabet, expandNumbers, expandQuestions, expandPrepositions (booleans, default false); customModifiers (list; {keyword} marks where the keyword goes); expansionDepth (0 to 2); maxSuggestionsPerKeyword (0 = all); deduplicateAcrossKeywords (boolean); maxItems (default 10000, per run); maxConcurrency (default 8); proxyConfiguration (optional). Suggestion rows have no _type field and carry keyword, suggestion, source, country, language, query, expansion, modifier, depth, position, times_suggested, relevance, suggestion_type, is_question, word_count, scraped_at. Each run also writes one row with _type "summary", one with _type "info" when rows were delivered, and a row with _type "error" for each input or source that could not be used; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~autocomplete-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Eight sources by default. Google, YouTube, Google Images, Google News, Google Shopping, Bing, Yahoo and Yandex. Pick one or all in
sources; each keyword is asked on each one. - Four expansions, plus your own. A to Z (26 calls per keyword and source), 0 to 9 (10 calls), question words in front (14 calls in English: how, what, why, can, when, where, who, which, is, are, do, does, should, will) and prepositions after (12 calls: for, with, without, near, to, and, or, in, on, vs, like, from). Question words are translated for Spanish, German, French, Italian, Portuguese, Dutch, Russian and Turkish.
customModifiersadds your own, for examplenear meorbest {keyword} for beginners. The alphabet follows the language: Cyrillic for ru and uk, Greek for el, Arabic for ar, Hebrew for he, Devanagari for hi, Latin otherwise. - Go deeper.
expansionDepth1 asks the first 10 suggestions of your keyword again as keywords; depth 2 adds the first 5 of each. Those rows sayexpansion: relatedanddepth: 1or2. - Country and language.
countryandlanguageset the market;extraMarketsruns the same keywords in more markets (gb:en,de:de,br:pt-BR) and every row carries the market it answered for. Google, YouTube and Bing take the market as a parameter, so no proxy in that country is needed. - Deduplicated, with the evidence. A phrase found by several queries is one row. The first query in plan order owns it (
query,position);times_suggestedsays how many queries returned it. A suggestion that only repeats the query it answered is skipped. - Stops cleanly. 15 failed calls in a row end a source, 20 empty queries in a row end the rest of a keyword on a source, the run stops before its time limit and keeps every row, and the summary says why.
How to use it
Basic: what does the search box show for my keywords?
{"keywords": ["standing desk", "air fryer"],"sources": ["google"]}
Up to 15 suggestions per keyword, each with its position and Google's relevance score.
Long-tail keyword list for one topic
{"keywords": ["coffee grinder"],"sources": ["google"],"expandAlphabet": true,"expandNumbers": true,"expandQuestions": true}
About 690 unique suggestions per keyword in our 5-keyword test (on average 366 from A to Z, 144 from 0 to 9, 167 from the question words and 15 from the keyword itself). Filter is_question: true for FAQ ideas, or sort by times_suggested.
The same keyword on every search box
{"keywords": ["yoga mat"],"sources": ["google", "youtube", "bing", "yahoo", "yandex", "google_shopping"],"expandAlphabet": true,"maxSuggestionsPerKeyword": 200}
source is a column, so one table compares what Google, YouTube and Bing offer for the same words. maxSuggestionsPerKeyword keeps the strongest 200 for each keyword and source.
Compare countries and languages
{"keywords": ["football"],"sources": ["google", "bing"],"country": "us","language": "en","extraMarkets": ["gb:en", "in:en", "de:de", "br:pt-BR"]}
On Google, "football" in the US starts with games and scores; in the UK with results and TV; in India with matches and jerseys. Each market is a full repeat of the run, so rows and calls multiply by the number of markets.
Watch a brand's suggestions over time
Run {"keywords": ["your brand", "your brand vs"], "sources": ["google", "bing"]} on a schedule and compare runs on suggestion to see phrases appear and drop away.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
keywords | array of strings | required | Seed keywords, one per line. Up to 5,000. |
sources | array | ["google"] | google, youtube, bing, yahoo, yandex, google_images, google_news, google_shopping. amazon, duckduckgo and ebay need the robots.txt checkbox below. |
country | string | us | Two-letter country code. |
language | string | en | Language code, for example en, es, pt-BR, ja. |
extraMarkets | array | empty | More markets as country:language, for example gb:en. |
expandAlphabet | boolean | false | Keyword + each letter. |
expandNumbers | boolean | false | Keyword + each digit 0 to 9. |
expandQuestions | boolean | false | Question words in front of the keyword. |
expandPrepositions | boolean | false | Prepositions after the keyword. |
customModifiers | array | empty | Your own words; {keyword} places the keyword inside a pattern. |
expansionDepth | integer | 0 | 0 to 2: ask the first suggestions again as keywords. |
maxSuggestionsPerKeyword | integer | 0 | Keep the strongest N per keyword, source and market. 0 keeps all. |
deduplicateAcrossKeywords | boolean | false | One row per phrase in the whole run instead of one per keyword. |
maxItems | integer | 10000 | Most rows in the run, 1 to 1,000,000. Rows are delivered keyword by keyword in your order. |
maxConcurrency | integer | 8 | Parallel calls, 1 to 20. |
proxyConfiguration | object | off | Optional Apify Proxy from the first call. |
useSourcesDisallowedByRobotsTxt | boolean | false | Read Amazon, DuckDuckGo and eBay anyway. See the FAQ. |
What data do you get?
One row per unique suggestion. Suggestion rows have no _type field; the summary, info and error rows do, so a filter on _type separates them.
| Field | What it is |
|---|---|
keyword | The keyword you gave |
suggestion | The suggestion as the source shows it |
source | google, youtube, google_images, google_news, google_shopping, bing, yahoo, yandex, amazon, duckduckgo or ebay |
country, language | The market the source answered for. Yahoo has feeds for us, gb, br, mx and in only, so other countries get the US feed and the row says us, en |
query | The exact text sent to the source that first returned this suggestion, for example coffee grinder b |
expansion, modifier | How the query was built (direct, alphabet, number, question, preposition, custom, related) and what was added: the letter, digit, word or your modifier |
depth | 0 for planned queries, 1 or 2 for suggestions found by going deeper |
position | Place in the source's list for that query, 1 = first, counted as the source returned it |
times_suggested | How many different queries of this keyword returned the suggestion |
relevance | The source's own score when it gives one (Google, YouTube, Bing); higher is stronger. Scores compare within one source |
suggestion_type | The source's label when given: QUERY, ENTITY, NAVIGATION on Google, KEYWORD on Amazon |
is_question, word_count | True when phrased as a question; number of words |
scraped_at | When the row was written |
Summary row (_type: "summary", never charged): keywords_requested, keywords_read, jobs, queries_sent, queries_ok, queries_empty, queries_failed, suggestions_found, suggestions_delivered, charged_for, duplicates_skipped, echoes_skipped, withheld_by_max_items, withheld_by_per_keyword_cap, sources_used, sources_skipped_by_robots_txt, markets, http_requests, http_retries, http_blocked, http_megabytes, http_bytes_per_row, proxy_hosts (hosts that were moved to Apify Proxy), proxy_megabytes, keywords_without_suggestions, shortfall_reason when fewer rows came back than asked, and per_source with the calls, successes, failures and rows of each source. The same summary is saved as the OUTPUT record of the run.
Error rows (_type: "error", never charged): one per input that could not be used (invalid_keyword, unknown_source, invalid_market), one per source skipped for its robots.txt (source_disallowed_by_robots_txt) and one per source that stopped answering (blocked).
Stable fields for automations
These were present in every suggestion row of our test runs, and their names will not change: keyword, suggestion, source, country, language, query, expansion, depth, position, times_suggested, is_question, word_count, scraped_at.
Optional, present only when the source gives a value: modifier (not on direct queries), relevance (Google, YouTube, Bing), suggestion_type (Google, YouTube, Google Images, News and Shopping, Amazon).
Output examples
The first suggestion Google offers for "coffee grinder" (test run, 26 Oct 2026, trimmed). It was also returned by the query "coffee grinder e", so times_suggested is 2:
{"keyword": "coffee grinder","suggestion": "coffee grinder for espresso","source": "google","country": "us","language": "en","query": "coffee grinder","expansion": "direct","depth": 0,"position": 1,"times_suggested": 2,"relevance": 601,"suggestion_type": "QUERY","is_question": false,"word_count": 4}
A long-tail phrase found only by an A to Z query, and a question found by the "can" prefix:
{"keyword": "coffee grinder","suggestion": "coffee grinder zero retention","source": "google","query": "coffee grinder z","expansion": "alphabet","modifier": "z","position": 3,"times_suggested": 2,"relevance": 1150,"is_question": false}
{"keyword": "coffee grinder","suggestion": "can coffee grinder be used for spices","source": "google","query": "can coffee grinder","expansion": "question","modifier": "can","position": 1,"times_suggested": 3,"relevance": 1250,"is_question": true,"word_count": 7}
The same keyword on Bing and Yahoo (trimmed):
{ "keyword": "running shoes", "suggestion": "running shoes for men", "source": "bing", "query": "running shoes", "expansion": "direct", "position": 2, "relevance": 1299 }{ "keyword": "coffee grinder", "suggestion": "coffee grinder at walmart", "source": "yahoo", "query": "coffee grinder a", "expansion": "alphabet", "modifier": "a", "position": 3 }
The summary row of the "Try it" run, trimmed:
{"_type": "summary","keywords_read": 2,"jobs": 6,"queries_sent": 6,"suggestions_found": 95,"echoes_skipped": 2,"suggestions_delivered": 93,"sources_used": ["google", "youtube", "bing"],"per_source": {"google": { "queries": 2, "ok": 2, "failed": 0, "suggestions": 30, "rows_delivered": 30 },"youtube": { "queries": 2, "ok": 2, "failed": 0, "suggestions": 30, "rows_delivered": 30 },"bing": { "queries": 2, "ok": 2, "failed": 0, "suggestions": 35, "rows_delivered": 33 }}}
An error row for a source skipped because of its robots.txt (nothing charged):
{ "_type": "error", "error_type": "source_disallowed_by_robots_txt", "identifier": "amazon", "reason": "Amazon publishes a robots.txt that disallows automated access to its suggestion endpoint, so it is skipped. Turn on \"useSourcesDisallowedByRobotsTxt\" to read it anyway; you are then responsible for that use." }
Pricing
Pay per event: you pay for the suggestions you receive, plus a flat $0.003 per run, whatever memory you choose. Calls, retries, expansions and proxy fallback cost nothing extra.
| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
suggestion-scraped | Once per suggestion row stored in your dataset | $0.20 | $0.18 | $0.16 | $0.14 |
run-start | Once per run, after the first call returned suggestions | $0.003 | $0.003 | $0.003 | $0.003 |
The price of one suggestion is the price per 1,000 divided by 1,000. You pay per row you receive, not per call: expansions that find nothing new cost you nothing.
Never charged:
- keywords or markets that cannot be used (each gets an error row);
- a suggestion found by several of your queries: it is one row;
- repeats of your keyword that a source echoes back as its first suggestion;
- rows past your
maxItems, or pastmaxSuggestionsPerKeyword; - the summary, info and error rows;
- a run with no valid input, or one where no source returned a suggestion: the start fee is charged only once a call has returned suggestions;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.
Run it on a schedule
- Open the actor in Apify Console, set your input and click Save as a new task.
- In the task, open Schedules, click Add schedule and pick how often (every day, every Monday at 08:00 and so on).
- Compare runs on
suggestionandsourceto see new phrases, dropped phrases and position changes for your keywords. - Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.
FAQ
What does this actor read?
The public suggestion endpoints behind the search boxes of Google (suggestqueries.google.com, with YouTube, Images, News and Shopping on the same host), Bing (the OpenSearch suggestion URL api.bing.com/osjson.aspx), Yahoo (search.yahoo.com/sugg) and Yandex (suggest.yandex.com), as anyone's browser calls them while typing. It does not log in, use cookies or read search results pages.
Why are Amazon, DuckDuckGo and eBay behind a checkbox?
Their suggestion hosts publish a robots.txt that disallows automated access: completion.amazon.com says Disallow: /, autosug.ebay.com says Disallow: /, and DuckDuckGo's robots.txt has Disallow: /*?, which covers its /ac/?q= endpoint. The endpoints do answer, but the actor skips them by default and says so in an error row. If you tick useSourcesDisallowedByRobotsTxt, they are read anyway; that is your decision and your responsibility under those sites' terms. Amazon covers 13 stores (us, gb, de, fr, it, es, ca, jp, au, mx, br, nl, ae), eBay 8 (us, gb, de, fr, it, es, ca, au). The sources that are on by default publish no rule against these endpoints: Google's and Yandex's suggestion hosts have no robots.txt, and the robots.txt files of Bing and Yahoo have no rule for them.
How many suggestions does one call return?
Google, YouTube, Images, News and Shopping: up to 15. Bing: up to 25 for en-US, about 12 in other markets. Yahoo: about 10. Yandex: up to 20. Amazon: 10. DuckDuckGo: about 8. eBay: 10. Long or unusual keywords return fewer; a keyword nobody types returns none and is listed in keywords_without_suggestions.
How fast is it, and does it get blocked?
In our tests (26 Oct 2026) a call took 80 to 100 ms on Google and 150 to 200 ms on Bing, and the actor spaces direct calls about 30 ms apart per host. Five keywords on Google with A to Z, 0 to 9 and question words (255 calls) gave 3,458 unique suggestions in 6 seconds; five keywords on Bing and Yahoo with the same expansions (510 calls) gave 3,943 in 19 seconds. Rate limits: none of the sources refused short bursts of 150 to 600 calls. Google did refuse one office IP (HTTP 403, a "Sorry" page) after roughly 5,000 calls in under an hour. The actor handles that itself: after a block, that host's calls move to Apify Proxy (datacenter IPs were not refused in over 1,000 test calls), which is slower (about 1.4 s a call) but keeps the run going. The log and the summary (proxy_hosts) say when it happened. If the proxy is refused too, the source is ended after 15 failed calls and the run goes on with the others.
What does a run cost in data?
About 50 to 70 bytes of response per row (a call of 15 suggestions is under 1 KB), roughly 150 to 300 bytes per row with headers. A million rows is a few hundred MB. The summary shows http_megabytes, http_bytes_per_row and proxy_megabytes for your run.
Is this search volume?
No. Suggestions carry no volume. times_suggested and relevance rank suggestions by how strongly a source surfaces them, which is a proxy for popularity, not a count of searches. Pair the list with a keyword volume tool when you need numbers.
Why does a suggestion sometimes not start with my keyword?
Search boxes rewrite and complete. A question word in front can turn into another ("how coffee grinder" may return "what coffee grinder for espresso"). The row keeps the exact query that produced it, so you can drop what you do not want, for example by keeping rows where suggestion contains your keyword.
How are position and times_suggested defined?
position is the place in the source's list for the first query (in plan order: your keyword, A to Z, 0 to 9, question words, prepositions, your modifiers) that returned the suggestion, 1 = first. times_suggested counts the queries of that keyword, source and market that returned it.
Can I get more than one country or language in one run?
Yes: country and language set the main market, and extraMarkets adds more as country:language, for example de:de. Google, YouTube and Bing answer for the market you ask for from any IP. Yahoo has feeds for the US, UK, Brazil, Mexico and India only; Yandex takes the language only.
Can I filter or rank the output?
Use maxSuggestionsPerKeyword to keep the strongest N per keyword and source (ranked by times_suggested, then relevance). In the dataset, is_question, word_count, expansion and source are columns you can filter on in a spreadsheet.
Which formats can I download?
JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has three ready views: Suggestions, Strength (relevance and repeats), and Questions and word counts.
Can I use it from Claude, ChatGPT or Cursor (MCP)?
Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/autocomplete-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http autocomplete-scraper "https://mcp.apify.com/?tools=themineworks/autocomplete-scraper"
Is it legal to scrape search suggestions?
The actor reads only the public suggestion lists that a search box shows to anyone, with no login. You are responsible for how you use the data, including the search engines' terms and data protection law such as GDPR and CCPA. This is general information, not legal advice.
Integrations
- Google Sheets: send each run's suggestions to a sheet with Apify's Google Sheets integration; one row per suggestion fits a sheet as is.
- Make, Zapier and n8n: start a run and read its dataset with the Apify apps and nodes, for example "new suggestions for our brand every Monday to Slack".
- Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
- API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.
More from The Mine Works
Marketing, SEO and reviews
- Facebook Ad Library Scraper
- Google Ads Transparency Scraper
- Similarweb Scraper
- Google News Scraper
- Trustpilot Reviews Scraper
- Google Trends Scraper
- Semrush Scraper
- App Reviews Scraper
- Trustpilot Business Search
- TripAdvisor Reviews Scraper
- Username Checker
- Backlink Building Agent
Social media and video
Leads and business directories
Real estate
Science, health and government data
Jobs and hiring
Company and business data
E-commerce and marketplaces
Food and local services
Developer and AI tools
More tools

