Keyword Volume & CPC · No Minimum
Pricing
from $2.00 / 1,000 keyword results
Keyword Volume & CPC · No Minimum
Never charged for a keyword with no data, and no minimum spend. Google Ads monthly search volume, CPC and competition for your keyword list. Real Keyword Planner figures — nothing modelled, nothing estimated, and every row says whether it was charged.
Pricing
from $2.00 / 1,000 keyword results
Rating
0.0
(0)
Developer
Steadyfetch Team
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
9 hours ago
Last modified
Share
Never pay for a keyword with no data, and no minimum spend per run. Paste a keyword list and get Google Ads average monthly searches, CPC, competition and 12-month trend direction — or expand a keyword into new keyword ideas with the same metrics.
Real Google Ads Keyword Planner data through a licensed data provider. No "AI search
volume", no modelled numbers, no keyword-difficulty score we invented: every field is
Google's own figure, and isEstimated is false on every row for that reason.
Unofficial. This actor is not affiliated with, endorsed by, or sponsored by Google. "Google", "Google Ads" and "Keyword Planner" are trademarks of Google LLC, used here only to describe where the figures come from.
Issues answered in about 3 hours.
Every row carries charged and missReason, so you can reconcile the invoice from the
dataset itself without opening the console. Only rows with charged: true were billed.
Output
| field | notes |
|---|---|
keyword | your own spelling, echoed back; providerKeyword is the lowercased form Google matched |
seed | the keyword an idea came from — null for your own keywords |
avgMonthlySearches | Google's average monthly searches. 0 means "fewer than Google reports", null means no data (and no charge) |
cpcUsd | average cost per click |
competition · competitionIndex | LOW / MEDIUM / HIGH, and the 0–100 index behind it |
lowTopOfPageBidUsd · highTopOfPageBidUsd | the top-of-page bid range |
monthlySearchVolumes[] | 12 months of {year, month, searches}, oldest month first |
trendDirection | rising / flat / falling, derived from that series |
dataAsOf | the last month Google itself reported, e.g. 2026-07 |
country · language · network | the market this number is for |
source · isEstimated | always google_ads and false |
servedFromCache | whether this row came from our 30-day cache (see below) |
charged · missReason · statusReason | the reconciliation trio |
Plus one summary row with delivered, stoppedBy, resumeCursor and chargedEvents.
Agent / API paste-block
Actor: steadyfetch/keyword-search-volume-scraperRequired: keywords (array of keywords; leave the default for uncharged samples)Optional: keywordsText (string — paste a list, newline or comma separated)mode (metrics-only | ideas | both, default metrics-only)country (ISO code or English name, default US)language (code or English name, default en)network (google | google-and-partners, default google)maxIdeasPerSeed (integer, default 200 — ideas modes only)maxIdeaSeeds (integer, default 5, max 20 — ideas modes only)maxItems (integer, default 1000 — hard cap for the whole run)maxRunSeconds (integer, default 900 — clean stop, never a timeout kill)Charges: keyword-result once per keyword row delivered with dataBuild spec: https://apify.com/steadyfetch/keyword-search-volume-scraper/apiToken: https://console.apify.com/settings/integrations
curl -X POST "https://api.apify.com/v2/acts/steadyfetch~keyword-search-volume-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"keywords":["project management software","keyword research tool"],"country":"US"}'
Agents and MCP callers: omit a field you do not want — do not send null. An explicit
null is a type violation the platform rejects before the run is created.
How the trend direction is worked out
The last three months of the 12-month series against the first three of the same series.
20% or more above → rising. 20% or more below → falling. Anything between → flat.
Fewer than six months of data → null, never a guess. The raw series ships with every
row, so you can apply your own rule instead.
Two things about Google's numbers that most listings do not tell you
- Google quantises search volume. Volumes come back on a coarse ladder — 5,400 / 40,500 / 165,000 — not as exact integers. They are Google's own published figures, not ours, and they are not precise to the search.
- Google groups similar keywords. Close variants can share one combined figure. If two of your keywords come back identical, that is usually why. Splitting them across separate runs sometimes separates them.
Neither is a defect in this actor. Both are how Keyword Planner works, and you are getting exactly what an advertiser sees in the Google Ads UI.
The 30-day cache
Google refreshes these volumes monthly, so a keyword looked up twice in the same month
returns the same numbers. We cache every lookup for 30 days and serve repeats instantly —
same data, no waiting. Rows served that way are marked servedFromCache: true and are
priced exactly like a fresh lookup, because they are exactly the same figures. There is no
start fee to charge you on top of them either.
What you are never charged for
| situation | missReason | run status |
|---|---|---|
| Google has no volume for that keyword | NO_DATA | SUCCEEDED — the row shows avgMonthlySearches: null |
| A keyword Google Ads will not accept (over 80 characters, over 10 words, emoji) | INVALID_KEYWORD | SUCCEEDED — the row names the rule |
| The source rate-limited us | THROTTLED | SUCCEEDED — re-runnable, and the row says so |
| The source was unavailable this run | PROVIDER_UNAVAILABLE | SUCCEEDED — re-runnable |
| We could not reach the source at all | PROVIDER_ACCOUNT | SUCCEEDED — this one is on us, never on you |
| Input we could not read (unknown country, wrong type) | USER_INPUT | SUCCEEDED — the row names the fix |
Your own maxItems / maxRunSeconds / cost cap | STOPPED_AT_LIMIT | SUCCEEDED — summary row + resumeCursor |
We never guess. A rate limit is reported as a rate limit, not as "this keyword has no volume" — a temporary problem is never dressed up as a permanent verdict.
This actor may fail when the platform changes things — failed items are never charged.
Limits are hard limits
maxItems, maxIdeasPerSeed, maxIdeaSeeds and maxRunSeconds stop the run exactly
where you set them. The run still finishes successfully, the summary row names which
limit bound, and resumeCursor lists the keywords that were not reached — so you continue
from there instead of paying to re-look-up what you already have.
There is no minimum charge per run and no start fee. A five-keyword run costs five keyword rows, and a run where nothing has data costs nothing.
And the cap belongs to the run, not to the attempt. If a run is moved to another
server mid-way — or you resurrect it from the console — it continues from where it
stopped: no row you already have is delivered again, no keyword is looked up twice, and
no keyword is charged twice. maxItems still means what it said.
FAQ
How much does 1,000 keywords cost?
1,000 rows of the keyword-result event, and nothing else — no start fee, no per-run
minimum, no metrics add-on. Keywords with no data are not rows you pay for.
Is this real Google data or an estimate?
Real. It is the Keyword Planner figure an advertiser sees in Google Ads, delivered through
a licensed data provider on our own credentials — you never supply a Google Ads login.
isEstimated is false on every row and there is no "AI search volume" field here.
Why do two of my keywords have identical numbers? Google groups similar keywords under one combined figure. See the section above.
Do duplicates cost twice?
No. SEO Tools, seo tools and seo tools are one keyword, charged once, echoed
back with the first spelling you used. The same rule holds across the whole run: in
ideas or both mode, a suggestion that repeats a keyword already delivered — including
your own seed echoed back as one of its ideas — is skipped and never charged a second time.
Can I get keyword ideas instead of metrics?
Set mode to ideas (suggestions only) or both. Each of your keywords is expanded
separately so every idea row names the seed it came from.
Which countries and languages work? Every country and language Google Ads reports on — pass a two-letter code or the English name. An unrecognised value stops the run with a guidance row rather than quietly using a different market.
Does {} cost anything?
No. With no keywords it returns uncharged sample rows so you can see the exact output shape
before spending anything.
Steadyfetch trends & keyword suite
One actor per surface, one job each, the same contract everywhere: all-inclusive pay per event, no start fee, charged only on delivery — so a workflow built for one of them ports to the next.
| What you want | Actor |
|---|---|
| Interest over time, related queries, regions, compare | Google Trends · No Charge on Miss |
| What is trending right now, by country | Google Trends Now · No Start Fee |
| Rising and Breakout queries, with the real growth number | Breakout Keywords from Trends (publishing soon — steadyfetch/breakout-keywords-scraper) |
| Autocomplete suggestions across 5 engines | Autocomplete Keywords · 5 Engines (publishing soon — steadyfetch/google-keyword-suggest-scraper) |
| Monthly search volume and CPC for a keyword list | this actor |
| What is trending on social platforms | Social Trends · 4 Platforms |
The rest of the steadyfetch shelf — same contract everywhere: all-inclusive pay per event, no start fee, charged only on delivery.
| Family | Actors |
|---|---|
| Ad creative intelligence | Facebook · Google Ads video · TikTok · LinkedIn · Google Ads text & OCR |
| Trends & keywords | Google Trends · Trends Now · Breakout keywords · Autocomplete keywords · Keyword volume & CPC · Social trends |
| YouTube transcripts | YouTube videos · YouTube channels |
| Reel transcripts · Profile posts | |
| Jobs | Indeed · Career sites by domain · Glassdoor · Multi-board |
| Amazon | Products · Search · Bestsellers · Sellers |
| Any media file | Speech to Text · any link or file |
Unlinked names are publishing shortly on the same account — search steadyfetch on Apify Store.
Free templates
github.com/steadyfetch/n8n-templates — import-validated n8n workflows.