Keyword Search Volume & Ideas — Google Ads Data API
Pricing
from $0.40 / 1,000 keyword processed (own dataforseo account)s
Keyword Search Volume & Ideas — Google Ads Data API
Keyword research API: bulk Google search volume, CPC, competition and 24-month trends for up to 10,000 keywords, plus keyword ideas and seasonality. Bring your own DataForSEO account (BYOK): $0.50 per 1,000 keywords on top of your own DataForSEO usage.
Pricing
from $0.40 / 1,000 keyword processed (own dataforseo account)s
Rating
0.0
(0)
Developer
Andrew Boiko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
Keyword Search Volume & Ideas - Google Ads Data API
Get Google search volume, CPC, competition and 24 months of history for up to 10,000 keywords in one run - without a Google Ads account. Every keyword comes back with computed trend metrics (12-month average, 3-month momentum, year-over-year change, seasonality, peak month, rising / flat / falling) so you can sort, filter and decide straight away. Switch to Ideas mode to expand a few seed keywords into thousands of related keywords with the same data.
Data: Google Ads keyword data (the numbers behind Keyword Planner), delivered through your own DataForSEO account (you pay DataForSEO directly, about $0.09 per 1,000 keywords). You pay this Actor only $0.50 per 1,000 keywords with data. No subscription.
Who is it for?
- SEO and content teams - size a topic, prioritise articles by volume and trend, find seasonal windows to publish in.
- PPC and e-commerce managers - compare CPC, top-of-page bids and competition before you bid; plan campaigns around the peak month.
- Agencies and freelancers - build keyword reports for many clients in different countries and languages without Keyword Planner limits.
- AI agents and automations - ask "which of these keywords is rising?" and get typed JSON back (works through the Apify MCP server, API, Make, Zapier or n8n).
What data do you get?
| Field | Example | Meaning |
|---|---|---|
keyword, inputKeyword | crm software / CRM Software | normalized keyword and the spelling you typed first |
seed | ["crm software"] | Ideas mode: the seed keyword(s) that produced the idea |
mode, location, locationCode, language | volume, United States, 2840, en | what was asked |
hasData | true | false when Google has no data for the keyword (these rows are free) |
searchVolume | 135000 | Google's average monthly searches (latest 12 months) |
cpc, lowBid, highBid | 14.21, 5.8, 22.9 | average CPC and low/high top-of-page bid, USD |
competition, competitionIndex | HIGH, 87 | Google Ads advertiser competition: LOW / MEDIUM / HIGH and 0-100 |
monthly[] | [{"month":"2024-11","volume":110000}, ...] | up to 24 months, oldest first |
avg12 | 128750 | average of the last 12 months |
trend3m | 0.0842 | last 3 months vs. the 3 months before (0.0842 = +8.4%) |
yoy | 0.1176 | latest month vs. the same month a year earlier |
seasonalityIndex | 0.4218 | (highest - lowest month) / average over the last 12 months; 0 = flat all year |
peakMonth | November | calendar month with the most searches in the last 12 months |
direction | rising | rising if year-over-year (or, if missing, 3-month) change is at least +15%, falling at -15% or lower, otherwise flat |
fromCache, fetchedAt, source | false, ISO time, dataforseo:google_ads | freshness and origin |
Ratios are rounded to 4 decimals. A metric is null when it cannot be computed (not enough months, zero baseline) - never NaN, never a guess.
How to use it
- Enter your DataForSEO login and API password (see What you need below).
- Choose Mode: Volume (metrics for your keywords) or Ideas (expand seeds into related keywords).
- Paste keywords - up to 10,000 in Volume mode, up to 200 seeds in Ideas mode.
- Pick the country (48 Google geo targets, from the United States to Ukraine and Japan) and the language.
- Optional: minimum monthly search volume, max ideas (Ideas mode), whether to keep keywords without data, and for how many days data may be reused from your cache.
- Click Start, then download JSON, CSV or Excel - or call it from code.
Keywords are normalized (trimmed, lower-cased, wrapping quotes and duplicate spaces removed) and de-duplicated. Keywords Google does not accept (empty, longer than 80 characters, more than 10 words, emoji or symbols) are not sent anywhere and are listed with the reason in the run summary - you are never charged for them.
Example input - volume and trends for three keywords in the UK
{"mode": "volume","keywords": ["crm software", "email marketing", "project management tool"],"location": "2826","language": "en","cacheDays": 30,"dfsLogin": "you@example.com","dfsPassword": "<your DataForSEO API password>"}
Example input - 500 keyword ideas around two seeds in Germany
{"mode": "ideas","keywords": ["projektmanagement software", "crm system"],"location": "2276","language": "de","maxIdeas": 500,"minSearchVolume": 100,"dfsLogin": "you@example.com","dfsPassword": "<your DataForSEO API password>"}
Example output (one keyword, shortened history)
{"keyword": "christmas lights","inputKeyword": "Christmas Lights","seed": null,"mode": "volume","location": "United States","locationCode": 2840,"language": "en","hasData": true,"searchVolume": 450000,"cpc": 0.92,"lowBid": 0.35,"highBid": 1.74,"competition": "HIGH","competitionIndex": 91,"monthly": [{ "month": "2024-11", "volume": 1500000 },{ "month": "2024-12", "volume": 1900000 },{ "month": "2025-11", "volume": 1650000 },{ "month": "2025-12", "volume": 2000000 }],"avg12": 450000,"trend3m": 0.0812,"yoy": 0.0526,"seasonalityIndex": 4.2105,"peakMonth": "December","direction": "flat","fromCache": false,"fetchedAt": "2026-10-05T12:00:00.000Z","source": "dataforseo:google_ads"}
The run summary (OUTPUT) lists input and valid keyword counts, invalid keywords with reasons, duplicates, how many rows came from your cache, provider batches bought, failed batches, rows delivered, rows without data, charged events, why the run stopped early (if it did) and warnings. A short RESULTS_MD is saved next to it.
Volume mode and Ideas mode
- Volume - one row per valid keyword you submit. Keywords are sent to Google Ads in batches of up to 1,000.
- Ideas - seeds are sent in groups of up to 20; each group can return up to 20,000 suggestions. The Actor merges and de-duplicates them across groups, drops anything under Minimum monthly search volume, sorts by volume and keeps the top Max ideas (up to 5,000). Each idea carries the
seedthat produced it. Ideas are stored in your cache too, so a follow-up Volume run on the same keywords costs no new batch.
Your personal cache
Results are kept in a named key-value store called kw-cache in your own Apify account - nobody else can see it. Within Reuse cached data for (days) (default 30, 0 = always fresh) a repeated keyword for the same location and language is served from the cache: no new batch is bought, no batch fee is charged, and the row is marked fromCache: true. You still pay the per-keyword price because you receive the data. Delete the store any time to start fresh.
Pricing
Pay per event - you pay only for results:
| Event | Price | When |
|---|---|---|
keyword-byok | $0.0005 ($0.50 per 1,000) | one row with data delivered (cache hits included) |
Keywords without data, invalid, duplicate, failed or filtered keywords are free. Maximum cost per run is always respected: the Actor stops with a clear note (stoppedReason: "budget") instead of failing. Platform usage is included. DataForSEO charges you separately (about $0.09 per batch of up to 1,000 keywords); repeats within your cache window are not bought again.
Examples: 1,000 keywords with data = $0.50 here + about $0.09 at DataForSEO. 10,000 keywords = $5 + about $0.90.
Demo mode
Run it without entering a DataForSEO login/password and you get up to 3 illustrative sample rows (source: "demo-sample", warning "DEMO MODE") so you can see the output format. Nothing is billed. Enter your own DataForSEO account to get real Google Ads data.
What you need: a DataForSEO account
This Actor works with your own DataForSEO account. Sign up at dataforseo.com, then enter your login and API password (from the DataForSEO dashboard; both stored as secrets and never logged or saved) in the input.
- you pay DataForSEO directly for the data (about $0.09 per batch of up to 1,000 keywords),
- this Actor charges only $0.50 per 1,000 rows with data (
keyword-byok), with no batch fee, - your keywords are cached, normalized and enriched with all computed trend metrics.
Integrations and API
Send results to Google Sheets, Airtable, BigQuery, Looker Studio, Slack or your SEO tool via Make, Zapier or n8n, or call the Actor from code and AI agents (Apify API, Apify MCP server).
curl -X POST "https://api.apify.com/v2/acts/<USERNAME>~keyword-search-volume-api/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"keywords":["crm software","email marketing"],"location":"2840","language":"en"}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_TOKEN>' });const run = await client.actor('<USERNAME>/keyword-search-volume-api').call({ "mode": "ideas", "keywords": ["standing desk"], "maxIdeas": 300 });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((k) => k.direction === 'rising').map((k) => `${k.keyword}: ${k.searchVolume}`));
from apify_client import ApifyClientclient = ApifyClient("<YOUR_TOKEN>")run = client.actor("<USERNAME>/keyword-search-volume-api").call(run_input={"keywords": ["crm software"], "location": "2840", "language": "en"})for k in client.dataset(run["defaultDatasetId"]).iterate_items():print(k["keyword"], k["searchVolume"], k["direction"], k["peakMonth"])
Use it from an AI agent (MCP)
Add the Actor to the Apify MCP server and ask in plain language:
Use the Keyword Search Volume Actor to check "crm software", "email marketing" and "project management tool" in the UK. Tell me which one is rising, which is most seasonal, and which has the highest CPC.
The input schema documents every field, so agents can fill it in without examples.
FAQ
Where does the data come from? Google Ads keyword data - the same source as Google Keyword Planner - provided through the DataForSEO API. This Actor is not affiliated with Google, Google Ads or DataForSEO.
Why are volumes round numbers? Google reports rounded average monthly searches, not exact counts. Small keywords show as 10, 20, 30... and very large ones in coarse steps. Use the monthly history and the trend fields to compare keywords, not to count individual searches.
Why does a keyword have no data? Google has no volume for it in that location and language (new, very rare or restricted terms). These rows have hasData: false, all metrics null, and are free. Turn off Keep keywords without data to drop them.
Are the numbers the same as in my Google Ads account? They come from the same source but without your account's ranges: Keyword Planner shows buckets (for example "1K-10K") for accounts with little spend, while this API returns the average value.
How fresh is it? Google updates monthly data in the first weeks of each month. A fresh batch always asks for the last 24 months. Cached rows show their fetchedAt time; set Reuse cached data for (days) to 0 to force fresh data.
What happens when I run out of budget or a batch fails? Delivered rows are kept and charged correctly; the run summary tells you how many keywords were not processed (notProcessed) and why (stoppedReason, and errors with the affected keywords of a failed batch), and you are not charged for them. Re-run later - everything already fetched comes from your cache.
Something is missing? Open an issue in the Issues tab - extra locations, languages and data fields are welcome.
More tools by the same author
- Keyword Autocomplete Explorer: Google, YouTube, Amazon and Bing suggestions
- Google Ads Transparency Monitor: Track which ads advertisers run on Google
- Website Screenshot API: Full-page, mobile and WebP screenshots