# Keyword Suggestions Scraper (`lergassy/keyword-suggestions-scraper`) Actor

\[$0.11/1K keywords] Keyword suggestions from Google, YouTube, Amazon, Bing, eBay and TikTok autocomplete with alphabet soup expansion: keyword, seed, source, position, intent, question flag. Long-tail keywords for SEO. No login, no run fee.

- **URL**: https://apify.com/lergassy/keyword-suggestions-scraper.md
- **Developed by:** [Matvey](https://apify.com/lergassy) (community)
- **Categories:** SEO tools, AI
- **Stats:** 19 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.09 / 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.
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

**Keyword Suggestions Scraper** collects **keyword suggestions from the autocomplete of Google, YouTube, Amazon, Bing, eBay and TikTok** — plus DuckDuckGo, Yandex, Baidu and Naver — for any seed keyword. It expands each seed with the **alphabet soup** method (seed + a…z, seed + 0…9, question words, prepositions, your own prefixes and suffixes) and can go a second level deep for **long-tail keywords**.

![Keyword Suggestions Scraper output: Google autocomplete keyword suggestions with seed, source, position, expansion and search intent](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/keyword-suggestions-scraper/keyword-suggestions-scraper-output-table.png)

Every row is one **unique keyword suggestion** with the `seed` it came from, the `source` and its `position` in the dropdown, the `expansion` that produced it, every other source that suggested the same phrase (`sources`), plus computed fields: `wordCount`, `characterCount`, `isQuestion` and a heuristic search `intent`. **$0.11 per 1,000 keywords on the Starter plan ($0.125 on the Free plan, $0.085 on Business and higher). No fee per run, no login, no API key.**

### Tested head-to-head — 13 October 2026

Same request for this Actor and six popular keyword-suggestion Actors in the Apify Store: seed `running shoes`, Google, alphabet expansion, 20 keywords wanted, US / English.

| | This Actor | Other Actors tested |
|---|---|---|
| Rows for "20 keywords" | **20, all unique** | 19–405; three of six ignored the limit (270, 360 and 405 rows), one returned 16 duplicates |
| Cost of this run (Free plan) | **$0.0025, no start fee** | $0.015–$0.10; five of six list a start fee ($0.00005–$0.20) |
| Run time | **2 s** | 3–78 s |
| Autocomplete sources | **10** (Google, YouTube, Bing, Amazon, eBay, TikTok, DuckDuckGo, Yandex, Baidu, Naver) | 1–10; none of them reads TikTok, Yandex, Baidu or Naver |
| Columns per row | **17**, incl. sources merged, position, intent, question flag | 8–31 |

### What is Keyword Suggestions Scraper?

It is a **Google Autocomplete scraper and keyword research tool** in one Actor. The search boxes of Google, YouTube, Amazon, Bing, eBay and TikTok suggest what real people type. Those suggestions are the raw material of keyword research: blog topics, YouTube titles, Amazon listing keywords, ad keywords and FAQ questions. Collecting them by hand means typing the seed, then the seed plus "a", plus "b"… into every search box. This Actor does exactly that through the public autocomplete endpoints the sites' own search boxes call, merges and de-duplicates the answers, and gives you one clean table.

What it is **not**: it does not return search volume, CPC or keyword difficulty. These are **keyword suggestions, not volume metrics**. Pair them with [Google Trends Scraper](https://apify.com/lergassy/google-trends-scraper) to see whether interest in a keyword is rising or falling.

### What data can Keyword Suggestions Scraper extract?

| Field | Example | Meaning |
|---|---|---|
| `keyword` | `is bali visa free for indians` | The suggestion, as the source returned it |
| `seed` | `bali visa` | Your seed keyword |
| `source` | `google` | First source that suggested it |
| `sources` | `["google", "youtube"]` | Every source that suggested the same phrase for this seed |
| `position` | `1` | Rank in the source's dropdown (1 = top) |
| `query` | `is bali visa` | Exact text typed into autocomplete |
| `expansion` | `is` | What was added to the seed: letter, digit, question word, preposition, custom word, or the parent keyword at depth 2 |
| `expansionType` | `questions` | `seed`, `alphabet`, `numbers`, `questions`, `prepositions`, `custom` or `depth2` |
| `depth` | `1` | 1 = seed and its expansions, 2 = found by re-querying a level-1 keyword |
| `language`, `country` | `en`, `US` | Locale used |
| `wordCount`, `characterCount` | `6`, `29` | Length of the keyword |
| `isQuestion` | `true` | Starts with a question word or ends with "?" |
| `intent` | `question` | Heuristic search intent (see below) |
| `scrapedAt` | `2026-10-01T08:04:21.518Z` | When the row was made |

#### Sources and how they are localised

| Source | `source` value | Localised by |
|---|---|---|
| Google | `google` | language + country |
| YouTube | `youtube` | language + country |
| Bing | `bing` | language + country (market) |
| Amazon | `amazon` | country → marketplace: US, GB, DE, FR, IT, ES, CA, JP, AU, MX, BR, NL, SE, PL, AE, SG, TR, SA, BE |
| eBay | `ebay` | country → site: US, CA, GB, AU, AT, BE, FR, DE, IT, NL, ES, CH, IE, PL |
| TikTok | `tiktok` | not localised — TikTok answers for the location of the server |
| DuckDuckGo | `duckduckgo` | language + country |
| Yandex | `yandex` | language |
| Baidu | `baidu` | not localised (Chinese search) |
| Naver | `naver` | not localised (Korean search) |

A country that has no Amazon marketplace or eBay site in the lists above gives one free error row for that source; the other sources still run.

#### What the intent field means — honestly

`intent` is a **heuristic**, not a model and not Google data. It looks for English words in the keyword, in this order:

1. `navigational` — login, sign in, official website, customer service, phone number, .com …
2. `transactional` — buy, price, cost, cheap, coupon, deal, for sale, near me, book, rent, download …
3. `commercial` — best, top, vs, review, compare, alternative, brands, worth it …
4. `question` — the keyword starts with how / what / why / when / where / who / which / can / is / are / does / do / will / should … or ends with "?"
5. `informational` — everything else.

It is useful for sorting thousands of rows quickly. For non-English keywords most rows will read `informational`, because the word lists are English.

### How much does it cost to scrape keyword suggestions?

| Event | Free plan | Starter (Bronze) | Scale (Silver) | Business (Gold) |
|---|---|---|---|---|
| 💰 Keyword suggestion (one unique row) | **$0.000125** | **$0.00011** | **$0.0001** | **$0.000085** |
| Run start | $0 — no start fee | $0 | $0 | $0 |
| Error rows, filtered-out suggestions, duplicates | $0 | $0 | $0 | $0 |

On the Starter plan that is **$0.11 per 1,000 keywords**, about **9,000 keywords per $1**. On the Apify Free plan it is $0.125 per 1,000 keywords, so the $5 of monthly free credit covers about 40,000 keywords. Business, Platinum and Diamond pay $0.085 per 1,000.

Many keyword Actors charge a fee every time a run starts. This one does not: a scheduled run that finds 10 keywords costs $0.0011 on Starter ($0.00125 on the Free plan), not that plus a start fee. Duplicates are merged before billing — a phrase suggested by Google, YouTube and Bing is **one** row and **one** charge, with all three in `sources`. The cap **Max keywords per seed** is a hard ceiling on what you pay per seed.

The Actor uses plain HTTP requests, no browser and no proxy, so it is fast: the default run (1 seed, Google, alphabet soup, 50 keywords) finishes in about 5 seconds; 2 seeds × 4 sources with every expansion and depth 2 gave 4,000 keywords in 42 seconds in our test.

### How to scrape keyword suggestions with Keyword Suggestions Scraper

1. Open the Actor and type one or more **seed keywords**, one per line.
2. Pick the **sources** — Google is selected by default; add YouTube, Amazon, Bing, eBay, TikTok or others.
3. Set **language** and **country** (two-letter codes like `en` / `US`, `de` / `DE`).
4. Choose the **alphabet soup expansion**: alphabet, numbers, questions, prepositions — or leave it empty for the plain suggestions of the seed.
5. Set **Max keywords per seed** and, for deeper long-tail research, **Depth** = 2.
6. Press **Start**. Download the table as CSV, Excel or JSON, or read it through the API.

### ⬇️ Input

![Keyword Suggestions Scraper input form: seed keywords, autocomplete sources, language, country and alphabet soup expansion](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/keyword-suggestions-scraper/keyword-suggestions-scraper-input-form.png)

The prefilled input — one seed, Google, alphabet soup, 50 keywords:

```json
{
  "keywords": ["running shoes"],
  "sources": ["google"],
  "language": "en",
  "country": "US",
  "expansions": ["alphabet"],
  "maxKeywordsPerSeed": 50
}
```

#### Alphabet soup: questions and prepositions for a blog plan

```json
{
  "keywords": ["bali visa", "digital nomad visa"],
  "sources": ["google", "youtube"],
  "expansions": ["questions", "prepositions"],
  "maxKeywordsPerSeed": 300
}
```

In our test this returned 418 unique keywords in 10 seconds, 174 of them questions.

#### Amazon keyword tool: product keywords for a marketplace

```json
{
  "keywords": ["iphone"],
  "sources": ["amazon", "ebay", "bing"],
  "language": "de",
  "country": "DE",
  "expansions": ["numbers"],
  "requireSeedWords": true,
  "excludeWords": ["hülle"],
  "maxKeywordsPerSeed": 100
}
```

`requireSeedWords` keeps only suggestions that contain every word of the seed; `excludeWords` drops anything containing those words. Dropped suggestions are free.

#### Long-tail keywords: depth 2

```json
{
  "keywords": ["coffee"],
  "sources": ["google"],
  "expansions": [],
  "depth": 2,
  "maxKeywordsPerSeed": 60
}
```

Level 1 asks for "coffee"; level 2 types every suggestion back in ("coffee near me" → "coffee near me open now", "coffee near me drive thru" …). The `expansion` of a depth-2 row is its parent keyword.

#### Other languages: your own prefixes and suffixes

```json
{
  "keywords": ["виза в индонезию"],
  "sources": ["google", "yandex"],
  "language": "ru",
  "country": "RU",
  "expansions": [],
  "customPrefixes": ["как"],
  "customSuffixes": ["2026", "цена"],
  "maxKeywordsPerSeed": 80
}
```

The built-in question words and prepositions are English. For any other language, put your own words in **Custom prefixes** and **Custom suffixes**.

| Field | Default | What it does |
|---|---|---|
| `keywords` | `["running shoes"]` | Seed keywords |
| `sources` | `["google"]` | google, youtube, amazon, bing, ebay, tiktok, duckduckgo, yandex, baidu, naver |
| `language` | `en` | Two-letter language code |
| `country` | `US` | Two-letter country code (`UK` is read as `GB`) |
| `expansions` | `["alphabet"]` | alphabet, numbers, questions, prepositions |
| `maxKeywordsPerSeed` | `50` | Unique keywords kept per seed (1–100,000) |
| `depth` | `1` | 2 = re-query every level-1 suggestion |
| `customPrefixes` / `customSuffixes` | — | Your own words before / after the seed |
| `requireSeedWords` | `false` | Keep only keywords containing every seed word |
| `excludeWords` | — | Drop keywords containing any of these words |
| `maxConcurrency` | `4` | Parallel requests per source (1–10) |

### ⬆️ Output

One row per unique keyword suggestion. Real rows from a test run:

```json
[
  {
    "type": "keyword",
    "keyword": "is bali visa free for indians",
    "seed": "bali visa",
    "source": "google",
    "sources": ["google", "youtube"],
    "position": 1,
    "query": "is bali visa",
    "expansion": "is",
    "expansionType": "questions",
    "depth": 1,
    "language": "en",
    "country": "US",
    "isQuestion": true,
    "intent": "question",
    "wordCount": 6,
    "characterCount": 29,
    "scrapedAt": "2026-10-01T08:04:21.518Z"
  },
  {
    "type": "keyword",
    "keyword": "bali visa for u.s. citizens on arrival",
    "seed": "bali visa",
    "source": "google",
    "sources": ["google"],
    "position": 4,
    "query": "bali visa for",
    "expansion": "for",
    "expansionType": "prepositions",
    "depth": 1,
    "language": "en",
    "country": "US",
    "isQuestion": false,
    "intent": "informational",
    "wordCount": 7,
    "characterCount": 38,
    "scrapedAt": "2026-10-01T08:04:21.983Z"
  }
]
```

The **Keyword suggestions** tab in the Console shows keyword, seed, source, sources, position, expansion, intent, question flag, word count, country and language. The **All fields** tab adds the exact query, expansion type, depth and character count.

#### Error rows

If a source does not answer for a seed after retries, or the input cannot be used (a seed longer than 150 characters, a seed with no letters or digits, a country without an Amazon marketplace or eBay site), the Actor adds a free row:

```json
{ "type": "error", "seed": null, "source": "ebay", "error": "eBay has no site for country \"JP\" here. Use one of: US, CA, GB, AU, AT, BE, FR, DE, IT, NL, ES, CH, IE, PL. Not charged.", "scrapedAt": "2026-10-01T08:06:02.000Z" }
```

An **empty answer is not an error**: a nonsense seed or a seed nobody searches simply has no suggestions. The run finishes successfully and adds a free row with `kind: "no-results"` that says so, instead of leaving the table blank:

```json
{ "type": "error", "kind": "no-results", "seed": "xqzvbnmkjhgfdswerty", "error": "Google autocomplete has no suggestions for \"xqzvbnmkjhgfdswerty\" — people do not search for it in US/en. Try a shorter or more common phrase. Not charged." }
```

The same kind of free row tells you when your filters removed every suggestion. When a language or country code is not recognised, `en` / `US` is used instead and a free `notice` row at the end of the table says so. A seed made only of symbols (`@@@ !!!`) is not sent at all — Bing answers such queries with unrelated trending searches — and gets a free error row. A run summary (requests, empty answers, retries per source) is saved in the key-value store as `SUMMARY`.

### Use cases for keyword suggestions

#### SEO and content planning

Turn one topic into hundreds of real search phrases. Question rows (`isQuestion = true`) become FAQ sections and "People also ask" style headings; `wordCount ≥ 4` gives you long-tail keywords that are easier to rank for.

#### YouTube keyword research

YouTube autocomplete shows what people search on YouTube, not on Google — "running shoes for beginners", "running shoes review". Use it for titles, tags and video ideas.

#### Amazon and eBay listing keywords

Amazon and eBay suggestions show how shoppers name products: sizes, brands, materials, "for men". Use them in titles, bullet points and backend keywords, per marketplace.

#### Paid search

`intent = transactional` or `commercial` rows are candidates for ad groups; `excludeWords` keeps competitor brands out.

#### Social and short video

TikTok suggestions show trending phrasing for hooks, captions and hashtags.

#### AI agents and LLM pipelines

An agent can call the Actor with one seed and get structured, de-duplicated keywords back in seconds — for content briefs, topic clusters or competitor research.

### Integrations

Every run is available through the **Apify API**, and the Actor works with **n8n, Make, Zapier, Google Sheets, Airbyte, LangChain** and the **Apify MCP server**.

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lergassy/keyword-suggestions-scraper").call(run_input={
    "keywords": ["running shoes"],
    "sources": ["google", "youtube", "amazon"],
    "expansions": ["alphabet", "questions"],
    "maxKeywordsPerSeed": 500,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["keyword"], row["sources"], row["intent"])
```

JavaScript:

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lergassy/keyword-suggestions-scraper').call({
    keywords: ['running shoes'],
    sources: ['google', 'bing'],
    expansions: ['alphabet'],
    maxKeywordsPerSeed: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length);
```

Schedule the Actor daily or weekly in the Console to watch how suggestions change, and send the dataset to Google Sheets or a webhook.

### 🤖 For AI Agents & LLM Apps

Compact reference for agents calling this Actor through the Apify MCP server or the Apify API (`lergassy/keyword-suggestions-scraper`).

**Purpose:** one row = one unique autocomplete suggestion for a seed keyword from Google, YouTube, Amazon, Bing, eBay, TikTok, DuckDuckGo, Yandex, Baidu or Naver. Answers "what do people type after X?", "which questions do people ask about X?", "which product keywords does Amazon suggest for X?".

**Minimal input:**

```json
{ "keywords": ["running shoes"] }
```

**Output:** type, keyword, seed, source, sources, position, query, expansion, expansionType, depth, language, country, wordCount, characterCount, isQuestion, intent, scrapedAt. Error rows: type = "error", seed, source, error, scrapedAt. A seed with no suggestions gives an error row with kind = "no-results" (free, not a fault). Notice rows (an input value was replaced): type = "notice", notice. Error and notice rows come after the keyword rows.

**Behaviors an agent should know:**

- `maxKeywordsPerSeed` (default 50) caps rows and cost per seed; raise it together with `expansions` or `depth: 2`.
- No search volume, CPC or difficulty — suggestions only; `intent` is an English keyword heuristic.
- Use `requireSeedWords` and `excludeWords` instead of post-filtering; dropped rows are not billed.
- Duplicates across sources are merged into one row (`sources` lists them all); a keyword already delivered for an earlier seed in the same run is not repeated.
- Billed per keyword row: $0.000125 on the Free plan, $0.00011 on Starter, $0.0001 on Scale, $0.000085 on Business, Platinum and Diamond. Error rows, notice rows and run start are free.
- "Max cost per run" is respected: the run writes only the rows it can charge and finishes green with a status message.
- `sources` is the only array field; everything else is flat.

### ❓ FAQ

#### Is it legal to scrape Google Autocomplete and other keyword suggestions?

The Actor reads public autocomplete suggestions — the same short phrases anyone sees while typing in a search box. They are aggregated search phrases, not personal data. Check the terms of each site and your local law for your use case; when in doubt, consult a lawyer.

#### Does it give search volume?

No. These are keyword suggestions, not volume metrics. Suggestions show *what* people search; for *how much interest over time*, use [Google Trends Scraper](https://apify.com/lergassy/google-trends-scraper).

#### Why did I get fewer keywords than Max keywords per seed?

Each autocomplete query returns up to about 10 suggestions (Bing up to about 20), and many repeat. Add more expansions, more sources or `depth: 2` to reach a higher number. Some sources return nothing for some queries — in our largest test Amazon answered empty for 228 of 310 queries built from questions, prepositions and depth 2. That is normal and free.

#### How much does a typical run cost?

On the Starter plan the default run returns 50 keywords for about $0.0055, 1,000 keywords cost $0.11 and 10,000 keywords $1.10. On the Free plan the same runs cost $0.00625, $0.125 and $1.25. There is no start fee and no proxy fee.

#### Can I use Keyword Suggestions Scraper with the Apify API?

Yes. Start runs, read datasets and schedule jobs with the Apify API, or the Python and JavaScript clients shown above.

#### Can I use it through an MCP server?

Yes. Add the Apify MCP server (`https://mcp.apify.com`) to Claude, Cursor or any MCP client and call `lergassy/keyword-suggestions-scraper` as a tool.

#### Can I integrate it with other apps?

Yes — n8n, Make, Zapier, Google Sheets, Airbyte, Slack and webhooks through Apify integrations.

#### Is each keyword one row?

Yes. One row per unique keyword per run. A phrase suggested by several sources is one row with all of them in `sources`, and you pay for it once.

#### Which question words and prepositions are used?

Questions: how, what, why, when, where, who, which, can, is, are, does, do, will, should. Prepositions: for, with, without, near, vs, to, like, and, in, on, from, under. Alphabet: a–z. Numbers: 0–9.

#### Is TikTok localised by country?

No. TikTok's suggestion endpoint answers for the location of the server that asks. Google, YouTube, Bing and DuckDuckGo follow your language and country; Amazon and eBay follow the country.

### Your feedback

Found a bug, need another source or a new expansion list? Open an issue on the **Issues** tab — we read every one. If the Actor saved you time, a review on the Store page helps other people find it.

### You might also like

| Actor | What it does |
|---|---|
| [Google Trends Scraper](https://apify.com/lergassy/google-trends-scraper) | Interest over time, by region, related queries and topics — trends to go with your suggestions |
| [Google News Scraper](https://apify.com/lergassy/google-news-scraper) | News articles for any keyword, topic or site |
| [Google Ads Transparency Scraper](https://apify.com/lergassy/google-ads-transparency-scraper) | Ads any advertiser runs on Google |
| [YouTube Search Scraper](https://apify.com/lergassy/youtube-search-scraper) | YouTube search results for your keywords |
| [Wappalyzer Scraper](https://apify.com/lergassy/wappalyzer-scraper) | Technologies behind any website |

**Also known as:** Google Autocomplete scraper, Google Suggest scraper, keyword research tool, keyword generator, YouTube autocomplete scraper, YouTube keyword tool, Amazon keyword tool, Amazon autocomplete scraper, eBay keyword tool, Bing autosuggest, TikTok search suggestions, long-tail keyword generator, alphabet soup keyword tool, AnswerThePublic alternative, keyword suggestion API.

# Actor input Schema

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

Enter one seed keyword per line. Each seed is typed into the autocomplete of every selected source, with the expansions below.

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

Pick the autocomplete sources. A phrase suggested by several sources is one row with all of them in <b>sources</b>. Amazon and eBay use the marketplace of the country below.

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

Enter a two-letter language code: en, de, fr, es, id, ru, ja… Used by Google, YouTube, Bing, DuckDuckGo and Yandex.

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

Enter a two-letter country code: US, GB, DE, ID, AU… Localises Google, YouTube, Bing and DuckDuckGo, and picks the Amazon marketplace (US, GB, DE, FR, IT, ES, CA, JP, AU, MX, BR, NL, SE, PL, AE, SG, TR, SA, BE) and the eBay site (US, CA, GB, AU, AT, BE, FR, DE, IT, NL, ES, CH, IE, PL).

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

Choose how each seed is expanded into more autocomplete queries. Empty = only the seed itself (about 10 suggestions per source). Question words and prepositions are English.

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

Set how many unique keywords to keep for each seed. The run stops asking a source once the limit is reached, so a low number is fast and cheap.

## `depth` (type: `integer`):

Set 2 to type every suggestion from level 1 back into autocomplete for long-tail keywords (1 = seed and its expansions only). Many more requests — raise Max keywords per seed with it.

## `customPrefixes` (type: `array`):

Add your own words to put before each seed, e.g. question words in your language: <b>wie</b>, <b>comment</b>, <b>cara</b>.

## `customSuffixes` (type: `array`):

Add your own words to put after each seed, e.g. <b>2026</b>, <b>for beginners</b>, <b>bali</b>.

## `requireSeedWords` (type: `boolean`):

Switch on to drop suggestions that do not contain every word of the seed (TikTok and Amazon sometimes suggest loosely related phrases). Dropped suggestions are not charged.

## `excludeWords` (type: `array`):

Add words or brand names; suggestions containing any of them are dropped and not charged.

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

Set how many autocomplete requests run at once per source. The default is polite and fast; failed requests are retried with back-off.

## Actor input object example

```json
{
  "keywords": [
    "running shoes"
  ],
  "sources": [
    "google"
  ],
  "language": "en",
  "country": "US",
  "expansions": [
    "alphabet"
  ],
  "maxKeywordsPerSeed": 50,
  "depth": 1,
  "requireSeedWords": false,
  "maxConcurrency": 4
}
```

# Actor output Schema

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

One row per unique keyword suggestion: keyword, seed, source, position, expansion, intent, word count.

# 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"
    ],
    "sources": [
        "google"
    ],
    "language": "en",
    "country": "US",
    "expansions": [
        "alphabet"
    ],
    "maxKeywordsPerSeed": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/keyword-suggestions-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": ["running shoes"],
    "sources": ["google"],
    "language": "en",
    "country": "US",
    "expansions": ["alphabet"],
    "maxKeywordsPerSeed": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("lergassy/keyword-suggestions-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": [
    "running shoes"
  ],
  "sources": [
    "google"
  ],
  "language": "en",
  "country": "US",
  "expansions": [
    "alphabet"
  ],
  "maxKeywordsPerSeed": 50
}' |
apify call lergassy/keyword-suggestions-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lergassy/keyword-suggestions-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/mF6fQrn3LBgdGQFcz/builds/wVcGvpu9KX4ZNO4Na/openapi.json
