# Keyword Generator – Google, YouTube & Bing Autocomplete (`rowfeed/keyword-generator`) Actor

Generate hundreds of long-tail keywords per keyword from what Google, YouTube and Bing suggest in the search box, expanded a-z, 0-9 and with question words. Any country and language. A keyword tool, Google autocomplete API and AnswerThePublic alternative.

- **URL**: https://apify.com/rowfeed/keyword-generator.md
- **Developed by:** [Rowfeed](https://apify.com/rowfeed) (community)
- **Categories:** SEO tools, Developer tools
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 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 Generator – Google, YouTube & Bing Autocomplete

Turn one keyword into hundreds of long-tail keyword ideas: the Actor reads what Google, YouTube and Bing suggest in their search boxes while someone types, for your keyword plus every letter a-z, every digit 0-9 and, if you want, question words (how, what, why...) and prepositions (for, with, vs...). Any country and language.
Built for SEO and content planning, YouTube creators, PPC research, and AI agents that need real search phrasing as clean JSON. Works like AnswerThePublic or keywordtool.io, paid per keyword idea, no subscription, no API key.

### What you get

- **One row per unique suggestion** per keyword and search box: `suggestion`, `source` (`google`, `youtube` or `bing`), the `query` that was typed, the `expansion` (`seed`, `alphabet`, `question`, `preposition`), its `position` in the list and `word_count`.
- Each suggestion comes once per search box for the whole run, even when several of your keywords lead to it. Duplicates and echoes of what was typed are removed and not charged.
- Measured on Apify: about 10 suggestions per keyword without expansion, about 340 with the alphabet (Google), 200 to 700 per search box with everything. 5 keywords on all three search boxes with everything gave 6,859 ideas in 14 seconds.
- Question words and prepositions come in the chosen language for English, German, French, Spanish, Italian, Portuguese, Dutch, Swedish, Danish and Norwegian (e.g. "wie laufschuhe waschen").

### Example output

```json
{
  "keyword": "running shoes",
  "suggestion": "running shoes with wide toe box",
  "source": "google",
  "query": "running shoes",
  "expansion": "seed",
  "position": 7,
  "word_count": 6,
  "country": "us",
  "language": "en",
  "checked_at": "2026-11-04T21:10:00+00:00"
}
```

With `expand: questions`, "how running shoes" gives ideas like "how running shoes should fit" and "how running shoes are made".

### Input

| Field | What it does |
|---|---|
| `keywords` | Seed keywords, one per line. Up to 1,000 per run. |
| `sources` | `google` (default), `youtube`, `bing`, or any mix. |
| `expand` | `none` (keyword only), `alphabet` (default: + a-z and 0-9), `questions` (how/what/why... + keyword, keyword + for/with/vs...), `all`. |
| `country` / `language` | Two-letter codes, e.g. `us` / `en`, `de` / `de`, `gb` / `en`. Bing supports about 40 markets; for others it uses the country's main market or US English. |
| `maxSuggestionsPerKeyword` | Stop after this many unique suggestions per keyword and search box. 0 = all. |

### Pricing

Pay per event, no subscription:

- **$0.40 per 1,000 keyword suggestions** ($0.0004 per row). Duplicates and failed lookups are free.
- $0.002 per run start.

Examples: 1 keyword with the alphabet on Google (about 340 ideas) costs about $0.14. 1 keyword on Google, YouTube and Bing with everything (about 1,400 ideas) costs about $0.55.
Cap the cost of a run with the maximum charge setting; the Actor stops when the budget is reached.

### Good to know

- Suggestions are what the search boxes show to a new visitor from the chosen country, not one person's personalised suggestions.
- Suggestions have no search volume. Feed the ideas into [Keyword Research Tool](https://apify.com/rowfeed/keyword-search-volume) to get volume, CPC and difficulty.
- If a search box does not answer for a keyword, you get one free error row for it and the run goes on.

### More tools from Rowfeed

- [Remove Duplicates & Merge](https://apify.com/rowfeed/dataset-merge-dedup) – merge several runs, CSV or JSON files into one table and drop duplicates by any field.
- [Keyword Research Tool](https://apify.com/rowfeed/keyword-search-volume) – search volume, CPC, keyword difficulty and keyword ideas for Google and Bing.
- [Competitor Keywords](https://apify.com/rowfeed/competitor-keywords) – the keywords any website ranks for.
- [Google Trends API](https://apify.com/rowfeed/google-trends-explorer) – interest over time, regions and rising searches.
- [SERP API & Rank Checker](https://apify.com/rowfeed/google-serp-api) – Google results for any keyword and country, with your domain's position.
- [YouTube Search API](https://apify.com/rowfeed/youtube-search-api) – the videos YouTube shows for each keyword idea.

Not affiliated with Google, YouTube, Microsoft, AnswerThePublic or keywordtool.io.

# Actor input Schema

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

Keywords to get suggestions for, one per line. Up to 1,000 per run.

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

Whose autocomplete to read: Google, YouTube and/or Bing.

## `expand` (type: `string`):

none: only the keyword itself (about 10 suggestions). alphabet: also keyword + a-z and 0-9 (about 300 long-tail suggestions). questions: also how/what/why... + keyword and keyword + for/with/vs... all: alphabet and questions.

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

Two-letter country code, e.g. us, gb, de, fr, in.

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

Two-letter language code, e.g. en, de, fr, es.

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

Stop after this many unique suggestions per keyword and search box. 0 = all.

## Actor input object example

```json
{
  "keywords": [
    "running shoes",
    "how to bake bread"
  ],
  "sources": [
    "google"
  ],
  "expand": "alphabet",
  "country": "us",
  "language": "en",
  "maxSuggestionsPerKeyword": 0
}
```

# 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"
    ],
    "country": "us",
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("rowfeed/keyword-generator").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"],
    "country": "us",
    "language": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("rowfeed/keyword-generator").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"
  ],
  "country": "us",
  "language": "en"
}' |
apify call rowfeed/keyword-generator --silent --output-dataset

```

## MCP server setup

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

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/NiOLFVZVoCbEjvAWq/builds/rVJieX2zD700gqylI/openapi.json
