# Keyword Ideas & Related Keywords - Difficulty, Volume & CPC (`tenfoldfleet/keyword-ideas`) Actor

Find keyword ideas, keyword suggestions and related keywords for a seed keyword, with Google search volume, CPC, keyword difficulty and search intent. Three sources in one run, 94 countries. $3 per 1,000 ideas plus $0.015 per run; only ideas with search volume are charged.

- **URL**: https://apify.com/tenfoldfleet/keyword-ideas.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** SEO tools, Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 keyword ideas

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

### What does Keyword Ideas & Related Keywords do?

**Keyword Ideas & Related Keywords** turns one seed keyword into hundreds of **keyword ideas**, each with **Google search volume**, **cost per click (CPC)**, **Google Ads competition**, **keyword difficulty** and **search intent**. It combines three idea sources in one run:

- **Keyword ideas**: keywords from the same topic and category as your seeds (the biggest source).
- **Keyword suggestions**: long-tail keywords that contain your seed, such as questions and modifiers.
- **Related keywords**: the keywords Google shows in its "searches related to" box, followed two levels deep.

It works as a **keyword ideas API** and a **Google Keyword Planner alternative** for **94 countries**, with no Google Ads account needed. Every idea carries search intent, and keyword difficulty wherever Google ranking data exists (about 4 in 5 ideas), so you can sort ideas straight away. You pay **$3 per 1,000 keyword ideas** plus $0.015 per run, and only ideas with search volume are charged.

### Why use a keyword ideas generator?

- 💡 **Content planning**: turn a topic like "email marketing" into a list of article ideas with volume and difficulty.
- 🎯 **Quick wins**: filter for high volume and low keyword difficulty to find keywords you can rank for.
- ❓ **Long-tail and questions**: keyword suggestions surface "how to", "best" and "for small business" variants of your seed.
- 💰 **PPC research**: CPC, competition and top-of-page bid ranges for every idea help you plan Google Ads budgets.
- 🧭 **Search intent**: every idea is tagged informational, navigational, commercial or transactional.
- 🤖 **Automation and AI agents**: run it from the API, Make, Zapier, n8n or the Apify MCP server.

### What data does it return?

| Field | Example | Description |
|---|---|---|
| `keyword` | `best email marketing platform` | The keyword idea |
| `seed` / `source` / `depth` | `email marketing` / `related` / `2` | Where the idea came from |
| `searchVolume` | `1000` | Average monthly Google searches |
| `cpc` | `24.94` | Average cost per click, USD |
| `competition` / `competitionLevel` | `0.21` / `LOW` | Google Ads competition |
| `lowTopOfPageBid` / `highTopOfPageBid` | `9.1` / `41.2` | Top-of-page bid range, USD |
| `keywordDifficulty` | `24` | How hard it is to rank in the top 10 organic results (0-100); `null` for rare keywords without ranking data |
| `mainIntent` / `foreignIntent` | `commercial` / `null` | Search intent |
| `wordCount` | `4` | Words in the keyword |
| `trendMonthly` / `trendQuarterly` / `trendYearly` | `0` / `22` / `-19` | Volume change in % |
| `monthlySearches` | `[{ "month": "2026-08", "searchVolume": 1300 }]` | Last 12 months (optional) |
| `location` / `language` / `lastUpdated` | `United States` / `English` | Market and data freshness |

### How to find keyword ideas

1. Click **Try for free**.
2. Enter one or more **seed keywords**, for example `email marketing`.
3. Pick a **Country** and **Language** (default: United States, English).
4. Optionally choose the **idea sources**, the **minimum search volume** and how many ideas you want.
5. Click **Start**. One seed takes a few seconds.
6. Download the keyword ideas as **CSV, Excel, JSON or HTML**, or read them through the API.

### How much does it cost?

You pay **$0.003 per keyword idea** (**$3 per 1,000 ideas**), plus **$0.015 per run**, which covers the data provider's fixed fee per lookup. A typical run with one seed and default settings returns about 250 ideas for about $0.76. **Duplicates across sources, notes, skipped seeds and errors are free**, and ideas below your minimum search volume are never returned or charged.

Control the cost with **Max ideas per run**, **Max ideas per seed and source**, or the **maximum cost per run** in the run options: the Actor only fetches as many ideas as that budget can pay for.

**Free Apify plan: 10 keyword ideas per run.** Every lookup costs us a data fee and free-plan runs earn nothing, so runs on the free Apify plan return the first 10 ideas from the keyword ideas source. Any paid Apify plan gets all three sources.

### Input

```json
{
    "keywords": ["email marketing"],
    "location": "United States",
    "language": "English",
    "sources": ["ideas", "suggestions", "related"],
    "maxIdeasPerSeed": 100,
    "maxIdeas": 1000,
    "minSearchVolume": 10,
    "relatedDepth": 2,
    "includeMonthlyHistory": false
}
```

- **keywords**: up to 200 seeds per run. Broad 1-3 word seeds give the most ideas.
- **sources**: any of `ideas`, `suggestions` and `related` (default: all three).
- **maxIdeasPerSeed**: ideas per seed from each source (10-1,000). For the `ideas` source, all seeds go in one lookup, so the limit is this times the number of seeds.
- **maxIdeas**: total charged ideas per run.
- **minSearchVolume**: skip ideas with fewer monthly searches (set 0 to include zero-volume ideas).
- **relatedDepth**: 1 gives about 10 related keywords per seed, 2 about 50, 3 several hundred.
- **includeMonthlyHistory**: add the last 12 months of search volume to each idea.

### Output example

```json
{
    "keyword": "marketing tool email",
    "seed": "email marketing",
    "source": "suggestions",
    "depth": null,
    "searchVolume": 4400,
    "cpc": 109.26,
    "competition": 0.04,
    "competitionLevel": "LOW",
    "lowTopOfPageBid": 17.9,
    "highTopOfPageBid": 103.72,
    "keywordDifficulty": 64,
    "mainIntent": "commercial",
    "foreignIntent": null,
    "wordCount": 3,
    "trendMonthly": 175,
    "trendQuarterly": 537,
    "trendYearly": 120900,
    "monthlySearches": null,
    "lastUpdated": "2026-09-14 09:32:29 +00:00",
    "error": null,
    "location": "United States",
    "language": "English"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

#### Use it from code

Python (`pip install "apify-client>=3"`):

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("tenfoldfleet/keyword-ideas").call(run_input={
    "keywords": ["email marketing", "crm software"],
    "location": "United Kingdom",
    "minSearchVolume": 50,
})
for row in client.dataset(run.default_dataset_id).iterate_items():
    if not row.get("error"):
        print(row["keyword"], row["searchVolume"], row["keywordDifficulty"], row["mainIntent"])
```

JavaScript (`npm install apify-client`):

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

const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('tenfoldfleet/keyword-ideas').call({ keywords: ['vegan recipes'], location: 'Germany', language: 'German' });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((i) => !i.error));
```

### Tips

- **Sort by `searchVolume` and `keywordDifficulty`** to find high-volume keywords that are easy to rank for.
- **Filter `mainIntent`** to `commercial` or `transactional` for money pages and to `informational` for blog posts.
- **Use `source: suggestions`** for long-tail keywords and questions that contain your seed.
- **Raise `minSearchVolume`** if you only want keywords worth writing about; it also lowers the cost.
- Already have a keyword list? Check its volume, CPC and difficulty in bulk with [Keyword Search Volume, CPC & Difficulty Checker](https://apify.com/tenfoldfleet/keyword-search-volume).

### FAQ

#### Where does the data come from?

From the DataForSEO Labs keyword database, which is based on Google Ads (Keyword Planner) data and refreshed monthly. `lastUpdated` shows when each keyword was last refreshed.

#### What is the difference between the three sources?

Keyword ideas finds keywords in the same topic, even without your seed words. Keyword suggestions only returns phrases that contain your seed. Related keywords follows Google's "searches related to" box. Together they cover far more ground than any one source.

#### Why do some rows have an `error` field?

These are free note rows: a seed that was too long, a lookup that failed, the free-plan limit or the per-run lookup limit. They are never charged.

#### Why did my seed return few ideas?

Very rare, misspelled or brand-new phrases have little or no Google data. Try a broader seed, a lower minimum search volume or another country.

#### How is keyword difficulty calculated?

Keyword difficulty (0-100) estimates how hard it is to reach the top 10 organic results, based on the link strength of the pages currently ranking.

#### Do I need a Google Ads account?

No. You only need an Apify account.

#### Support

Missing a country, a source or a field? Open an issue in the **Issues** tab.

This Actor returns aggregated keyword statistics only. It does not collect any personal data.

### More tools from Tenfold Fleet

| Actor | Output |
|---|---|
| [AliExpress Keyword Scraper - Exact Sold Counts by Search Term](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | product |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | product |
| [ATS Jobs Scraper - Greenhouse, Lever, Ashby & 5 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | job posting |
| [Backlinks Checker - Referring Domains, Anchors & Domain Rank](https://apify.com/tenfoldfleet/backlinks-checker) | backlink |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | video or comment |
| [Businesses Without Websites - Local Leads with Phone & Rating](https://apify.com/tenfoldfleet/businesses-without-websites) | lead |
| [Contact Details Scraper - One Lead Record per Company Website](https://apify.com/tenfoldfleet/company-contact-finder) | website with contacts |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | ad |
| [Google AI Overviews Checker - Citations & Domain Tracker](https://apify.com/tenfoldfleet/google-ai-overviews-checker) | keyword checked |
| [Google Jobs Scraper - Salary, Apply Links & Posting Dates](https://apify.com/tenfoldfleet/google-jobs-scraper) | job listing |
| [Google Keyword Planner Alternative - Ideas, Bids & Volume](https://apify.com/tenfoldfleet/google-keyword-planner) | keyword idea |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | article |
| [Google Trends Scraper - Interest, Regions & Related Queries](https://apify.com/tenfoldfleet/google-trends-scraper) | keyword |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | keyword with data |
| [Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sites](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | unique remote job |
| [SEEK Job Scraper - Australia, NZ, Jobstreet & JobsDB](https://apify.com/tenfoldfleet/seek-job-scraper) | job listing |
| [SEO Audit Tool - Technical On-Page SEO Checker & Score](https://apify.com/tenfoldfleet/seo-audit-tool) | page audit |
| [SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap](https://apify.com/tenfoldfleet/seo-competitor-keywords) | keyword |
| [Shopify Inventory Scraper - SKUs, Variants & In-Stock Status](https://apify.com/tenfoldfleet/shopify-products-scraper) | product |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | shopify store |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | url |
| [Technology Detector - Wappalyzer & BuiltWith Alternative](https://apify.com/tenfoldfleet/tech-stack-detector) | website |
| [URL to Markdown - Web Page to LLM-Ready Text for AI Agents](https://apify.com/tenfoldfleet/url-to-markdown) | page |
| [Website Traffic Checker - Bulk Domain Traffic Estimate](https://apify.com/tenfoldfleet/website-traffic-checker) | domain with traffic data |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | job posting |
| [YouTube Livestream & Channel Scraper - Videos, Likes & Stats](https://apify.com/tenfoldfleet/youtube-channel-scraper) | video |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | comment |
| [YouTube Shorts Analytics Scraper - Views, Likes & Hashtags](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | short |
| [YouTube Captions Downloader - Transcript & Subtitles Scraper](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | transcript |

# Actor input Schema

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

Topics to find keyword ideas for, one per line, e.g. "email marketing". Up to 200 seeds per run. Broad 1-3 word seeds give the most ideas.

## `location` (type: `string`):

Country whose Google search volume, CPC and keyword difficulty you want. A country name or 2-letter code works ("United States", "US", "GB", "Germany"); 94 countries.

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

Search language, as a name or code ("English", "en", "de"). If the language has no data for the chosen country, the country's main language is used instead (for example Germany + English uses German). 21 countries support more than one language, for example United States English/Spanish, Canada English/French, Switzerland German/French/Italian, Belgium French/Dutch/German and India English/Hindi. English is also available in Cyprus, Egypt, Greece, Saudi Arabia and the UAE.

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

Where ideas come from. ideas: keywords in the same topic and category as your seeds (the biggest source; all seeds in one lookup). suggestions: long-tail keywords that contain your seed. related: keywords from Google's "searches related to" box, followed a few levels deep. Default: all three.

## `maxIdeasPerSeed` (type: `integer`):

How many ideas each source returns for each seed (for the ideas source, this times the number of seeds). Related keywords usually give 10-100 per seed.

## `maxIdeas` (type: `integer`):

Stop after this many charged ideas in total. You can also set a maximum cost per run in the run options.

## `minSearchVolume` (type: `integer`):

Only return ideas with at least this many monthly Google searches. Set 0 to include zero-volume ideas (they are charged like any idea with data).

## `relatedDepth` (type: `integer`):

How many levels of Google's related searches to follow. 1 gives about 10 keywords per seed, 2 about 50, 3 several hundred.

## `includeMonthlyHistory` (type: `boolean`):

Add the search volume of each of the last 12 months (seasonality) to every idea.

## Actor input object example

```json
{
  "keywords": [
    "email marketing"
  ],
  "location": "United States",
  "language": "English",
  "sources": [
    "ideas",
    "suggestions",
    "related"
  ],
  "maxIdeasPerSeed": 100,
  "maxIdeas": 1000,
  "minSearchVolume": 10,
  "relatedDepth": 2,
  "includeMonthlyHistory": 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": [
        "email marketing"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/keyword-ideas").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": ["email marketing"] }

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/keyword-ideas").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": [
    "email marketing"
  ]
}' |
apify call tenfoldfleet/keyword-ideas --silent --output-dataset

```

## MCP server setup

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

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/gMWHFRUGt7qDDw53q/builds/z5CVTxxPYzz3QSPBH/openapi.json
