# Google Autocomplete Scraper: Google, YouTube, Amazon, Bing (`datagleaner/google-autocomplete-scraper`) Actor

Google autocomplete scraper for keyword research: search suggestions from Google, YouTube, Amazon and Bing in one run. Expand a seed with a-z, questions or modifiers for long-tail keywords. No login, no API key. $0.20 per 1,000 suggestions, no start fee.

- **URL**: https://apify.com/datagleaner/google-autocomplete-scraper.md
- **Developed by:** [Data Gleaner](https://apify.com/datagleaner) (community)
- **Categories:** SEO tools, Marketing, E-commerce
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.20 / 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.

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

## Google Autocomplete Scraper: keyword ideas from Google, YouTube, Amazon and Bing

**Type a seed keyword, get the search suggestions people really see, from Google, YouTube, Amazon and Bing in one run.** Expand a seed with a-z, question words or your own modifiers to turn one keyword into hundreds of long-tail ideas. Each row has the suggestion, the query that produced it, the source, country, language and rank. No login, no API key, no browser.

**Price: $0.20 per 1,000 suggestions** ($0.0002 each), no start fee. See Pricing below.

### Why use this one

- **Four engines, one schema.** Google, YouTube, Amazon (12 marketplaces) and Bing, so you can compare what shoppers, viewers and searchers type.
- **Expansion built in.** `alphabet` (a-z, 0-9), `questions` (how, what, why, can...), `modifiers` of your choice, and `recursionDepth` 2 to feed suggestions back in.
- **Country and language control**, so results are repeatable for a market.
- **You set the cost.** `maxSuggestions` caps the run, duplicates are removed, and a rate limit is waited out instead of losing the keyword.
- **Honest limit:** autocomplete shows what engines suggest, not search volume, and each query returns about 10 suggestions, so volume comes from expansion.

### Minimal input

```json
{"keywords": ["standing desk"], "sources": ["google", "youtube"], "expansionMode": "alphabet"}
```

### Sample output row (real platform run)

```json
{
  "suggestion": "standing desk with drawers",
  "seedKeyword": "standing desk",
  "expansionQuery": "standing desk",
  "source": "google",
  "country": "US",
  "language": "en",
  "position": 3,
  "scrapedAt": "2026-10-11T07:07:47+00:00"
}
```

### What does Google Autocomplete Scraper do?

For each seed keyword and each source it types the seed (and, if you choose, many variations of it) into the suggest box and collects what comes back, removing duplicates within each seed and source. Typical uses:

- **SEO keyword research.** Build long-tail keyword lists from one seed with alphabet and question expansion, without paying for a keyword tool.
- **Content planning.** The "how / what / why / can / is" questions people really type for a topic, ready to become blog posts, FAQs and video titles.
- **YouTube and video SEO.** What viewers search for on YouTube, which often differs from Google.
- **Amazon product research.** The shopping searches buyers type on Amazon in 12 marketplaces, for listings, ads and niche validation.
- **Reputation and market monitoring.** What Google and Bing suggest after a brand or competitor name, tracked on a schedule.
- **AI agents and RAG.** A structured "what do people ask about X" tool for agents and pipelines.

Pair it with [Google Trends Scraper](https://apify.com/datagleaner/google-trends-scraper) to see which of the suggested keywords are rising.

### Input

| Field | Type | What it does |
|---|---|---|
| `keywords` | list of text | Seed keywords, any language. |
| `sources` | list | Any of `google`, `youtube`, `amazon`, `bing`. Each source is queried for every keyword. Empty means Google only. |
| `country` | text | Two-letter country code, default `us`. Sets Google/YouTube `gl`, the Bing market and the Amazon marketplace (us, gb, de, fr, it, es, ca, jp, in, au, mx, br; other codes use amazon.com). |
| `language` | text | Language code, default `en` (`de`, `ja`, `zh-TW` ...). Sets Google/YouTube `hl` and the Bing market. Amazon follows the country. |
| `expansionMode` | choice | `none` (the seed only, about 10 suggestions), `alphabet` (seed + a-z, 0-9: 37 queries), `questions` (how, what, why, can, is, are, when, where, which, who, does, should, best before the seed; vs, versus, or, and, for, with, without, near me after it), `modifiers` (words before the seed). |
| `modifiers` | list of text | Words for `modifiers` mode. Empty means best, cheap, free, top, buy, new, online, diy. |
| `recursionDepth` | 1 or 2 | 2 also types every suggestion found back in as a new query for many more long-tail results. |
| `maxSuggestionsPerKeyword` | number | Cap per seed and source, default 200. Also your cost cap. |
| `maxSuggestions` | number | Cap for the whole run, default 1000. The run stops there. |
| `requestDelaySeconds` | number | Pause between requests, default 0.3 s (randomised up to 1.4x). |
| `proxyConfiguration` | object | Optional Apify Proxy. Default is no proxy. |

```json
{
  "keywords": ["standing desk", "ergonomic chair"],
  "sources": ["google", "youtube", "amazon", "bing"],
  "country": "us",
  "language": "en",
  "expansionMode": "questions",
  "maxSuggestionsPerKeyword": 150,
  "maxSuggestions": 2000
}
```

### Output

One dataset row per distinct suggestion.

| Field | Meaning |
|---|---|
| `suggestion` | The suggested search phrase. |
| `seedKeyword` | The keyword you gave. |
| `expansionQuery` | What was actually typed to get it (the seed, `standing desk a`, `how standing desk` ...). |
| `source` | `google`, `youtube`, `amazon` or `bing`. |
| `country`, `language` | The codes used for the request. |
| `position` | Rank in the suggestion list for that query, 1 is the top. |
| `scrapedAt` | ISO 8601 UTC time. |

```json
{
  "suggestion": "standing desk converter",
  "seedKeyword": "standing desk",
  "expansionQuery": "standing desk",
  "source": "amazon",
  "country": "US",
  "language": "en",
  "position": 2,
  "scrapedAt": "2026-10-09T10:10:25+00:00"
}
```

The phrase you typed is never returned as its own suggestion. A suggestion found by several expansions is returned once, with the first query that produced it.

### Pricing

**$0.0002 per suggestion returned ($0.20 per 1,000), no start fee**, billed through the pay-per-event event `suggestion`. Prices are final. Nothing is charged for queries that return nothing.

Worked examples:

- 1 keyword, Google only, no expansion: about 10 suggestions = **$0.002**.
- 1 keyword, Google, alphabet expansion: about 200 suggestions = **$0.04**.
- 20 keywords, all 4 sources, questions expansion, 100 per keyword and source: up to 8,000 suggestions = **$1.60**.

Set `maxSuggestions` and the run cannot cost more than that many times $0.0002. If you also set a maximum charge on the run, it stops there too.

### Limits

- The suggest endpoints return about 10 suggestions per query (Bing up to about 25), so volume comes from expansion and `recursionDepth`.
- Suggestions depend on country and language, and Google may also personalise by location. Use `country` and `language` for repeatable results.
- Suggestions are what each engine shows today; they carry no search volume. Combine with a volume tool if you need numbers.
- Amazon suggestions come from the marketplace of the chosen country; unsupported countries fall back to amazon.com.

### Use it from n8n, Make, Zapier or an AI agent

Actor ID: `datagleaner/google-autocomplete-scraper`

Minimal input:

```
{"keywords": ["coffee"], "sources": ["google"]}
```

Each tool below runs this Actor with your own Apify API token.

- **n8n:** add the **Apify** node (`@apify/n8n-nodes-apify`). On n8n Cloud you install it from the community node registry. Choose **Run an Actor and get dataset**, set Actor to `datagleaner/google-autocomplete-scraper` and paste the input above.

- **Make:** use the Apify app's **Run an Actor** module, then **Get Dataset Items** to read the results. **Watch Actor Runs** can trigger a scenario when a run finishes.

- **Zapier:** use the Apify action **Run Actor**, then the search **Fetch dataset items**. The trigger **Finished Actor run** starts a Zap when a run ends.

- **AI agents (MCP):** connect to `https://mcp.apify.com/?tools=datagleaner/google-autocomplete-scraper`. In Claude Code:

  ```
  claude mcp add --transport http apify "https://mcp.apify.com/?tools=datagleaner/google-autocomplete-scraper"
  ```

  Then run `/mcp` to sign in to Apify in your browser. Other clients can sign in with OAuth or send the header `Authorization: Bearer YOUR_APIFY_TOKEN`. Clients that run local MCP servers can use Apify's package (`@apify/actors-mcp-server`, run with `npx -y` and `APIFY_TOKEN` set) instead. Then ask the agent in plain words, for example:

  > List the Google and YouTube autocomplete suggestions for these keywords: coffee, espresso machine, cold brew. Put them in a table with the source each came from.

- **LangChain (Python):**

```python
## pip install langchain-apify, then set APIFY_TOKEN in your environment
import json
from langchain_apify import ApifyActorsTool
tool = ApifyActorsTool("datagleaner/google-autocomplete-scraper")
result = tool.invoke({"run_input": json.loads('{"keywords": ["coffee"], "sources": ["google"]}')})
```

### FAQ

**Do I need an API key or login?** No. The Actor reads public, keyless endpoints.

**Why did I get fewer results than my limit?** Engines return a short list per query and many expansions overlap. Use `alphabet` or `questions`, or set `recursionDepth` to 2.

**What happens on rate limits?** HTTP 429 and server errors are retried with exponential backoff and the `retry-after` header. A query that still fails is skipped and the rest continue. Raise `requestDelaySeconds` for very large runs.

**What happens if I start it with no keywords?** It runs a small built-in example (5 Google suggestions for "coffee") so you can see the output, and says so in the run's status message. Add your own `keywords` for a real run.

**Is the output in my language?** Yes, set `language` and `country`. Seeds can be in any script.

**Which sources can I combine?** Any of Google, YouTube, Amazon and Bing in one run, all in the same row format with a `source` field.

### Responsible use

This Actor collects public search suggestions only. Use the data in line with the terms of the engines you query and with applicable law. Suggestions can occasionally contain names of private persons; if you process personal data, the obligations are yours.

# Actor input Schema

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

Keywords to get suggestions for, one per line. Any language.

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

Which suggest engines to query: google, youtube, amazon, bing. Each source is queried for every keyword and billed per suggestion, so more sources means more results. Leave empty for google only.

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

Two-letter country code (us, gb, de, jp, tw ...). Sets Google/YouTube gl and the Bing market. Amazon supports us, gb, de, fr, it, es, ca, jp, in, au, mx, br and uses amazon.com for other codes.

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

Language code of the suggestions (en, de, fr, ja, zh-TW ...). Sets Google/YouTube hl and the Bing market. Amazon ignores it and follows the country.

## `expansionMode` (type: `string`):

How each seed is multiplied into more typed queries. none: only the seed (about 10 suggestions). alphabet: seed + a-z and 0-9 (37 queries). questions: how/what/why/can/is/... before the seed, and vs/or/for/near me after it. modifiers: words from the list below before the seed.

## `modifiers` (type: `array`):

Words placed before the seed in modifiers mode. Leave empty for: best, cheap, free, top, buy, new, online, diy.

## `recursionDepth` (type: `integer`):

1 queries the seed and its expansions. 2 also types every suggestion found back in as a new query, which finds far more long-tail keywords but makes many more requests. Results are still capped by the limits below.

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

Upper bound on distinct suggestions returned for each seed and source, also your cost cap per seed and source.

## `maxSuggestions` (type: `integer`):

Upper bound on suggestions for the whole run. The run stops once it is reached. Each returned suggestion is billed, so this is your cost cap.

## `requestDelaySeconds` (type: `number`):

Base pause between requests; the actual pause is randomised up to 1.4x. Raise it if Google answers with rate limits (HTTP 429); the Actor also backs off by itself.

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

Optional. The default is no proxy, which works from Apify's servers. Enable Apify Proxy only if a source rate-limits you.

## Actor input object example

```json
{
  "keywords": [
    "coffee"
  ],
  "sources": [
    "google"
  ],
  "country": "us",
  "language": "en",
  "expansionMode": "none",
  "recursionDepth": 1,
  "maxSuggestionsPerKeyword": 200,
  "maxSuggestions": 1000,
  "requestDelaySeconds": 0.3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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"
    ],
    "sources": [
        "google"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datagleaner/google-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"],
    "sources": ["google"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("datagleaner/google-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"
  ],
  "sources": [
    "google"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call datagleaner/google-autocomplete-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datagleaner/google-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/Fds7ftf0iFw1nNOvl/builds/4cAFn98CHjjLMl38Y/openapi.json
