Keyword Volume & CPC · No Minimum avatar

Keyword Volume & CPC · No Minimum

Pricing

from $2.00 / 1,000 keyword results

Go to Apify Store
Keyword Volume & CPC · No Minimum

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

Steadyfetch Team

Maintained by Community

Actor 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

fieldnotes
keywordyour own spelling, echoed back; providerKeyword is the lowercased form Google matched
seedthe keyword an idea came from — null for your own keywords
avgMonthlySearchesGoogle's average monthly searches. 0 means "fewer than Google reports", null means no data (and no charge)
cpcUsdaverage cost per click
competition · competitionIndexLOW / MEDIUM / HIGH, and the 0–100 index behind it
lowTopOfPageBidUsd · highTopOfPageBidUsdthe top-of-page bid range
monthlySearchVolumes[]12 months of {year, month, searches}, oldest month first
trendDirectionrising / flat / falling, derived from that series
dataAsOfthe last month Google itself reported, e.g. 2026-07
country · language · networkthe market this number is for
source · isEstimatedalways google_ads and false
servedFromCachewhether this row came from our 30-day cache (see below)
charged · missReason · statusReasonthe reconciliation trio

Plus one summary row with delivered, stoppedBy, resumeCursor and chargedEvents.


Agent / API paste-block

Actor: steadyfetch/keyword-search-volume-scraper
Required: 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 data
Build spec: https://apify.com/steadyfetch/keyword-search-volume-scraper/api
Token: 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

  1. 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.
  2. 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

situationmissReasonrun status
Google has no volume for that keywordNO_DATASUCCEEDED — the row shows avgMonthlySearches: null
A keyword Google Ads will not accept (over 80 characters, over 10 words, emoji)INVALID_KEYWORDSUCCEEDED — the row names the rule
The source rate-limited usTHROTTLEDSUCCEEDED — re-runnable, and the row says so
The source was unavailable this runPROVIDER_UNAVAILABLESUCCEEDED — re-runnable
We could not reach the source at allPROVIDER_ACCOUNTSUCCEEDED — this one is on us, never on you
Input we could not read (unknown country, wrong type)USER_INPUTSUCCEEDED — the row names the fix
Your own maxItems / maxRunSeconds / cost capSTOPPED_AT_LIMITSUCCEEDED — 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.


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 wantActor
Interest over time, related queries, regions, compareGoogle Trends · No Charge on Miss
What is trending right now, by countryGoogle Trends Now · No Start Fee
Rising and Breakout queries, with the real growth numberBreakout Keywords from Trends (publishing soon — steadyfetch/breakout-keywords-scraper)
Autocomplete suggestions across 5 enginesAutocomplete Keywords · 5 Engines (publishing soon — steadyfetch/google-keyword-suggest-scraper)
Monthly search volume and CPC for a keyword listthis actor
What is trending on social platformsSocial Trends · 4 Platforms

The rest of the steadyfetch shelf — same contract everywhere: all-inclusive pay per event, no start fee, charged only on delivery.

FamilyActors
Ad creative intelligenceFacebook · Google Ads video · TikTok · LinkedIn · Google Ads text & OCR
Trends & keywordsGoogle Trends · Trends Now · Breakout keywords · Autocomplete keywords · Keyword volume & CPC · Social trends
YouTube transcriptsYouTube videos · YouTube channels
InstagramReel transcripts · Profile posts
JobsIndeed · Career sites by domain · Glassdoor · Multi-board
AmazonProducts · Search · Bestsellers · Sellers
Any media fileSpeech 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.