Keyword Search Volume, CPC & Difficulty avatar

Keyword Search Volume, CPC & Difficulty

Pricing

from $3.00 / 1,000 keyword with data

Go to Apify Store
Keyword Search Volume, CPC & Difficulty

Keyword Search Volume, CPC & Difficulty

Google search volume, CPC, competition, keyword difficulty, search intent and a monthly trend for up to 20,000 keywords per run, or related keyword ideas from seed keywords. Data from DataForSEO. No API key or Google Ads account needed. Pay per keyword with data.

Pricing

from $3.00 / 1,000 keyword with data

Rating

0.0

(0)

Developer

Brian Gomes

Brian Gomes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

Keyword Search Volume, CPC & Difficulty gives you Google search volume, cost per click, competition, keyword difficulty, search intent and the trend for any list of keywords. Or give it a few seed keywords and get related keyword ideas with the same numbers.

What it does

Give it keywords and a location. You get one row per keyword:

  • How many people search for it: the average monthly Google searches, plus month-by-month numbers.
  • What advertisers pay: cost per click and the top-of-page bid range from Google Ads.
  • How hard it is to rank: keyword difficulty from 0 to 100.
  • What the searcher wants: informational, navigational, commercial or transactional.
  • Which way it's going: the change against last month, last quarter and last year.

In Ideas mode, give it up to 200 seed keywords and get up to 20,000 related keywords, each with the same numbers. Sort them by relevance or by search volume, and drop the ones below a minimum volume.

You don't need a Google Ads account or an API key. The data comes from DataForSEO, whose keyword numbers are built from Google Ads data.

Here's what five rows look like:

keywordsearchVolumecpccompetitionkeywordDifficultysearchIntenttrendYearlyPct
espresso machine135,0001.12HIGH54commercial8
best espresso machine49,5001.35HIGH47commercial22
how to descale espresso machine6,6000.21LOW18informational4
espresso machine with grinder22,2001.09HIGH39transactional-6
breville barista express60,5000.87HIGH35navigational-12

(Example data.)

Who it's for

  • SEO research. Check a content plan's keywords before writing: volume, difficulty and intent in one table.
  • PPC planning. See cost per click and bid ranges before you spend on ads.
  • Agencies. Size a client's market from a seed list in one run, and hand them the spreadsheet.
  • AI agents and automations. A small, fast call with a fixed output shape. A 1-keyword run takes a few seconds. It works through the Apify MCP server.

Input

FieldWhat it doesDefault
KeywordsThe keywords to look up (Metrics), or the seed keywords (Ideas).none
What to getmetrics for your keywords, ideas for related keywords.metrics
LocationA place name as DataForSEO writes it, like United States or London,England,United Kingdom, or a location code like 2840. Full list.United States
LanguageA language code like en, de or es, or a name like English.en
Months of search historyHow many months of monthly volumes per keyword. 0 leaves them out.12
Maximum ideasIdeas mode: stop after this many ideas.100
Minimum monthly searchesIdeas mode: leave out ideas below this volume.0
Sort ideas byIdeas mode: relevance or searchVolume.relevance

Input field names in the API: keywords, mode, location, language, historyMonths, maxIdeas, minSearchVolume, ideasSortBy.

Up to 20,000 keywords per run in Metrics mode, and up to 200 seed keywords in Ideas mode. Keywords are lowercased and duplicates dropped. A keyword over 80 characters or 10 words, or one with an emoji, is skipped with an error row and isn't charged.

Example input:

{
"keywords": ["espresso machine", "coffee grinder", "pour over kettle"],
"location": "United States",
"language": "en"
}

Ideas mode:

{
"mode": "ideas",
"keywords": ["espresso machine"],
"maxIdeas": 500,
"minSearchVolume": 100,
"ideasSortBy": "searchVolume"
}

Output

One row per keyword. Export it from the Console as CSV, JSON, Excel, XML or HTML, or read it through the Apify API.

FieldWhat it holds
typeresult for a keyword with a search volume, no-data when there's no volume for it in this location, error for a keyword that was skipped or a note about the run.
keywordThe keyword, lowercased.
searchVolumeAverage monthly Google searches over the last 12 months.
cpcAverage cost per click in Google Ads, in USD.
competitionGoogle Ads competition for the paid results: LOW, MEDIUM or HIGH.
competitionIndexThe same as a number from 0 to 100.
lowTopOfPageBid, highTopOfPageBidThe bid range for an ad at the top of the page, in USD.
keywordDifficultyHow hard it is to reach Google's organic top 10, from 0 (easy) to 100 (hardest).
searchIntentThe main intent: informational, navigational, commercial or transactional.
otherIntentsSecondary intents, if any.
trendMonthlyPct, trendQuarterlyPct, trendYearlyPctSearch volume change in percent against last month, last quarter and last year.
monthlySearchesSearches per month, oldest first: {"month": "2026-09", "searchVolume": 135000}.
seedKeywordsIdeas mode: the seed keywords the idea came from.
location, languageWhat you asked for.
dataUpdatedAtWhen DataForSEO last updated the keyword's numbers.
errorEmpty on a result row. Otherwise it says why there's no data or what went wrong.

Example row (JSON):

{
"type": "result",
"keyword": "espresso machine",
"searchVolume": 135000,
"cpc": 1.12,
"competition": "HIGH",
"competitionIndex": 100,
"lowTopOfPageBid": 0.61,
"highTopOfPageBid": 2.05,
"keywordDifficulty": 54,
"searchIntent": "commercial",
"otherIntents": ["transactional"],
"trendMonthlyPct": -18,
"trendQuarterlyPct": 0,
"trendYearlyPct": 8,
"monthlySearches": [{ "month": "2026-08", "searchVolume": 165000 }, { "month": "2026-09", "searchVolume": 135000 }],
"location": "United States",
"language": "en",
"dataUpdatedAt": "2026-10-06 03:08:24 +00:00",
"error": null
}

Pricing

You pay per keyword with data. There's no monthly fee and no API key to buy.

  • Each keyword with a search volume: $0.003, so $3 per 1,000. Keyword ideas cost the same.
  • Each run: a $0.002 start charge.
  • Not charged: keywords with no data (no-data rows), skipped keywords and error rows.

A worked example. 500 keywords, of which 460 have data: 460 × $0.003 + $0.002 = $1.38. An ideas run that returns 1,000 ideas: $3.00.

Set a maximum cost per run for a hard ceiling. The run only asks for as many keywords as fit under it, then stops and says how many it didn't look up.

On Apify's free plan, a run looks up at most 25 keywords (or returns 25 ideas) as a sample. Any paid Apify plan removes that limit.

How it handles the hard cases

  • Keywords with no data. Some keywords have too few searches for Google to report, or fall in categories Google Ads restricts. They come back as no-data rows and aren't charged.
  • Keywords Google Ads refuses. Emojis, other 4-byte characters and some symbols (such as ☕ © ^) are skipped before any request, each with an error row that says why. If DataForSEO still refuses a batch because of one keyword, the batch is split until that keyword is alone. It gets its own error row and the rest are answered.
  • A location or language DataForSEO doesn't know. The run stops at the first request and finishes with one error row. The row says how to write the location and links to the full list. Nothing is charged.
  • Big lists. Keywords go 700 per request, the most DataForSEO takes. 20,000 keywords is 29 requests, a minute or two in all.
  • DataForSEO's own hiccups. A rate limit, a timeout or an unavailable upstream is tried 3 times in all, with a pause between. If it still fails, you keep every row so far plus an error row that says how many keywords weren't looked up.
  • The run's time limit. The run stops starting new requests a little before its timeout and says how many keywords are left. It isn't marked failed.
  • When a run is marked failed. Only when this Actor's own setup is broken (its DataForSEO account), or when DataForSEO failed before anything was done.

Compared with the free tools

Google Keyword Planner is free with a Google Ads account, but it shows volume ranges unless you're spending on ads, and it has no difficulty or intent. Google Trends shows direction, not volume. Free SEO extensions show numbers one page at a time.

This Actor fits when you have a list: hundreds or thousands of keywords in one table, the same check every month, or a call from your own code or an AI agent. It costs less per keyword than most keyword tool subscriptions if you don't need the rest of the suite.

Data from DataForSEO. Not made by or affiliated with Google or DataForSEO.

FAQ

Where do the numbers come from? From DataForSEO's keyword database, which is built from Google Ads data and updated monthly. Difficulty and intent are DataForSEO's own measures.

Why does a keyword have no data? It's not in DataForSEO's database for that location and language, which usually means too few searches. Or Google Ads doesn't report it (some health, finance or adult topics). Those rows aren't charged.

Why is the volume a round number? Google Ads reports volumes in buckets (1,000, 1,300, 1,600 and so on), and the tools built on it, this one included, pass that through.

Can I get several countries? One location per run. Run it once per country, or save each as a task.

Does it work with AI agents? Yes. It takes a plain list of keywords, returns the same fields every time, needs no API key and runs in seconds for a short list. Agents can find and run it through the Apify MCP server.

Can I run it on a schedule? Yes. Use Apify Schedules to run the same list monthly and compare volumes over time.

Limits

  • One location and one language per run.
  • Up to 20,000 keywords per run in Metrics mode, 200 seed keywords and 20,000 ideas in Ideas mode.
  • Google search only. No Bing, YouTube or Amazon volumes in this version.
  • Volumes are monthly averages from Google Ads data. They don't count every search and don't update daily.
  • On Apify's free plan, at most 25 keywords or ideas per run.

Integrations

This Actor runs on Apify, so everything the platform does works with it.

  • API. Start a run and read the results from your own code, in any language. Apify API
  • Schedules. Run your keyword list monthly and watch the trend. Schedules
  • Tasks. Save your input once as a task and run it again with one click, or on a schedule. Tasks
  • Webhooks. Get a call to your own URL when a run succeeds or fails. Webhooks
  • Google Sheets and Drive. Download the results as CSV or Excel and open them in Sheets. Or add a Google Sheets step after this Actor in Make or Zapier. Or send the files to a Google Drive folder. Datasets and exports, Google Drive
  • Zapier, Make and n8n. Start a run from another app and send the results on to the next step. Zapier, Make, n8n
  • AI agents (MCP). Claude, ChatGPT and other MCP clients can find and run this Actor through the Apify MCP server. Apify MCP server
  • Other Actors. Pass this Actor's results to another Actor when a run finishes. Actor-to-Actor

Works with

Support

Found a bug or need a feature? Open an issue on this Actor's Issues tab. Include the run ID and a keyword that shows the problem.