Google Ads Keyword Search Volume API - Keyword Planner, CPC
Pricing
from $3.50 / 1,000 keyword with data
Google Ads Keyword Search Volume API - Keyword Planner, CPC
Google Keyword Planner search volume, CPC, competition and 12-month trend for up to 1,000 keywords, any country, state or city. No Google Ads account. Close variants Google counts together are grouped, so totals are not double-counted. $0.25 per request + $3.50 per 1,000 keywords.
Pricing
from $3.50 / 1,000 keyword with data
Rating
0.0
(0)
Developer
CountOnce Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Features
Share
Search volume, CPC, competition and a 12-month trend from Google Ads Keyword Planner for up to 1,000 keywords at once, for any country, state or city. No Google Ads account, no API key. One input field: paste your keywords and press Start.
Why this one
- Totals you can trust. Google gives close variants one shared figure. Other tools either repeat it on every variant or drop your keywords. Here every keyword you sent gets its own row, variants are marked as one group, and you get a deduplicated total.
- Pay only for real data. Keywords with no data, invalid keywords, merged variants and anything you already fetched in the last 30 days are free.
- Instant API. Call one URL, get JSON back in the same request. Works with n8n, Make, Zapier, your own code and AI agents (MCP).
- Planning fields included. Peak month, seasonality index, monthly and quarterly trend, top-of-page bid range.
- Bill cap. Set a maximum cost per run and the Actor will never go over it.
The one thing other keyword tools leave to you: Google reports one combined figure for close variants ("running shoes", "running shoe", "shoes running", "runing shoes"). Paste all four into a typical tool and you either get four rows of 246,000 that add up to 984,000 searches that do not exist, or three of your keywords silently vanish. This Actor returns one row for every keyword you sent, marks the variants as one group, and gives you a deduplicated total you can put in a report.
What deduplication looks like (real run, United States)
| Keyword | Searches / month | Variant group | Counts toward total |
|---|---|---|---|
| standing desk | 135,000 | g1 | yes |
| standing desks | 135,000 | g1 | no (same searches as above) |
| standing desk converter | 18,100 | - | yes |
| Total | 153,100 (a naive sum says 288,100) |
Price: $0.25 per live request (up to 1,000 keywords) + $0.0035 per keyword with data. 200 keywords cost $0.95.
Instant API (Standby)
Send keywords to one URL and get the rows back in the same response, with no run to start and nothing to poll. Use your Apify API token.
curl "https://countonce--keyword-search-volume-api.apify.actor/?keywords=standing%20desk,standing%20desks&location=United%20States" \-H "Authorization: Bearer <APIFY_TOKEN>"
For longer lists, POST the same JSON you would use as the Actor input:
curl -X POST "https://countonce--keyword-search-volume-api.apify.actor/" \-H "Authorization: Bearer <APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"keywords": ["running shoes", "trail running shoes"], "location": "Germany", "language": "de"}'
The response is { "summary": {...}, "rows": [...] }. The first call after a quiet period takes a few extra seconds to start; calls that follow are answered straight away. Pricing is the same as for normal runs.
What you get per keyword
| Field | Meaning |
|---|---|
keyword | Your keyword, normalized (lower case, extra symbols removed) |
searchVolume | Average monthly searches on Google, last 12 months |
cpc, lowTopOfPageBid, highTopOfPageBid | Advertiser cost per click and bid range, USD |
competition, competitionIndex | LOW / MEDIUM / HIGH and 0-100 (advertiser competition, not SEO difficulty) |
monthlySearches | Month-by-month searches, last 12 months |
trendMonthlyPct, trendQuarterlyPct | Change of the latest month against the month before and against three months before, in percent |
peakMonth, seasonalityIndex, seasonal | The strongest month, how far it stands above the 12-month average (2.0 = double), and a true/false flag |
variantGroup, variantGroupSize | Keywords Google counts together share a group id |
countsTowardTotal | true for one keyword per group. Sum searchVolume over these rows only |
mergedInto | Set when Google returned no separate row for your keyword because it was merged into another one you sent |
status | OK, MERGED_BY_GOOGLE, NO_DATA or INVALID_KEYWORD |
source | live, cache (your own 30-day cache, free) or demo |
Every run also stores a SUMMARY record: rows delivered, rows from cache, totalVolumeNaive, totalVolumeDeduplicated, and the amount charged.
Input
{"keywords": ["running shoes", "running shoe", "trail running shoes"],"location": "United States","language": "en"}
Only keywords is required. keywords also accepts one comma- or line-separated string.
- Country, state or city:
"Germany","Texas,United States","London,England,United Kingdom", or a numeric Google Ads location code. - Limits Google sets: 80 characters and 10 words per keyword. Anything longer comes back as
INVALID_KEYWORDwith the reason, at no charge, and the rest of the batch still runs.
Sample output
{"keyword": "running shoe","searchVolume": 246000,"cpc": 1.17,"competition": "HIGH","competitionIndex": 99,"trendMonthlyPct": 22,"trendQuarterlyPct": 22,"peakMonth": "November","seasonalityIndex": 1.16,"seasonal": false,"variantGroup": "g1","variantGroupSize": 2,"countsTowardTotal": false,"status": "OK","source": "live"}
Pricing
| Event | Price | When |
|---|---|---|
| Live request | $0.25 | Once per run that fetches new data, for up to 1,000 keywords |
| Keyword with data | $0.0035 | Per keyword returned with search volume |
| Keywords in one run | You pay |
|---|---|
| 20 | $0.32 |
| 200 | $0.95 |
| 1,000 | $3.75 |
Never charged: keywords with no data, invalid keywords, keywords merged into another keyword of the same run, and any keyword your account already fetched for the same market in the last 30 days. A run answered fully from your cache costs nothing.
Cap the bill: set Maximum cost per run in the run options. The Actor checks the limit before it fetches anything. If the limit is reached mid-run, the remaining rows wait in your cache and the next run delivers them for the row fee only.
If the data source fails, nothing is charged. You are charged only after the rows are saved in your dataset.
Free Apify plan: sample rows only (marked source: "demo"), nothing charged. Any paid Apify plan unlocks live data.
Run-based API (n8n, Make, your own code)
If you prefer classic runs: one HTTP call starts a run and returns the rows when it finishes: about 10 seconds for new data, 1-2 seconds when everything comes from your cache.
curl -X POST "https://api.apify.com/v2/acts/countonce~keyword-search-volume-api/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"keywords": ["running shoes", "trail running shoes"], "location": "United States"}'
The response is the JSON array of rows. In n8n or Make, use the Apify node, or an HTTP Request node with the same URL.
Use it from an AI agent (MCP)
Add this Actor to the Apify MCP server (https://mcp.apify.com/?tools=countonce/keyword-search-volume-api). The agent needs one argument, keywords. Tell it to sum searchVolume only over rows where countsTowardTotal is true.
Track demand every month
Google refreshes these figures once a month. Put the same input on an Apify Schedule monthly; the cache expires after 30 days, so each scheduled run fetches the new month.
FAQ
Why do several of my keywords have the same number? Google Ads groups close variants (plurals, word order, misspellings) and publishes one figure for the group. They share a variantGroup here; count the group once.
Is the group detection exact? Google does not publish its grouping. Two keywords are put in one group only when their volume and all twelve monthly values are identical and the wording is close (same words in another order, plural, or a one- or two-letter difference). Unrelated keywords that happen to share numbers are left apart.
How precise are the volumes? They are Google's own rounded figures (for example 246,000 or 301,000), not exact counts.
Why does a keyword have no data? Google publishes nothing for very rare or new phrases, and for some sensitive topics. Those rows are free.
Is competition the same as SEO difficulty? No. It describes how many advertisers bid on the keyword.
Where does the data come from? Google Ads Keyword Planner data, supplied by DataForSEO.
Support
Open an issue on the Issues tab with your run ID. Answered within two working days.