✨ Keyword Research Pro - Bulk Volume & CPC | Launch 80% Off
Pricing
from $0.50 / 1,000 keyword results
✨ Keyword Research Pro - Bulk Volume & CPC | Launch 80% Off
Check Google search volume, CPC, competition, and keyword ideas for up to 10,000 keywords per run. Filters, competitor domains, and white-label reports. $0.50 per 1,000 at launch. 230+ countries. Official search data. No scraping. No broken runs.
Pricing
from $0.50 / 1,000 keyword results
Rating
0.0
(0)
Developer
Winning Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Keyword Research Pro: Bulk Google Search Volume, CPC and Competition
An Apify Actor for SEO keyword research at scale. Paste a seed keyword list or enter a competitor domain, pick a research mode, and get structured metrics for up to 10,000 keywords per run across 230+ countries. No Google Ads account required.
It returns average monthly search volume, CPC, competition, top-of-page bid ranges, keyword difficulty, search intent, backlink-gap signals, and a 12-month volume series for every term. Optional enrichments add SERP competitors, AI search volume, extended trends, and clickstream demographics. White-label HTML (+ CSV) and PDF reports are available for client delivery.
Designed for SEO teams, PPC planners, agencies, and automation workflows, the Actor uses official search data APIs.
Pay only for keywords returned, and cap spend with maxTotalChargeUsd.
No scraping. No broken runs. No captchas to solve.
🚀 Launch pricing: 80% DISCOUNT
$0.50 per 1,000 keywords
Launch rates apply until 31 October 2026. Regular rates start on 1 November 2026 which will also be very competitive. See the price tables.
Use Cases
- Run bulk search volume checks on hundreds or thousands of keywords in one job
- Prioritize SEO content by real search demand before you write
- Plan PPC / Google Ads budgets with CPC and top-of-page bid ranges
- Spot seasonality and demand shifts with 12-month volume history
- Feed agents and automation with stable JSON field names for API, MCP, n8n, or Make
Index
- Use Cases
- Release Notes
- Research Modes
- Features
- Optional Enrichments
- Pricing
- Input
- Input Example
- API and MCP usage
- Output Structure
- Output Example
Release Notes
v1.0 - Initial public release
- Five research modes: Suggestions, Ideas, Related, Overview (metrics for your own list), and Competitor (domain seed)
- Built-in filters: min/max volume, max difficulty, search intent, include/exclude words, questions only, min/max word count
- Backlink gap metrics: average backlinks, referring domains, and domain rank of top-ranking pages (included in base metrics)
- Optional enrichments: SERP overview (top competitors), AI search volume, extended trend history
- SERP feature flags: SERP feature types (including AI Overview), clickstream demographics and normalized volumes
- White-label reports: HTML (+ CSV) and PDF with custom title, logo, subline, and domain line
- Export toggles: omit metric, intent, backlink, AI, SERP, or clickstream field groups from dataset rows
- Pay-per-event pricing: Actor start, per keyword result, optional SERP / AI / trends / clickstream / report charges; spending-limit safe
- Launch pricing: discounted flat rates until 31 October 2026. Regular rates apply from 1 November 2026.
Research Modes
Choose how the Actor discovers or scores keywords. Set Mode in the Input tab or pass mode in your API call.
| Mode | Seed required | What it does |
|---|---|---|
suggestions | Seed keywords | Longtail phrases and close variants from each seed |
ideas | Seed keywords | Broad topic expansion from seed keywords (default) |
related | Seed keywords | Semantically related terms from each seed |
overview | Seed keywords | Metrics only for the keywords you provide. No expansion. |
competitor | Competitor domain | Organic keywords the domain ranks for |
If you provide only a competitor domain and leave the mode on the default, the Actor auto-infers Competitor mode and logs a seed warning.
Ideas expands by Google Ads category, not by semantic similarity. Use Suggestions for close variants, or add includeWords / excludeWords.
Use Overview when you already have a keyword list and need volume, CPC, and competition only. One dataset row per keyword.
Features
🔍 Five research modes: Expand from seeds, score your own list, or map a competitor domain
🎯 Built-in filters: Volume, difficulty, intent, include/exclude words, questions only, exact phrase match, word-count bounds
📈 Core SEO metrics: Search volume, CPC, competition, keyword difficulty (0-100), bid range, monthly history, trend %, opportunity score
🔗 Backlink gap: Average backlinks and referring domains of pages ranking for each keyword
🌍 230+ countries: Location and language targeting for local and international research
📄 White-label reports: HTML (+ CSV) and/or PDF with your branding; first 500 keywords in the report table
🛡️ Reliable by design: Official search data APIs. No scraping. No broken runs.
Optional Enrichments
Turn these on in the Input tab when you need deeper data. Each optional enrichment is billed only when enabled and data is returned.
- SERP overview (
includeSerpOverview) - Top organic competitors per keyword with position and visibility signals. Charged as serp-overview ($3.20 / 1,000 keywords at launch). - AI search volume (
includeAiSearchVolume) - LLM / AI search volume and AI share for GEO and AI-SEO workflows. Charged as ai-search-volume ($0.40 / 1,000 keywords at launch). - Trend data (
includeTrends) - Extended monthly search-volume history beyond the default series. Charged as trends ($2.30 / 1,000 keywords at launch). - Clickstream data (
includeClickstreamData) - Demographics and clickstream / Bing-normalized volumes. Charged as clickstream ($0.22 / 1,000 keywords at launch). - SERP feature flags (
includeSerpInfo) - SERP feature types (including AI Overview) and indexed result counts from the discovery call. No separate enrichment charge.
White-label HTML (+ CSV) and PDF reports are flat per-run charges when generation succeeds (html-report $0.05, pdf-report $0.05 at launch).
Pricing
Launch pricing is active until 31 October 2026. Base metrics cost $0.50 per 1,000 keywords, roughly a quarter of what comparable actors charge. Reports cost $0.05 each.
Launch pricing is available to everyone. No code is needed. Runs started before 1 November 2026 are billed at the launch rate.
From 1 November 2026 the regular rates apply.
Launch prices (until 31 October 2026)
| Cost item | Launch rate |
|---|---|
| Keyword result | $0.50 / 1,000 keywords |
| SERP overview (optional) | $3.20 / 1,000 keywords |
| AI search volume (optional) | $0.40 / 1,000 keywords |
| Trend data (optional) | $2.30 / 1,000 keywords |
| Clickstream data (optional) | $0.22 / 1,000 keywords |
| HTML report (optional) | $0.05 once per run |
| PDF report (optional) | $0.05 once per run |
| Actor start | $0.02 (infrequent) |
| Apify platform compute (RAM/time) | Billed by Apify platform pricing |
Cost per keyword (Overview, no enrichments): ~$0.00052 - about $0.52 per 1,000 keywords including Actor start. 100 keywords cost about $0.07.
No tier discounts during launch. Every plan pays the same launch rate.
Regular prices (from 1 November 2026)
| Cost item | Regular rate |
|---|---|
| Keyword result | $1.80 / 1,000 keywords |
| SERP overview (optional) | $5.00 / 1,000 keywords |
| AI search volume (optional) | $0.80 / 1,000 keywords |
| Trend data (optional) | $3.50 / 1,000 keywords |
| Clickstream data (optional) | $0.40 / 1,000 keywords |
| HTML report (optional) | $0.25 once per run |
| PDF report (optional) | $0.15 once per run |
| Actor start | $0.02 (infrequent) |
| Apify platform compute (RAM/time) | Billed by Apify platform pricing |
Volume discounts on keyword results down to $1.20 per 1,000 apply from the Bronze plan upwards after 1 November 2026.
Optional enrichments are billed separately when enabled. Use maxTotalChargeUsd (default $25) to cap run cost. The Actor stops charging and keeps results already written.
Cost Examples (launch rates)
Scenario A: 1,000 keywords, Overview, no enrichments
- Actor start: $0.02
- 1,000 keyword results: $0.50
- Total: ~$0.52
Scenario B: 1,000 keywords + HTML report
- Actor start: $0.02
- 1,000 keyword results: $0.50
- HTML report: $0.05
- Total: ~$0.57
Scenario C: 1,000 keywords + live SERP overview
- Actor start: $0.02
- 1,000 keyword results: $0.50
- SERP overview (1,000 x $0.0032): $3.20
- Total: ~$3.72
Scenario D: 1,000 keywords + AI search volume + PDF report
- Actor start: $0.02
- 1,000 keyword results: $0.50
- AI volume (1,000 x $0.0004): $0.40
- PDF report: $0.05
- Total: ~$0.97
Input
The Actor accepts the following input parameters (see the Input tab in the Apify Console for the full, interactive schema):
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
mode | string | no | ideas | Research mode: suggestions, ideas, related, overview, or competitor. |
seedKeywords | string | for non-competitor modes | - | One seed keyword per line (up to 1,000). Required for Suggestions / Ideas / Related / Overview. |
seedDomain | string | for competitor | - | Bare hostname of the competitor (no https:// or www). Required for Competitor; ignored otherwise (warning only). |
location | string | no | Germany | Country or region for volume and competition data (English country name preferred). |
language | string | no | de | Two-letter ISO language code. |
limit | integer | no | 100 | Maximum keywords returned for the whole run (1-10,000). |
maxTotalChargeUsd | number | no | 25 | Stop the run once this USD amount has been charged. |
limitPerSeed | integer | no | - | Optional cap per seed for Suggestions / Ideas / Related. Ignored in Overview and Competitor. |
minVolume | integer | no | - | Drop keywords below this monthly search volume. |
maxVolume | integer | no | - | Drop keywords above this monthly search volume. |
maxDifficulty | integer | no | - | Drop keywords harder than this score (0-100). |
intentFilter | string | no | - | Keep only informational, commercial, transactional, or navigational. |
includeWords | array | no | - | Keep only keywords that contain every listed word (case-insensitive). |
excludeWords | array | no | - | Drop keywords that contain any listed word (case-insensitive). |
questionsOnly | boolean | no | false | Keep only question-style keywords (who / what / how / why / when / where). |
exactMatch | boolean | no | false | Suggestions / Related only: keyword must contain the exact seed phrase. |
ignoreSynonyms | boolean | no | false | Prefer core keywords; skip near-duplicate synonym variants. |
includeSeedKeyword | boolean | no | false | Also return metrics for the seed itself (Suggestions / Ideas / Related). |
includeSerpInfo | boolean | no | false | Add SERP feature types and result counts (no separate enrichment charge). |
includeClickstreamData | boolean | no | false | Add demographics and clickstream / Bing-normalized volumes (extra charge per keyword with data). |
includeSerpOverview | boolean | no | false | Enrich with top organic SERP competitors ($0.0032 / keyword at launch when data returned). |
includeAiSearchVolume | boolean | no | false | Enrich with AI / LLM search volume ($0.0004 / keyword at launch when data returned). |
includeTrends | boolean | no | false | Add extended monthly search-volume history ($0.0023 / keyword at launch when data returned). |
htmlReport | boolean | no | false | Write white-label HTML (+ CSV) to the key-value store ($0.05 once at launch). Auto-enabled by custom title/logo. |
pdfReport | boolean | no | false | Write white-label PDF to the key-value store ($0.05 once at launch; independent of HTML). |
reportTitle | string | no | Keyword Research Report | Report headline. Non-default title auto-enables HTML report. |
reportLogoUrl | string | no | - | Public logo URL. Setting a logo auto-enables HTML report. |
reportShowSubline | boolean | no | true | Show meta line (keyword count, location, language, mode). |
reportShowDomain | boolean | no | true | Show "for domain: ..." line on reports. |
reportDomain | string | no | - | Domain label for reports; falls back to competitor seed when empty. |
minWords | integer | no | - | Keep keywords with at least this many words (1-32). |
maxWords | integer | no | - | Keep keywords with at most this many words (1-32). |
disableMetrics | boolean | no | false | Omit volume, CPC, competition, difficulty, and related columns. |
disableIntent | boolean | no | false | Omit intent columns. |
disableBacklinkGap | boolean | no | false | Omit backlink-gap columns. |
disableAiVolume | boolean | no | false | Omit AI volume columns (even if enrichment ran). |
disableSerpOverview | boolean | no | false | Omit SERP competitor columns (even if enrichment ran). |
disableSerpInfo | boolean | no | false | Omit SERP-feature columns. |
disableClickstream | boolean | no | false | Omit demographics / clickstream columns. |
Input Example
Overview: bulk Volume / CPC for your list
{"mode": "overview","seedKeywords": "seo tools\nkeyword research\nbest crm for startups","location": "United States","language": "en","limit": 1000}
Competitor domain
{"mode": "competitor","seedDomain": "ahrefs.com","location": "United States","language": "en","limit": 500,"minVolume": 100,"includeSerpOverview": true,"pdfReport": true,"reportTitle": "Competitor Keyword Map: Ahrefs","reportLogoUrl": "https://cdn.example.com/brand/logo.png","reportDomain": "your-agency.com"}
Ideas from seed keywords
{"mode": "ideas","seedKeywords": "seo tools\nkeyword research","location": "Germany","language": "de","limit": 100,"minVolume": 50,"maxDifficulty": 40,"intentFilter": "commercial","includeAiSearchVolume": false,"htmlReport": false}
API and MCP usage
Runs write one dataset row per keyword. Optional reports are stored in the run key-value store as HTML_REPORT / CSV_REPORT and/or PDF_REPORT. Fetch rows from the default dataset after the run succeeds (or use the synchronous endpoint below).
REST (sync, returns dataset items): replace YOUR_USERNAME, YOUR_API_TOKEN, and use the same JSON body as in Input Example.
curl "https://api.apify.com/v2/acts/YOUR_USERNAME~keyword-research-pro/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-X POST \-H "Content-Type: application/json" \-d '{"mode":"overview","seedKeywords":"seo tools\nkeyword research","location":"United States","language":"en","limit":50}'
JavaScript (apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const input = {mode: 'overview',seedKeywords: 'seo tools\nkeyword research',location: 'United States',language: 'en',limit: 50,};const run = await client.actor('YOUR_USERNAME~keyword-research-pro').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);// Optional reports (when enabled in input):// await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('HTML_REPORT');// await client.keyValueStore(run.defaultKeyValueStoreId).getRecord('PDF_REPORT');
Apify MCP server (AI agents): configure your MCP client with URL https://mcp.apify.com?tools=YOUR_USERNAME~keyword-research-pro (you can combine multiple tools per Apify MCP docs). Pass the API token via your client (for example an Authorization: Bearer ... header), not inside the Actor input JSON.
Output Structure
The Actor returns structured data for each keyword. The table below lists the main fields. Optional dataset views in the Apify Console (Overview, Metrics, Enrichments, Diagnostics) may show a subset. When disable options are enabled, the corresponding keys are omitted from each row.
| Field | Type | Description | Example Value |
|---|---|---|---|
keyword | string | Keyword phrase | "seo tools" |
seed_keyword | string | null | Seed keyword or competitor domain that produced this row |
search_volume | integer | null | Average monthly search volume |
cpc | number | null | Cost per click (USD) |
competition | number | null | Competition index (0-1) |
competition_level | string | null | LOW / MEDIUM / HIGH |
low_top_of_page_bid | number | null | Lower Ads top-of-page bid |
high_top_of_page_bid | number | null | Upper Ads top-of-page bid |
keyword_difficulty | integer | null | Difficulty score 0-100 |
words_count | integer | null | Number of words in the keyword |
search_intent | string | null | Primary intent |
search_intent_probabilities | object | number | null |
foreign_intent | array | null | Secondary intents |
monthly_searches | array | Monthly volume history | see below |
search_volume_trend | object | null | MoM / QoQ / YoY trend percentages |
opportunity_score | number | null | Volume / max(difficulty, 1) |
categories | array | Category IDs / labels from the API | [10004] |
core_keyword | string | null | Core form of the keyword when provided by the API |
avg_backlinks | number | null | Avg backlinks of top-ranking pages |
avg_dofollow | number | null | Avg dofollow links |
avg_referring_pages | number | null | Avg referring pages |
avg_referring_domains | number | null | Avg referring domains |
avg_domain_rank | number | null | Avg domain rank of ranking pages |
avg_main_domain_rank | number | null | Avg main-domain rank |
backlink_gap | number | null | Estimated backlinks needed to compete (same basis as avg backlinks) |
serp_item_types | array | SERP feature types when includeSerpInfo is on | ["organic","people_also_ask"] |
se_results_count | integer | null | Indexed result count for the query |
has_ai_overview | boolean | null | Whether an AI Overview appears in the SERP |
gender_distribution | object | null | Clickstream gender mix when enabled |
age_distribution | object | null | Clickstream age mix when enabled |
clickstream_search_volume | integer | null | Clickstream volume |
clickstream_normalized_volume | integer | null | Clickstream-normalized volume |
bing_normalized_volume | integer | null | Bing-normalized volume |
ai_search_volume | integer | null | AI / LLM search volume when enrichment is on |
ai_share | number | null | ai_search_volume / search_volume |
ai_monthly_searches | array | Monthly AI volume history when AI enrichment is on | see API |
ai_search_volume_trend | object | null | AI volume trend percentages when AI enrichment is on |
serp_competitors | array | Top organic competitors when SERP overview is on | see below |
detected_language | string | null | Detected keyword language |
is_another_language | boolean | null | Language mismatch flag |
_metadata.resultCharged | boolean | Whether this row was charged as a keyword result | true |
_metadata.error | string | null | Present on failure / empty diagnostic rows |
_metadata.errorContext | string | null | Extra error context when error is set |
Key-value store reports
When enabled, download from the run's key-value store:
| Record | Content |
|---|---|
HTML_REPORT | White-label HTML report (text/html) |
CSV_REPORT | CSV companion written with the HTML report |
PDF_REPORT | White-label PDF report (application/pdf) |
Output Example
{"keyword": "seo tools","seed_keyword": "seo tools","search_volume": 12100,"cpc": 2.45,"competition": 0.67,"competition_level": "MEDIUM","low_top_of_page_bid": 0.85,"high_top_of_page_bid": 3.2,"keyword_difficulty": 42,"words_count": 2,"search_intent": "commercial","search_intent_probabilities": 0.82,"foreign_intent": ["informational"],"monthly_searches": [{ "year": 2026, "month": 6, "search_volume": 11800 },{ "year": 2026, "month": 5, "search_volume": 12100 }],"search_volume_trend": {"monthly": 5.2,"quarterly": 8.1,"yearly": 12.4},"opportunity_score": 288.1,"categories": [10004],"core_keyword": "seo tool","avg_backlinks": 120.5,"avg_dofollow": 95.2,"avg_referring_pages": 340,"avg_referring_domains": 48.3,"avg_domain_rank": 512,"avg_main_domain_rank": 480,"backlink_gap": 120.5,"serp_item_types": ["organic", "people_also_ask", "ai_overview"],"se_results_count": 125000000,"has_ai_overview": true,"ai_search_volume": 420,"ai_share": 0.03,"serp_competitors": [{"domain": "ahrefs.com","avg_position": 2.1,"etv": 15400.5,"visibility": 0.42}],"detected_language": "en","is_another_language": false,"_metadata": {"resultCharged": true,"error": null,"errorContext": null}}