# Autocomplete Scraper: Google, YouTube and Bing Suggestions (`themineworks/autocomplete-scraper`) Actor

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.

- **URL**: https://apify.com/themineworks/autocomplete-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** SEO tools, Marketing, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.14 / 1,000 suggestions

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Autocomplete Scraper: Google, YouTube and Bing Suggestions

[![93 search suggestions from Google, YouTube and Bing in 5 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/autocomplete-scraper-hero.png)](https://console.apify.com/actors/2SzEOH1MILN2hrYSf/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), 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 own `relevance` score. Sort by `times_suggested` or `relevance` to 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.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/2SzEOH1MILN2hrYSf/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Marketing, SEO and reviews family:** [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Trustpilot Reviews Scraper](https://apify.com/themineworks/trustpilot-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Google Trends Scraper](https://apify.com/themineworks/google-trends-pro?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### 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:

```json
{
  "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

```text
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. `customModifiers` adds your own, for example `near me` or `best {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.** `expansionDepth` 1 asks the first 10 suggestions of your keyword again as keywords; depth 2 adds the first 5 of each. Those rows say `expansion: related` and `depth: 1` or `2`.
- **Country and language.** `country` and `language` set the market; `extraMarkets` runs 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_suggested` says 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?

```json
{
  "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

```json
{
  "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

```json
{
  "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

```json
{
  "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:

```json
{
  "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:

```json
{
  "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
}
```

```json
{
  "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):

```json
{ "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:

```json
{
  "_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):

```json
{ "_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 past `maxSuggestionsPerKeyword`;
- 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

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often (every day, every Monday at 08:00 and so on).
3. Compare runs on `suggestion` and `source` to see new phrases, dropped phrases and position changes for your keywords.
4. 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](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Trustpilot Reviews Scraper](https://apify.com/themineworks/trustpilot-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Trends Scraper](https://apify.com/themineworks/google-trends-pro?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Semrush Scraper](https://apify.com/themineworks/semrush-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [App Reviews Scraper](https://apify.com/themineworks/app-reviews-monitor?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Trustpilot Business Search](https://apify.com/themineworks/trustpilot-business-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [TripAdvisor Reviews Scraper](https://apify.com/themineworks/tripadvisor-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Username Checker](https://apify.com/themineworks/username-checker?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Backlink Building Agent](https://apify.com/themineworks/backlink-building-agent?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

# Actor input Schema

## `keywords` (type: `array`):

Seed keywords, one per line, as you would start typing them in a search box. Example: coffee grinder, running shoes, how to learn spanish. Each keyword is asked on every source you pick. Up to 5,000 keywords per run.

## `sources` (type: `array`):

Which search boxes to ask. Google, YouTube, Google Images, Google News, Google Shopping, Bing, Yahoo and Yandex are always available. Amazon, DuckDuckGo and eBay also appear in the list, but they publish a robots.txt that disallows automated access, so they are skipped unless you turn on the checkbox at the bottom of this form.

## `country` (type: `string`):

Two-letter country code that decides which local suggestions you get, for example us, gb, de, fr, in, br, jp, au. Google, YouTube, Bing and DuckDuckGo take it as a market; Amazon and eBay use the country's own store. Default us.

## `language` (type: `string`):

Language code for the suggestions, for example en, es, de, fr, pt-BR, ja, hi, ru. Also picks the alphabet for A to Z (Cyrillic for ru and uk, Greek for el, Arabic for ar, Hebrew for he, Devanagari for hi, Latin otherwise) and the question words. Default en.

## `extraMarkets` (type: `array`):

Extra country and language pairs to run the same keywords in, written country:language, one per line. Example: gb:en, de:de, br:pt-BR. Every market repeats all keywords and sources, so rows and calls multiply by the number of markets.

## `expandAlphabet` (type: `boolean`):

Also ask the keyword followed by each letter (coffee grinder a, coffee grinder b, ... z). 26 more calls per keyword and source; in our test about 370 unique suggestions per keyword on Google. The language picks the alphabet.

## `expandNumbers` (type: `boolean`):

Also ask the keyword followed by each digit (coffee grinder 0 ... coffee grinder 9). 10 more calls per keyword and source. Finds model numbers, years and sizes.

## `expandQuestions` (type: `boolean`):

Also ask question words in front of the keyword: how, what, why, can, when, where, who, which, is, are, do, does, should, will (translated for es, de, fr, it, pt, nl, ru, tr). 14 more calls per keyword and source in English. Finds the questions people ask.

## `expandPrepositions` (type: `boolean`):

Also ask the keyword followed by for, with, without, near, to, and, or, in, on, vs, like, from (built in for en, es, de, fr, it, pt). 12 more calls per keyword and source. Finds comparisons and use cases.

## `customModifiers` (type: `array`):

Extra words to add after each keyword, one per line, for example: near me, price, review. Use {keyword} to place the keyword inside a longer pattern, for example best {keyword} for.

## `expansionDepth` (type: `integer`):

0 asks only the planned queries. 1 also asks the first 10 suggestions of the keyword again as keywords. 2 goes one more level (the first 5 suggestions of each). Each level multiplies calls; the suggestions found there are marked related in the expansion column.

## `maxSuggestionsPerKeyword` (type: `integer`):

Keep only the strongest N suggestions for each keyword on each source and market, ranked by how many queries returned them, then by the source's own relevance score. 0 keeps all. Example: 200.

## `deduplicateAcrossKeywords` (type: `boolean`):

Off: a phrase suggested for two of your keywords appears once for each, so every row says which keyword it belongs to. On: it appears once in the whole run (for each source and market), under the first keyword that found it.

## `maxItems` (type: `integer`):

The most suggestion rows to deliver in the whole run, 1 to 1,000,000. Rows are delivered keyword by keyword in the order you list them, so a low limit gives the first keywords in full. Example: 5000.

## `maxConcurrency` (type: `integer`):

How many calls to run at once, 1 to 20. Direct calls are also spaced about 30 ms apart per host. Lower it if a source starts refusing calls.

## `proxyConfiguration` (type: `object`):

Leave off. Calls go out directly, and if a host starts refusing them the actor moves that host to Apify Proxy by itself and says so in the log and summary. Turn on Apify Proxy here to use it from the first call, or to pick residential IPs.

## `useSourcesDisallowedByRobotsTxt` (type: `boolean`):

Off (default): Amazon, DuckDuckGo and eBay are skipped, because their robots.txt disallows automated access to the suggestion endpoint the actor would call. On: they are read anyway. Turn it on only if you accept that use under those sites' terms; you are responsible for it.

## Actor input object example

```json
{
  "keywords": [
    "coffee grinder",
    "running shoes"
  ],
  "sources": [
    "google",
    "youtube",
    "bing"
  ],
  "country": "us",
  "language": "en",
  "expandAlphabet": false,
  "expandNumbers": false,
  "expandQuestions": false,
  "expandPrepositions": false,
  "expansionDepth": 0,
  "maxSuggestionsPerKeyword": 0,
  "deduplicateAcrossKeywords": false,
  "maxItems": 100,
  "maxConcurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "useSourcesDisallowedByRobotsTxt": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "coffee grinder",
        "running shoes"
    ],
    "sources": [
        "google",
        "youtube",
        "bing"
    ],
    "country": "us",
    "language": "en",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/autocomplete-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": [
        "coffee grinder",
        "running shoes",
    ],
    "sources": [
        "google",
        "youtube",
        "bing",
    ],
    "country": "us",
    "language": "en",
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/autocomplete-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "coffee grinder",
    "running shoes"
  ],
  "sources": [
    "google",
    "youtube",
    "bing"
  ],
  "country": "us",
  "language": "en",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call themineworks/autocomplete-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/autocomplete-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2SzEOH1MILN2hrYSf/builds/8SB7LAhtHgc2iBDaF/openapi.json
