# Google Autocomplete Keyword Tool + Content Gap Finder (`bossless/autocomplete-keyword-expander`) Actor

Long-tail keywords from the autocomplete of Google, YouTube, Bing, Amazon, eBay, DuckDuckGo, Yahoo, Google Shopping, TikTok and Baidu, ranked by how many engines suggest them, plus a content gap: which ones your site has no page for. Optional AI topics. No login.

- **URL**: https://apify.com/bossless/autocomplete-keyword-expander.md
- **Developed by:** [Alexander Daskalov](https://apify.com/bossless) (community)
- **Categories:** SEO tools, Marketing, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 keywords

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

## Google Autocomplete Keyword Tool + Content Gap Finder (10 engines)

**Turn one seed keyword into hundreds of real long-tail keywords, the searches people actually type, from the autocomplete of ten engines at once:**

- Google;
- YouTube;
- Bing;
- Amazon;
- eBay;
- DuckDuckGo;
- Yahoo;
- Google Shopping;
- TikTok;
- Baidu (百度).

Every keyword is ranked by **how many engines suggest it**. Give it your website, and it also tells you **which keywords you have no page for yet**: your content gap.

Use it for SEO keyword research, blog and video topic planning, Amazon and eBay product listings, YouTube and TikTok titles, PPC keyword lists, FAQ pages, and AI agents that need fresh search demand.

- 🔎 **Ten autocomplete engines in one run.** Pick any mix: web search, video (YouTube, TikTok), shopping (Amazon, eBay, Google Shopping) and China (Baidu).
- 📊 **A free demand signal.** Autocomplete has no search volume, but a keyword that Google, Bing and YouTube all suggest is one many people type. `engineCount` and `bestPosition` rank the list, and the strongest keywords come first.
- 🕳️ **Content gap.** Paste your site or sitemap URL. Every keyword then gets `covered`, `coverage` and the `closestPage` on your site, so the uncovered ones are your next articles.
- 🧠 **Optional AI topics and content ideas.** Keywords are grouped into topics, and each gets a title for the page or video that would answer it.
- ❓ **Expansions that find the long tail:**
  - alphabet (`seed a` … `seed z`) and numbers;
  - question words (how, what, why … in English, German, French, Spanish, Italian, Portuguese and Dutch);
  - prepositions (`for`, `with`, `vs`, `near` …);
  - buying words (`best`, `cheap`, `review`, `price`, `alternative` …).
- 🌍 **Any country.** Google, Bing, DuckDuckGo, Amazon and eBay results are localised (us, gb, de, fr, es, it, ca, au, in, jp …), and requests come from a residential IP in that country.
- ✅ No login, no API key, no proxy setup.

### Which engines does it cover?

| Engine | Best for |
|---|---|
| Google | SEO, blog topics, the biggest search volume |
| YouTube | video titles, tutorials, channel ideas |
| Bing | a second web-search opinion |
| DuckDuckGo, Yahoo | more web-search agreement for the `engineCount` signal |
| Amazon | product research, listing keywords, buyer phrases |
| eBay | resale and second-hand demand, sizes and variants |
| Google Shopping | shopping-intent phrases |
| TikTok | what people search on TikTok: trends, how-tos, products |
| Baidu (百度) | Chinese search demand (use Chinese seeds) |

### How much does it cost?

You pay per keyword delivered, and there's no monthly fee. A keyword found from several seeds or engines is delivered and charged **once**.

| Event | Price (FREE/BRONZE) | Lower on paid plans |
|---|---|---|
| Keyword (engines, positions, intent, content gap) | **$0.001** per keyword ($1 per 1,000) | down to $0.0008 |
| Keyword with AI topic and content idea | **$0.003** per keyword ($3 per 1,000) | down to $0.0025 |
| Actor start | $0.00005 per run | — |

Examples:

- 200 keywords for one seed cost **$0.20**.
- The same 200 with AI topics and content ideas cost **$0.60**.

`maxKeywordsPerSeed` caps what you pay, and so does Apify's maximum cost per run. The actor stops before it would go over.

AI topics are a paid-plan feature. Free-plan runs include a 3-keyword trial, and the rest of the keywords are saved without the AI fields at the plain keyword price.

### How fast is it?

Measured with the default settings (alphabet + questions on Google, YouTube, Bing and Amazon, so 160 requests per seed). One seed took **about 10 seconds** and found **660–1,220 unique keywords** ("crm software" 662, "sourdough bread" 1,052, "running shoes" 1,224). On the platform, the example input (50 keywords) finished in 11 seconds on 256 MB. A run with AI and a content gap (40 keywords, 612 site pages) took 30 seconds.

### What data do you get?

One record per keyword. This is real output from a run with `siteUrl: https://backlinko.com` and AI on:

```json
{
  "keyword": "what is link building",
  "seed": "link building",
  "engines": ["bing", "google", "youtube"],
  "engineCount": 3,
  "positions": {"bing": 4, "google": 1, "youtube": 1},
  "bestPosition": 1,
  "foundVia": "what link building",
  "expansion": "questions",
  "wordCount": 4,
  "isQuestion": true,
  "intent": "informational",
  "covered": true,
  "coverage": 1,
  "closestPage": "https://backlinko.com/link-building",
  "topic": "Link Building Basics",
  "contentIdea": "What Is Link Building: A Comprehensive Guide for Beginners",
  "country": "us",
  "language": "en",
  "scrapedAt": "2026-10-13T23:47:05+00:00"
}
```

And one from the same run that the site does **not** cover yet, so it's a content gap:

```json
{"keyword": "what is link building in digital marketing", "engines": ["bing", "google"], "engineCount": 2,
 "bestPosition": 3, "intent": "informational", "covered": false, "coverage": 0.5,
 "closestPage": "https://backlinko.com/link-building", "topic": "Link Building Basics",
 "contentIdea": "The Role of Link Building in Digital Marketing"}
```

| Field | Meaning |
|---|---|
| `engineCount`, `engines`, `positions`, `bestPosition` | Which engines suggested it and how high (1 = first suggestion). More engines plus a higher position means stronger demand. |
| `foundVia`, `expansion` | The query that first returned it, and which expansion produced it (`seed`, `alphabet`, `numbers`, `questions`, `prepositions`, `commercial`, `deeper`). |
| `intent` | `informational`, `commercial` (best, review, vs …), `transactional` (buy, price, near me …) or `navigational` (login, app …), from rules on the words. |
| `isQuestion`, `wordCount` | For FAQ pages and long-tail filters. |
| `covered`, `coverage`, `closestPage` | Content gap fields (need `siteUrl`, otherwise null). |
| `topic`, `contentIdea` | AI fields (need `aiInsights`, otherwise null). |

You can download the dataset as JSON, CSV, Excel or HTML, or read it through the API.

### Content gap: find the keywords your site has no page for

Set `siteUrl` to your site (`https://example.com`), to one section (`https://example.com/blog`), or straight to a sitemap (`https://example.com/sitemap.xml`).

- The actor reads your sitemaps: for a section such as `/blog`, its own `sitemap_index.xml`, `wp-sitemap.xml` and `sitemap.xml` first; then those listed in robots.txt, or else `/sitemap.xml`, `/sitemap_index.xml` and `/wp-sitemap.xml`. Sitemap indexes and `.xml.gz` files are followed.
- For each keyword it finds the page whose address contains most of the keyword's words.
- `coverage` is the share of the keyword's meaningful words found in that page's address. Small words like "how", "the" and "for" don't count, and plurals match singulars.
- A keyword is `covered` at **0.75 or more**.

Sort by `covered = false` and `engineCount` to get your content plan.

How it matches, honestly: it compares words in your page **addresses** (URL slugs), not page text. That makes it fast and free of extra page downloads, and it works well on sites with descriptive URLs such as `/blog/how-to-clean-running-shoes`.

- It is word overlap, not meaning, so word order is ignored: "who is building link" (a question about a property-management app) matches a `/link-building` page.
- Pages with ID-only URLs (`/p/12345`) can't be matched.
- Keywords in Chinese, Japanese or Korean get `coverage: null`.

### AI topics and content ideas

Turn on `aiInsights`. The strongest keywords of each seed are sent to Google's Gemini in batches, and each gets:

- `topic`: a 2–4 word topic label. Related keywords share the exact same label, so you can group by it and treat each topic as a cluster or pillar page.
- `contentIdea`: a title for the page or video that would answer that search, with an angle such as a guide, checklist, comparison or mistakes to avoid. The AI is told never to invent years, statistics, brands or places that the keyword doesn't contain.

Ranks, engines, positions, intent and coverage are always computed by code, never by the AI. If the AI service is down, the run keeps going, and the keywords are saved and charged as plain keywords.

### How to use it

1. Enter one or more **seed keywords**, for example `running shoes`.
2. Pick the **engines**. The default is Google, YouTube, Bing and Amazon.
3. Pick the **expansions**. The default is alphabet + questions; add prepositions and buying words for more English long tail.
4. Optional:
   - set `country` and `language`;
   - add your `siteUrl` for the content gap;
   - turn on `aiInsights`;
   - turn on `deeper` to re-expand the 25 strongest suggestions.
5. Run it and export the keywords.

#### Input example

```json
{
  "keywords": ["running shoes", "trail running"],
  "engines": ["google", "youtube", "bing", "amazon"],
  "expansions": ["alphabet", "questions", "prepositions"],
  "maxKeywordsPerSeed": 300,
  "country": "us",
  "language": "en",
  "siteUrl": "https://example.com/blog",
  "aiInsights": true
}
```

### Ready-made keyword tasks

Open one, adjust it, and run or schedule it:

- [YouTube Keyword Suggestions (Autocomplete) Tool](https://apify.com/bossless/autocomplete-keyword-expander/examples/youtube-keyword-suggestions)
- [Amazon Keyword Research from Autocomplete](https://apify.com/bossless/autocomplete-keyword-expander/examples/amazon-keyword-research)
- [Content Gap Finder: Keywords Your Site Misses](https://apify.com/bossless/autocomplete-keyword-expander/examples/content-gap-finder)
- [Question Keywords for Blog Posts](https://apify.com/bossless/autocomplete-keyword-expander/examples/question-keywords-for-blog-posts)
- [TikTok Search Suggestions Keyword Tool](https://apify.com/bossless/autocomplete-keyword-expander/examples/tiktok-keyword-suggestions)

### Use it with AI agents (MCP)

```
https://mcp.apify.com?tools=bossless/autocomplete-keyword-expander
```

Ask your assistant *"find long-tail keywords for 'standing desk' on Google and Amazon"* or *"which 'link building' questions does backlinko.com not cover yet?"*. It runs this actor and reads back ranked keywords. Keep agent runs small (`maxKeywordsPerSeed: 50`, one expansion) so they finish in seconds.

### Use the API from code

```bash
curl -X POST "https://api.apify.com/v2/acts/bossless~autocomplete-keyword-expander/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["standing desk"], "engines": ["google", "amazon"], "expansions": ["questions"], "maxKeywordsPerSeed": 50}'
```

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("bossless/autocomplete-keyword-expander").call(run_input={
    "keywords": ["sourdough bread"], "engines": ["google", "youtube", "bing"], "siteUrl": "https://example.com"})
for k in client.dataset(run["defaultDatasetId"]).iterate_items():
    if k["covered"] is False:
        print(k["engineCount"], k["keyword"])
```

### FAQ

**Does it give search volume?** No. Autocomplete doesn't publish volumes, and real volume data comes from paid keyword databases. What you get instead is free and current:

- `engineCount`: how many engines suggest the keyword;
- `bestPosition`: how high they put it.

Engines only suggest what many people type, so a keyword suggested by three engines in first or second place is a strong one.

**How many keywords will I get?** It depends on the seed and the settings. Our tests with the defaults (alphabet + questions on four engines) found 660–1,220 unique keywords per seed. `maxKeywordsPerSeed` keeps the strongest N, 200 by default.

**Can I research other countries and languages?** Yes. Set `country` (two letters, such as `de`) and `language` (such as `de`). Google, Bing, DuckDuckGo, Amazon (13 marketplaces) and eBay (8 sites) are localised, and question words exist for seven languages. Prepositions and buying words are English only. Use Chinese seeds with Baidu.

**What if an engine blocks a request?** It is retried on new IP addresses, and the other engines still deliver. A run fails only if every request was blocked and nothing was delivered. A seed that no engine has suggestions for gives an empty, successful run.

**What if my site has no sitemap?** The keywords are still delivered, with the content-gap fields left empty, and the run's status message says so. Give the sitemap URL directly if it lives somewhere unusual.

**Is this an official Google, YouTube, Amazon, Bing, TikTok or Baidu product?** No. This is an independent tool and is not affiliated with or endorsed by any of these companies.

**Is it legal?** It reads the public suggestions each engine shows in its search box, one query at a time. You are responsible for how you use the data.

### Related tools

- [China Hot Search in English](https://apify.com/bossless/china-hot-search): what Weibo, Douyin and Baidu users are searching right now, translated.
- [Zhihu Scraper (知乎)](https://apify.com/bossless/zhihu-scraper): questions, answers, hot list and search suggestions from China's Q\&A site.

***

**关键词挖掘工具（百度下拉词 / 谷歌下拉词）**：从 Google、YouTube、Bing、Amazon、TikTok、百度等 10 个搜索引擎的下拉联想词中批量挖掘长尾关键词，按出现的引擎数排序，并可对照你的网站地图找出尚未覆盖的关键词（内容缺口）。无需登录。

# Actor input Schema

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

One or more seed keywords. Each is expanded on every selected engine; a keyword found from several seeds is delivered (and charged) once.

## `engines` (type: `array`):

Where to collect suggestions. A keyword suggested by more engines ranks higher (engineCount).

## `expansions` (type: `array`):

How each seed is varied before asking the engines. The seed itself is always asked. Questions exist for English, German, French, Spanish, Italian, Portuguese and Dutch; prepositions and buying words for English.

## `maxKeywordsPerSeed` (type: `integer`):

The strongest N keywords per seed (most engines first). Alphabet + questions on 4 engines found 660–1,220 per seed in our tests; the default keeps the best 200.

## `deeper` (type: `boolean`):

Also asks every engine for the 25 strongest suggestions themselves, for more long-tail variants.

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

Two-letter country code (us, gb, de, fr, es, it, ca, au, in, jp …). Localises Google, Bing, DuckDuckGo, Amazon and eBay; requests go out from a residential IP in that country.

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

Two-letter language code (en, de, fr, es …) for the engines and the question words.

## `siteUrl` (type: `string`):

Optional. Your site (https://example.com, or https://example.com/blog for one section) or its sitemap URL. Every keyword then says whether a page of yours already targets it (covered), how much of it (coverage) and the closest page.

## `aiInsights` (type: `boolean`):

Groups keywords into topics and suggests a title for the page or video that would answer each one. Charged as an AI keyword instead of a keyword. Free-plan runs include a 3-keyword trial.

## Actor input object example

```json
{
  "keywords": [
    "running shoes"
  ],
  "engines": [
    "google",
    "youtube",
    "bing",
    "amazon"
  ],
  "expansions": [
    "questions"
  ],
  "maxKeywordsPerSeed": 50,
  "deeper": false,
  "country": "us",
  "language": "en",
  "aiInsights": 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": [
        "running shoes"
    ],
    "engines": [
        "google",
        "youtube",
        "bing",
        "amazon"
    ],
    "expansions": [
        "questions"
    ],
    "maxKeywordsPerSeed": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("bossless/autocomplete-keyword-expander").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": ["running shoes"],
    "engines": [
        "google",
        "youtube",
        "bing",
        "amazon",
    ],
    "expansions": ["questions"],
    "maxKeywordsPerSeed": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("bossless/autocomplete-keyword-expander").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": [
    "running shoes"
  ],
  "engines": [
    "google",
    "youtube",
    "bing",
    "amazon"
  ],
  "expansions": [
    "questions"
  ],
  "maxKeywordsPerSeed": 50
}' |
apify call bossless/autocomplete-keyword-expander --silent --output-dataset

```

## MCP server setup

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

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/dDmNRqRGEkiTgUPia/builds/KZlUmFGi5b80b0tFz/openapi.json
