# Keyword Research Tool - Ideas, Volume, KD, Intent & SERP

> Keyword ideas from any seed with search volume, CPC, keyword difficulty (KD), search intent and SERP features in one row. Ahrefs Keywords Explorer & Semrush Keyword Magic alternative. 90+ countries, up to 10,000 keywords per run, $3 per 1,000 keywords.

- Category: Keyword data
- Price: $3 per 1,000 × keyword result, billed per result by Apify (no subscription); any other billed events are listed on the Store page. Cap any run with `maxTotalChargeUsd`.
- Store page: https://apify.com/wrenfield-data/keyword-research-tool
- Human page: https://wrenfielddata.com/tools/keyword-research-tool/
- OpenAPI 3 spec: https://api.apify.com/v2/acts/wrenfield-data~keyword-research-tool/builds/default/openapi.json
- MCP tool: https://mcp.apify.com?tools=wrenfield-data/keyword-research-tool (appears as `wrenfield-data--keyword-research-tool`)

## Call it

Synchronous run that returns the dataset rows as JSON (use `/runs` for long jobs and poll; see the OpenAPI spec):

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/wrenfield-data~keyword-research-tool/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"seedKeywords": ["running shoes"], "mode": "ideas", "location": "United States", "language": "English", "maxKeywords": 50}'
```

## Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `seedKeywords` | array | yes | `["running shoes"]` | One or more topics to research, e.g. running shoes. "Ideas" mode accepts up to 200 seeds at once; "suggestions" and "related" use up to 20. |
| `mode` | string |  | `"ideas"` | How keywords are found. ideas = topically related keywords, suggestions = phrase-match long tail containing your seed, related = Google related-searches graph. |
| `location` | string |  | `"United States"` | Country: name (United States), 2-letter code (DE) or location code (2840). |
| `language` | string |  |  | Language name or code (English, es). Leave empty for the main language of the country. |
| `maxKeywords` | integer |  | `100` | Maximum keyword rows per run, including the seed keywords. The default of 100 finishes in a few seconds. |
| `sortBy` | string |  | `"relevance"` | Which keywords come first (and are kept when you hit Max keywords). |
| `minSearchVolume` | integer |  |  | Only keywords with at least this many monthly searches. |
| `maxKeywordDifficulty` | integer |  |  | Only keywords with KD at or below this value (0-100). Use 30 to find easy wins. |
| `searchIntents` | array |  |  | Only keywords with these main intents. Leave empty for all. |
| `includeSeedKeywords` | boolean |  | `true` | Add a row with full metrics for each seed keyword (one extra data request). |
| `includeMonthlySearches` | boolean |  | `false` | Add the last 12 months of search volume to each row. |
| `relatedDepth` | integer |  | `2` | Only for "related" mode: how many levels of related searches to follow (more = more keywords). |

## Example input

```json
{
  "seedKeywords": [
    "running shoes"
  ],
  "mode": "ideas",
  "location": "United States",
  "language": "English",
  "maxKeywords": 50
}
```

## Output fields

One flat row per result:

| Field | Type | Description |
|---|---|---|
| `keyword` | string | Keyword (lower-case) |
| `type` | string | seed = one of your seed keywords; idea / suggestion / related = a keyword found from the seeds |
| `seed_keyword` | string | Seed keyword the row came from (null in ideas mode with several seeds) |
| `search_volume` | integer | Average monthly Google searches (last 12 months) |
| `cpc` | number | Average Google Ads cost per click (USD) |
| `competition` | string | Google Ads competition level: LOW, MEDIUM or HIGH |
| `competition_index` | integer | Google Ads competition, 0-100 |
| `low_top_of_page_bid` | number | Top-of-page bid, low range (USD) |
| `high_top_of_page_bid` | number | Top-of-page bid, high range (USD) |
| `keyword_difficulty` | integer | SEO keyword difficulty 0-100 (higher = harder to reach the top 10) |
| `difficulty_level` | string | very easy (0-14), easy (15-29), possible (30-49), difficult (50-69), hard (70-84), very hard (85-100) |
| `search_intent` | string | Main search intent: informational, navigational, commercial or transactional |
| `secondary_intents` | array | Other likely intents |
| `serp_features` | array | Google result types on the first page, e.g. ai_overview, people_also_ask, local_pack, popular_products, video |
| `has_ai_overview` | boolean | Google shows an AI Overview for this keyword |
| `has_featured_snippet` | boolean | Google shows a featured snippet |
| `has_people_also_ask` | boolean | Google shows People Also Ask questions |
| `has_local_pack` | boolean | Google shows a local map pack |
| `has_shopping_results` | boolean | Google shows shopping / product results |
| `has_video` | boolean | Google shows video results |
| `has_images` | boolean | Google shows image results |
| `has_ads` | boolean | Google showed ads when the results page was last checked |
| `serp_results_count` | integer | Number of results Google reports for the keyword |
| `word_count` | integer | Number of words in the keyword |
| `avg_backlinks_top10` | integer | Average backlinks of the pages ranking in the top 10 |
| `avg_referring_domains_top10` | integer | Average referring domains of the pages ranking in the top 10 |
| `search_volume_trend` | object | Search volume change in %: monthly, quarterly and yearly |
| `monthly_searches` | array | Last 12 months of search volume (only with includeMonthlySearches) |
| `related_depth` | integer | Related mode only: how many related-search hops from the seed |
| `location` | string | Country the data is for, e.g. "United States" |
| `language` | string | Language name, e.g. "English" |
| `data_updated_at` | string | When the keyword metrics were last updated (ISO 8601, UTC) |
| `scraped_at` | string | When this row was produced (ISO 8601, UTC) |

## Notes

- Auth: an Apify API token as `Authorization: Bearer <token>`; the MCP server also supports OAuth sign-in.
- Failed or empty results are not charged on most tools; check the pricing on the Store page.
- Questions: hello@wrenfielddata.com
