Keyword Search Volume: Bulk Google CPC, Difficulty & Trends avatar

Keyword Search Volume: Bulk Google CPC, Difficulty & Trends

Pricing

from $2.70 / 1,000 keyword with search volumes

Go to Apify Store
Keyword Search Volume: Bulk Google CPC, Difficulty & Trends

Keyword Search Volume: Bulk Google CPC, Difficulty & Trends

Google keyword search volume in bulk from real Keyword Planner data, no Google Ads account needed: monthly volume, up to 8 years of monthly history, trend, CPC, competition, keyword difficulty and intent for 36 countries. Plus keyword suggestions and ideas from seeds. $0.004 per keyword.

Pricing

from $2.70 / 1,000 keyword with search volumes

Rating

0.0

(0)

Developer

DTK Foundry

DTK Foundry

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

9 days ago

Last modified

Security

Limited permissions

Share

Google search volume for thousands of keywords at once, from real Google Keyword Planner data, with no Google Ads account needed. For each keyword you get:

  • average monthly searches, with up to about 8 years of month-by-month history
  • the trend over the last month, quarter and year
  • CPC and top-of-page bid range
  • competition
  • keyword difficulty (0-100)
  • search intent

Also turns seed keywords into suggestions (phrases that contain the seed) or ideas (related keywords on the same topic), highest volume first. 36 countries.

  • The same numbers as Keyword Planner. Tested on 7,667 keywords across 15 countries against live Google Ads lookups: 96.8% were exactly equal, and 99% were within 25% (2026-10-27).
  • Reliable and fast. In a 200-lookup test (18,420 keywords), 200 of 200 lookups succeeded. 700 keywords come back in about 6 seconds.
  • Bulk. Up to 10,000 keywords per run, sent 700 at a time.
  • More than volume. Difficulty, intent and trend come in the same row, so there is no second tool to run.
  • Fill the gaps (optional). Long-tail keywords missing from the keyword database can be looked up live in Keyword Planner. In tests this found about half of the missing ones.
  • $0.004 per keyword with data, plus $0.02 per run. Keywords without search volume are free.

Input

FieldTypeDefaultDescription
modestringmetricsmetrics = numbers for your keyword list. suggestions = keywords that contain each seed. ideas = related keywords on the seed's topic.
keywordsarray[]Metrics: up to 10,000 keywords. Suggestions and ideas: up to 20 seeds. Empty = a free format example.
countrystringusus, gb, ca, au, nz, ie, in, sg, za, de, at, ch, fr, be, nl, es, mx, ar, co, cl, it, pt, br, pl, se, dk, no, fi, jp, kr, tr, id, ph, my, ae, sa.
languagestringcountry's mainSecond options: us es, ca fr, in hi, sg zh-CN, ch fr/it, be fr/de, id en, ph tl, my ms, ae ar, sa en.
maxResultsPerSeedinteger100Suggestions and ideas: how many keywords per seed, highest volume first (up to 1,000).
groupVariantsbooleantrueSuggestions and ideas: Google gives reordered phrases the same numbers ("shoes running" = "running shoes"). On, each group is one row and the others are listed in variants. The actor reads 3 times maxResultsPerSeed phrases to fill the rows; for very broad seeds ("running shoes" gave 45 groups from 300 phrases) you get fewer rows, never more.
minVolumeinteger0Leave out keywords with fewer monthly searches. They are not charged.
historyMonthsinteger12Months of history per keyword, newest first (0-120). Metrics mode has up to about 8 years; suggestions and ideas have 12 months.
fillGapsbooleanfalseMetrics mode, paid Apify plans: look up keywords the database lacks live in Keyword Planner.
{
"mode": "metrics",
"keywords": ["standing desk", "running shoes", "crm software"],
"country": "us",
"historyMonths": 12
}
{
"mode": "suggestions",
"keywords": ["standing desk"],
"maxResultsPerSeed": 200,
"minVolume": 100,
"country": "gb"
}

Output (one record per keyword)

{
"status": "ok",
"keyword": "standing desk",
"searchVolume": 135000,
"cpc": 5.16,
"competition": 1,
"competitionLevel": "HIGH",
"lowTopOfPageBid": 0.89,
"highTopOfPageBid": 6.92,
"keywordDifficulty": 38,
"intent": "transactional",
"trendMonthlyPct": -18,
"trendQuarterlyPct": 0,
"trendYearlyPct": 0,
"monthlySearches": [{"month": "2026-09", "searches": 135000}, {"month": "2026-08", "searches": 165000}],
"country": "us",
"language": "en",
"source": "google-ads-database",
"dataUpdatedAt": "2026-10-15 22:33:34 +00:00"
}
  • Volumes: searchVolume is Google's average monthly searches over the last 12 months. monthlySearches lists each month, newest first.
  • Trend: trendMonthlyPct, trendQuarterlyPct and trendYearlyPct compare the latest month with 1, 3 and 12 months earlier.
  • CPC and bids: cpc is Google's average cost per click in USD. lowTopOfPageBid and highTopOfPageBid are the bid range advertisers paid to appear at the top of the page.
  • Competition: competition (0-1) and competitionLevel (LOW / MEDIUM / HIGH) measure how many advertisers bid on the keyword. They are about paid search, not organic.
  • Difficulty and intent: keywordDifficulty (0-100) estimates how hard it is to rank in the top 10 organic results. intent is informational, navigational, commercial or transactional.
  • Seed and variants: in suggestions and ideas mode each record also has seed, and variants: the close variants Google counts as the same search (same volume and history), grouped into this row. One row is one charged keyword.
  • Source:
    • google-ads-database comes from a keyword database built from Google Ads data and refreshed monthly.
    • google-ads-live rows come from a live Keyword Planner lookup (fillGaps). These have the year-on-year trend only, and no difficulty or intent.
  • Free records:
    • status: "no-data": Google has no volume for the keyword in that country.
    • status: "invalid": a keyword Google does not accept (over 80 characters, more than 10 words, emoji or symbols such as ! or ().
    • status: "failed": a lookup that failed after retries.
    • status: "no-results": a seed with no suggestions or ideas.

Pricing

Prices below are for Apify's Free plan. Paid Apify plans pay less per run and per keyword: Bronze 10% off, Silver 20% off, Gold and above about 33% off. The Google Ads lookup costs the same on every plan.

Pay per event, no subscription.

EventPriceWhen it is charged
Run$0.02Once per run, when the first keyword data arrives. Runs that fail before that are free.
Keyword$0.004Per keyword delivered with a search volume ($4 per 1,000). Keywords without data are free, as are invalid ones and those under minVolume.
Google Ads lookup$0.15Only with fillGaps: one live Keyword Planner lookup of up to 1,000 missing keywords.

What a run costs:

RunCost
100 keywordsabout $0.42
1,000 keywordsabout $4.02
10,000 keywordsabout $40
1 seed, 100 suggestions or ideasabout $0.42
1,000 long-tail keywords with fillGaps: 850 in the database, 75 of the other 150 filledabout $3.87

Set a maximum charge in the run options and the actor stops before it would go over: it looks up only as many keywords as fit. Apify's standard run-start event adds $0.00005 per run.

Limits, stated plainly

  • Google's numbers, Google's rounding. Volumes come in Google's buckets (for example 135,000, then 165,000). Close variants share one volume ("running shoe" and "running shoes").
  • Monthly data. The database refreshes once a month, so the newest month is last month.
  • Rare keywords have no volume. In tests, 97.6% of common keywords (head terms, questions, brands, local) had one. For long-tail autocomplete phrases it was 84% in the database and 92% with fillGaps. Google withholds data for some topics entirely (for example "vpn" in the US).
  • CPC is in USD.
  • Difficulty and intent are estimates. They are not numbers from Google.
  • fillGaps needs a paid Apify plan. It is ignored on the Free plan, and the status message says so. Live lookups are spaced a few seconds apart, so a large fill takes longer.
  • Run limits: up to 10,000 keywords per run, or 20 seeds with up to 1,000 results each.

Privacy

Only the keywords you give are sent for lookup. Results are stored only in your run's dataset. The actor runs with limited permissions and reads nothing else in your account.