Keyword Search Volume & CPC API: Difficulty, AI Overview avatar

Keyword Search Volume & CPC API: Difficulty, AI Overview

Pricing

from $10.00 / 1,000 keyword results

Go to Apify Store
Keyword Search Volume & CPC API: Difficulty, AI Overview

Keyword Search Volume & CPC API: Difficulty, AI Overview

Analyze keywords or generate keyword ideas with Google search volume, CPC, competition, 12 month trends, keyword difficulty, intent, SERP features and AI Overview presence. Up to 1,000 keywords per run. Pay per keyword processed, no subscription.

Pricing

from $10.00 / 1,000 keyword results

Rating

0.0

(0)

Developer

Sama Alabed

Sama Alabed

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Share

Find out which keywords are worth targeting. For every keyword you get Google search volume, CPC, ad competition, a 12-month trend, keyword difficulty, search intent, SERP features, whether Google shows an AI Overview, and an opportunity score that sums it up. Analyze 2 to 1,000 keywords per run, or generate new keyword ideas from a few seed words.

$0.01 per keyword processed. No subscription, no per-request fee, no data-provider account or API key.

Who it's for

  • SEO agencies and consultants: size and prioritise keyword lists for many clients.
  • Content teams and bloggers: pick topics with real demand and a realistic chance to rank.
  • PPC marketers: check CPC and advertiser competition before building campaigns.
  • Automation builders: enrich keyword lists inside Make, n8n, Zapier or your own scripts.
  • AI agents: one call answers "how big is this keyword, how hard is it, and is Google answering it with AI?"

Two modes

ModeYou enterYou get
Analyze my keywordsYour own keywords (2 to 1,000 per run)One row of data per keyword
Generate keyword ideas1 to 20 seed keywords, a maximum number of ideas (at least 2), and an optional minimum search volumeRelated keyword ideas, each with the same data

Pick a Country (24 Google markets). Language defaults to Automatic, the country's main language. Change it only for multilingual markets, such as French in Canada.

How to use it (no code)

  1. Choose Analyze my keywords.
  2. Paste your keywords into Keywords to analyze. Bulk edit takes one keyword per line.
  3. Pick the Country and click Start.
  4. Sort the results table by Opportunity or Monthly searches, then export to CSV, Excel or JSON.

To find new topics, choose Generate keyword ideas, add a seed such as podcast equipment, set Maximum ideas, and click Start.

What you get for each keyword

FieldMeaning
keyword, country, languageWhat was looked up, and where
found, data_statustrue / ok when the keyword has data. false / no_data when the provider has no search-volume data for it in this market: every metric is then empty (null), nothing is estimated, and the keyword is still billed as processed
search_volumeAverage monthly Google searches
monthly_searchesThe last 12 months, month by month
trendOur rising, stable or declining label (from the yearly change), plus the monthly, quarterly and yearly % change
cpc_usdAverage cost per click in USD
competition, competition_levelGoogle Ads advertiser competition (0 to 1; LOW / MEDIUM / HIGH)
low_top_of_page_bid_usd, high_top_of_page_bid_usdTop-of-page bid range
keyword_difficultyHow hard it is to rank organically (0 to 100)
search_intentinformational, commercial, transactional or navigational
serp_featuresGoogle result types shown for the keyword: AI Overview, People Also Ask, featured snippet, local pack, video, shopping and more
has_ai_overviewtrue if Google showed an AI Overview for the keyword
serp_checked_atDate of the Google results snapshot behind serp_features and has_ai_overview
data_month, volume_updated_atThe month the volume data describes, and when it was last refreshed
opportunity_score, opportunity_factorsOur 0 to 100 answer to "should I target this?", calculated by this Actor, with every factor that produced it
request_id, generated_at, version, sources, warningsProvenance for automation and AI agents

Each run also writes an OUTPUT record: keywords processed (billed), with data, without data, not processed (not billed), the charges Apify recorded for the run, and why a run stopped early.

About freshness

  • Search volume, CPC and competition follow a monthly update cycle. data_month shows which month the numbers describe.
  • SERP features and the AI Overview flag come from the latest available Google results snapshot for that keyword. That snapshot is often one to two months old, and serp_checked_at shows its date.
  • Use has_ai_overview as a strong signal, not a live check. It is ideal for spotting which topics Google now answers with AI.

Opportunity score (version opp-v1)

Calculated by this Actor with a simple, deterministic formula. It is not a Google or DataForSEO metric, no AI model is involved, and every factor is returned in opportunity_factors.

opportunity_score = round(100 x volume x ease x intent x value x trend x ai_overview), capped at 100.

FactorHow it is calculated
volumemin(1, log10(search_volume + 1) / 5). 1,000 searches = 0.6; 100,000+ = 1.0
ease1 - keyword_difficulty / 100 (unknown = 0.5)
intenttransactional 1.0, commercial 0.9, informational 0.6, navigational 0.3 (unknown 0.6)
value0.9 + 0.2 x min(1, cpc_usd / 5): higher CPC means more commercial value (unknown = 1.0)
trendrising 1.1, stable 1.0, declining 0.85 (unknown 1.0)
ai_overview0.85 when Google shows an AI Overview for an informational query (fewer clicks), 0.95 for other intents, otherwise 1.0

Pricing

$0.01 per keyword processed (shown as "Keyword result" on the Pricing tab), minimum 2 keywords per run. A processed keyword is billed even when the provider returns no search-volume data.

  • Processed means the keyword was sent to the data provider and the request succeeded. You get one row for it, with data or marked no_data.
  • Not billed: duplicates (removed first), keywords too long to send, keywords beyond your run limit or budget, refused runs and failed requests.
  • Minimum 2 keywords per run. Every data request has a fixed cost, so each run needs at least 2 keywords (in ideas mode, a maximum of at least 2 ideas). Batch your keywords into one run rather than sending them one at a time.
  • Ideas mode: each idea returned is one processed keyword. If fewer than 2 ideas come back, the 2-keyword minimum is billed.
  • There is no per-request fee or subscription. Apify's standard Actor start fee, a fraction of a cent, applies to each run.
  • Your maximum cost per run is always respected. It must cover at least 2 keyword results. The Actor only fetches as many keywords as your remaining budget can pay for, then stops cleanly and says so in OUTPUT.
  • Failed runs cost nothing. If a run fails part way, you pay only for keywords already processed and delivered.
  • Users on Apify's free plan can test with up to 10 keywords per run.

Use it from code, automations and AI agents

The input is plain JSON, and every output row has the same flat structure.

If a run is refused (fewer than 2 keywords, or a maximum cost below 2 keyword results), it ends straight away with no rows. The reason is in the run's status message and in OUTPUT.error, and nothing is fetched or charged. Setting maxIdeas below 2 is rejected by Apify before the run starts.

Analyze keywords (API, synchronous: returns the rows directly):

curl -X POST "https://api.apify.com/v2/acts/koalabed~keyword-search-volume/run-sync-get-dataset-items" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"mode": "metrics", "keywords": ["keyword research tool", "best running shoes"], "country": "US"}'

Generate keyword ideas:

{ "mode": "ideas", "seedKeywords": ["podcast equipment"], "maxIdeas": 200, "minSearchVolume": 100, "country": "GB" }

Input reference:

FieldTypeDefaultNotes
mode"metrics" or "ideas""metrics"
keywordsarray of stringsnoneMetrics mode; 2 to 1,000 (duplicates count once); max 80 characters and 10 words each
seedKeywordsarray of stringsnoneIdeas mode; up to 20
maxIdeasinteger 2 to 1,000100Ideas mode
minSearchVolumeinteger0Ideas mode
countrytwo-letter code (US, GB, CA, AU, IN, IE, NZ, SG, ZA, DE, AT, CH, FR, BE, NL, ES, MX, IT, BR, PT, PL, SE, JP, AE)"US"
language"auto" or a code offered for the country (en, es, fr, de, nl, it, pt, pl, sv, ja, hi, ar)"auto"
includeSerpFeaturesbooleantrueSERP features, AI Overview flag and snapshot date

Where it plugs in:

  • The official Apify clients for JavaScript and Python, Make, n8n, Zapier, Google Sheets and webhooks.
  • Apify's MCP server, so assistants such as Claude or Cursor can call it as a tool (koalabed--keyword-search-volume).

A typical agent loop:

  1. Draft candidate topics.
  2. Call this Actor once in metrics mode with all of them (at least 2).
  3. Keep rows with data_status: "ok" and opportunity_score above a threshold.
  4. Deprioritise informational queries with has_ai_overview: true.

Use cases

  • Agency client reporting: refresh volumes and difficulty for every client's target list each month and export to Sheets or Looker Studio.
  • SEO content planning: expand a seed topic into 200 ideas, filter by minSearchVolume, and sort by opportunity.
  • AI Overview risk audit: check which of your traffic keywords now trigger an AI Overview (has_ai_overview, serp_checked_at).
  • PPC research: compare cpc_usd, bid ranges and competition_level across markets before launching campaigns.
  • Automated pipelines: enrich every new keyword from a CRM, spreadsheet or content brief tool through the API.
  • AI writing agents: give an agent a grounded, structured view of demand and difficulty before it writes.

Data source and accuracy

  • Volume data: search volume, CPC, competition and bids are based on Google Ads data, provided through DataForSEO Labs.
  • Everything else: difficulty, intent and SERP features come from the same provider's keyword and SERP database.
  • How to use volumes: they are monthly averages, best for comparing and prioritising keywords rather than exact traffic forecasts.
  • Search intent labels are refreshed less often than volumes.
  • New or very rare keywords may have no data. They are returned with data_status: "no_data" and empty metrics, and billed as processed keywords.
  • What this Actor is: it looks up and scores the keywords you submit, on demand. It is not a bulk keyword database export and not a search engine.

Limits

  • Analyze my keywords: 2 to 1,000 keywords per run (max 80 characters and 10 words each).
  • Generate keyword ideas: up to 20 seeds and 2 to 1,000 ideas.
  • Free Apify plan: up to 10 keywords per run.

FAQ

Is this the same as Google Keyword Planner? Volume, CPC, competition and bids are based on Google Ads data. Keyword Planner shows ranges to accounts without active ad spend; this Actor returns the averaged number.

Why do I need at least 2 keywords? Each run makes a data request that has a fixed cost on top of the per-keyword cost. With a single keyword that fixed cost is larger than the keyword charge, so the minimum is 2. Sending many keywords in one run is also faster than one run per keyword.

Why do some keywords come back with data_status: "no_data"? The data provider has no search-volume data for them in that market, usually because they are very new, very rare or misspelled. The keyword was still processed, so it is billed like any other. Check spelling and market before large runs.

Do I pay for failed runs? No. If the data provider is unavailable, the run fails and nothing is charged. If it fails part way, you pay only for keyword rows already delivered. Invalid input is explained in the run's status message, and nothing is charged.

Can I get Bing or YouTube volumes? Not yet. Tell us in the Issues tab if you need them.