# Keyword Research Tool – Google, YouTube & Amazon Autocomplete (`cn-data-lab/autocomplete-keyword-scraper`) Actor

Free-API keyword research: long-tail keyword ideas and questions from Google, YouTube, Amazon, Bing, DuckDuckGo, Yahoo and eBay autocomplete (A–Z expansion, 11 countries). $0.60 per 1,000 keywords.

- **URL**: https://apify.com/cn-data-lab/autocomplete-keyword-scraper.md
- **Developed by:** [CN Data Lab](https://apify.com/cn-data-lab) (community)
- **Categories:** SEO tools, Marketing, E-commerce
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 keyword 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

## Keyword Research Tool – Google, YouTube & Amazon Autocomplete Scraper

Turn any seed keyword into hundreds of **long-tail keyword ideas and questions** using the public search-suggestion (autocomplete) boxes of **Google, YouTube, Amazon, Bing, DuckDuckGo, Yahoo and eBay**. No login, no API key, no browser, no proxy needed. Pay only per keyword returned: **$0.60 per 1,000 keywords**.

Autocomplete is where real people's searches show up first, which makes it the cheapest source of keyword ideas for SEO, YouTube SEO, Amazon/eBay listing keywords, content calendars and PPC.

### What it does

For every seed keyword the Actor:

1. Queries the autocomplete endpoint of each source you select (Google, YouTube, Amazon, Bing, DuckDuckGo, Yahoo, eBay).
2. Optionally **expands** the seed – `seed a` … `seed z`, question words (`how seed`, `what seed`, `can seed`…), prepositions/comparisons (`seed for`, `seed vs`, `seed near`…) and digits – so you get far more than the ~10 suggestions a single query returns.
3. **Merges and de-duplicates** the results across sources and returns one row per unique keyword with the sources it appeared in, its rank in each source, a word count and a simple rule-based intent label.

Keywords that show up in several suggestion boxes (`sourceCount` 3+) are the ones multiple engines consider popular, so they are usually the best candidates to target first.

### Use cases

- **SEO keyword research** – long-tail ideas and a free alternative to paid keyword-suggestion tools (this Actor does *not* provide search volume, see Limitations).
- **YouTube SEO** – find what people type into YouTube search for your topic.
- **Amazon / eBay listing keywords** – see what shoppers search for in each marketplace and country.
- **Content planning and FAQ pages** – turn on question expansion to collect "how / what / why / can" questions.
- **PPC / ad-group building** – bulk long-tail phrases grouped by seed.
- **Programmatic use** – call it via API, schedule it, or plug it into Make, Zapier, n8n or Google Sheets.

### Input

| Field | Description |
|---|---|
| `seedKeywords` | List of seed keywords or phrases. |
| `sources` | `google`, `youtube`, `amazon`, `bing`, `duckduckgo`, `yahoo`, `ebay` (default: google + youtube). |
| `country` | `us`, `gb`, `ca`, `au`, `de`, `fr`, `es`, `it`, `br`, `mx`, `jp` (default `us`). |
| `language` | Optional language override for Google/YouTube (e.g. `en`, `de`). |
| `expandAlphabet` | A–Z expansion (default on). |
| `expandQuestions` | Question-word expansion (default off). |
| `expandPrepositions` | Preposition / comparison expansion (default off). |
| `expandNumbers` | 0–9 expansion (default off). |
| `maxSuggestionsPerSeed` | Cap on unique keywords (and cost) per seed, default 200. |
| `maxConcurrency` | Parallel requests, default 5. |
| `proxyConfiguration` | Optional, normally not needed. |

Example input:

```json
{
  "seedKeywords": ["keyword research"],
  "sources": ["google", "youtube"],
  "country": "us",
  "expandAlphabet": true,
  "expandQuestions": true,
  "maxSuggestionsPerSeed": 100
}
```

### Output

One dataset item per unique keyword (real example from a test run):

```json
{
  "seedKeyword": "keyword research",
  "keyword": "keyword research free",
  "sources": ["google", "youtube", "bing", "duckduckgo"],
  "sourceCount": 4,
  "ranks": {"google": 1, "youtube": 7, "bing": 1, "duckduckgo": 1},
  "bestRank": 1,
  "foundVia": "keyword research",
  "expansionType": "seed",
  "wordCount": 3,
  "charCount": 21,
  "intent": "informational",
  "startsWithSeed": true,
  "country": "us",
  "language": "en",
  "scrapedAt": "2026-10-25T14:53:49.850277+00:00"
}
```

A question keyword found through question expansion:

```json
{
  "seedKeyword": "keyword research",
  "keyword": "what is keyword research in google ads",
  "sources": ["google", "youtube"],
  "sourceCount": 2,
  "ranks": {"google": 7, "youtube": 2},
  "foundVia": "what keyword research",
  "expansionType": "question:what",
  "intent": "question"
}
```

- `ranks` – position (1 = first suggestion) in each source's suggestion list.
- `foundVia` / `expansionType` – the first query that produced the keyword (`seed`, `alphabet:x`, `question:how`, `preposition:for`, `number:3`).
- `intent` – simple **rule-based** label from the words in the keyword: `question`, `comparison`, `transactional`, `commercial` or `informational`. It is a quick filter, not a machine-learning classification, and it only understands English words.
- `startsWithSeed` – whether the keyword begins with your seed (handy to drop loosely related suggestions).
- Rows are sorted by `sourceCount` (high to low), then `bestRank`. If a seed returns nothing, you get one `type: "error"` item for it (not charged).

Download as JSON, CSV, Excel, HTML or XML, or read it through the Apify API.

### Pricing

Pay-per-event, no subscription:

- **$0.0006 per keyword** returned (= **$0.60 per 1,000 keywords**).
- Actor start: $0.00005 per run (Apify's standard start event).

Examples: 1 seed × A–Z expansion × Google + YouTube with a 200-keyword cap ≈ **$0.12**. 10 seeds × 200 keywords ≈ **$1.20**. Use `maxSuggestionsPerSeed` and the run's "maximum cost per run" setting to cap spend. Platform usage for a typical run is a fraction of a cent.

### FAQ

**Does it give search volume, CPC or keyword difficulty?** No. Autocomplete endpoints do not expose volume. This Actor finds *which* keywords people search; use it to build the list, then check volume in a tool of your choice.

**Where does the data come from?** The public suggestion endpoints that power the search boxes of each site. No login, cookies, or accounts are used and no personal data is collected – suggestions are anonymous, aggregated phrases.

**Why do I get fewer keywords than expected?** Each query returns about 5–10 suggestions per source. A–Z expansion over a niche seed typically yields 100–400 unique keywords per seed; very narrow seeds simply have fewer suggestions. Turn on question/preposition/number expansion for more.

**Are results personalised?** Suggestions are requested without cookies or a signed-in account from a data-centre IP, so they reflect general (country-level) suggestions, but each engine may still vary results slightly by time and location of the request.

**Which countries and languages are supported?** The 11 countries listed above. Yahoo suggestions are US-only and eBay is available for US, UK, CA, AU, DE, FR, IT, ES (unsupported source/country pairs are skipped with a log warning).

**Can I run it from the API / schedule it?** Yes – it's a normal Apify Actor (API, schedules, webhooks, integrations).

### Limitations

- No search volume / CPC / difficulty data (see above).
- Suggestion lists are short, so large results come from expansion, which multiplies the number of requests (27 requests per source per seed with A–Z, 41 with A–Z + questions).
- The endpoints are unofficial public endpoints of third-party sites and may change or rate-limit heavy use; the Actor retries with back-off, and failed queries are counted in the log. For very large batches you can enable the optional Apify Proxy.
- Intent labels are keyword-rule based and English only.
- Amazon marketplaces: US, UK, CA, AU, DE, FR, ES, IT, BR, MX, JP. India is not supported.

### Legal

The Actor reads only publicly available search-suggestion data and stores no personal data. You are responsible for using the data in line with the terms of the respective sites and applicable law.

# Actor input Schema

## `seedKeywords` (type: `array`):

Topics or phrases to expand into keyword ideas, e.g. "keyword research" or "running shoes". One result set is produced per seed.

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

Which search boxes to query. Keywords found in several sources get a higher sourceCount, a handy popularity signal.

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

Search country / marketplace used for suggestions (Google gl, Amazon and eBay site, Bing market, DuckDuckGo region).

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

Interface language code for Google/YouTube suggestions, e.g. en, de, fr, pt, ja. Leave empty to use the country's default language.

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

Also query "seed a", "seed b" … "seed z" to uncover many more long-tail keywords. Strongly recommended.

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

Also query "how seed", "what seed", "why seed", "can seed" … (14 question words) to find question keywords for FAQ and blog content.

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

Also query "seed for", "seed with", "seed vs", "seed near", "seed like" … to find comparison and use-case keywords.

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

Also query "seed 0" … "seed 9" (years, versions, top-N lists).

## `maxSuggestionsPerSeed` (type: `integer`):

Maximum unique keywords returned (and charged) per seed keyword. Keywords found in more sources and ranked higher are kept first.

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

Parallel requests. Requests to each source are also spaced out. Keep at 3–6 to avoid rate limits.

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

Optional. Usually not needed; enable Apify Proxy only if you run very large batches and hit rate limits.

## Actor input object example

```json
{
  "seedKeywords": [
    "keyword research"
  ],
  "sources": [
    "google",
    "youtube"
  ],
  "country": "us",
  "expandAlphabet": true,
  "expandQuestions": false,
  "expandPrepositions": false,
  "expandNumbers": false,
  "maxSuggestionsPerSeed": 50,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `keywords` (type: `string`):

No description

## `all` (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 = {
    "seedKeywords": [
        "keyword research"
    ],
    "sources": [
        "google",
        "youtube"
    ],
    "maxSuggestionsPerSeed": 50,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("cn-data-lab/autocomplete-keyword-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 = {
    "seedKeywords": ["keyword research"],
    "sources": [
        "google",
        "youtube",
    ],
    "maxSuggestionsPerSeed": 50,
    "proxyConfiguration": { "useApifyProxy": False },
}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cn-data-lab/autocomplete-keyword-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/JFrE7waxx5hGvHmo2/builds/u5jYksILHgrkJhWjv/openapi.json
