Keyword Research: Search Volume, CPC and Ideas
Keyword Research Tool is an Apify actor (API) by CheapAPI Labs. Search volume, CPC, competition, difficulty and intent for your keywords, plus new keyword ideas. It costs $1.20 per 1,000 keywords on the Apify Free plan and $0.60 on Gold, plus $0.0145 per data request ($0.0151 on Gold), billed through your Apify account with no API key.
Compared with the most used keyword volume actor (about 1,200 users): search volume for 1,000 keywords on the Free plan costs $1.23 here and $12.00 there (Apify Store listing prices, checked September 2026). A batch priced actor charges $0.70 on Free and $0.35 on Gold for 1,000 keywords, with intent but no difficulty score.
Our prices updated 30 October 2026; competitor prices as checked in the comparison. 33 Apify users have run this actor (Apify Store count, 30 October 2026).
What does Keyword Research Tool return?
Get exact monthly Google search volume, CPC, competition, keyword difficulty, search intent and a 12-month trend for up to 10,000 keywords per run in 249 countries. You can also switch modes to find keyword ideas, keywords for any website, years of monthly history or AI search volume. You don't need an API key or a Google Ads account, and a keyword checked without a usable result costs only $0.0002.
One example row from a real run, shortened:
{
"id": "2a37305c4b49a8d2",
"keyword": "nothing phone",
"searchVolume": 165000,
"cpc": 0.31,
"competition": "HIGH",
"competitionIndex": 92,
"lowBid": 0.03,
"highBid": 0.38,
"keywordDifficulty": 31,
"searchIntent": "informational",
"secondaryIntents": null,
"trendMonthlyPct": 22,
"trendQuarterlyPct": 0,
"trendYearlyPct": 174,
"monthlyTrend": [
{
"year": 2026,
"month": 6,
"searchVolume": 301000
},
{
"year": 2026,
"month": 7,
"searchVolume": 246000
},
{
"year": 2026,
"month": 8,
"searchVolume": 301000
}
],
"coreKeyword": "phones nothing",
"wordCount": 2,
"detectedLanguage": "en",
"categoryIds": [
10007,
10878,
…
}Which fields do you get?
Search volume mode (default), one row per keyword:
| Field | Type | Example |
|---|---|---|
id |
string | "0f02f3bb0cfda02f" (stable: same keyword, mode and market give the same id in every run) |
keyword |
string | "running shoes" |
searchVolume |
integer | 246000 (average monthly Google searches) |
cpc |
number | 1.12 (average cost per click, USD) |
competition |
string | "HIGH" (LOW / MEDIUM / HIGH, paid competition) |
competitionIndex |
integer | 100 (0 to 100) |
lowBid / highBid |
number | 0.61 / 2.07 (top of page bid range, USD) |
keywordDifficulty |
integer | 71 (0 to 100, how hard it is to rank organically) |
searchIntent |
string | "commercial" (informational, navigational, commercial, transactional) |
secondaryIntents |
array | ["transactional"] |
trendMonthlyPct / trendQuarterlyPct / trendYearlyPct |
number | -18 / 22 / 0 (% change) |
monthlyTrend |
array | [{ "year": 2026, "month": 8, "searchVolume": 201000 }, …] oldest first |
coreKeyword |
string | null or the main keyword of its synonym group |
wordCount |
integer | 2 |
detectedLanguage |
string | "en" (estimated from the keyword text, not the market; one word keywords can get another language, the market language is languageCode) |
categoryIds |
array | [10021, 10178] (Google product category ids) |
lastUpdated |
string | "2026-09-16 03:19:59 +00:00" (when the metrics were refreshed) |
mode, country, languageCode, locationCode, dataSource, scrapedAt |
context | "searchVolume", "US", "en", 2840, "database", ISO timestamp |
Other modes add or swap fields:
| Mode | Extra fields |
|---|---|
| Idea modes | seedKeyword; related keywords add depth and relatedKeywords |
| Keywords for a website | website, concepts (keyword groups), spellingCorrection when present |
| Keyword difficulty | keywordDifficulty only (plus context) |
| Search intent | searchIntent, intentProbability, secondaryIntents with probabilities |
| Keyword overview | topResultsAvgBacklinks, topResultsAvgReferringDomains, topResultsAvgRank, topResultsAvgDomainRank, normalized volume estimates |
| Historical data | monthsOfHistory, firstMonth, lastMonth, history (monthly volume, CPC, competition, bids) |
| AI search volume | aiSearchVolume, aiTrendMonthlyPct, aiTrendQuarterlyPct, aiMonthlyTrend |
| Optional add ons | serpFeatures, serpResultsCount, serpUrl, serpLastUpdated (search results info); demographics (age and gender) |
The RUN_SUMMARY record in the key value store lists:
- keywords that had no data
- keywords that were not found
- skipped keywords
- any problems
- why the run stopped (result cap or budget)
- the events that were charged
How much does Keyword Research Tool cost?
You pay per event, through your Apify account. Main price: $1.20 per 1,000 keywords on the Apify Free plan and $0.60 on Gold, plus $0.0145 per data request ($0.0151 on Gold). Every event and plan:
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
| Data requestCharged once per data request made, even if it finds nothing: one request covers up to 700 keywords (search volume, overview, history), 1,000 keywords (difficulty, intent, AI search volume, real time volume) or one page of up to 1,000 keyword ideas. Charged twice when audience demographics are enabled. | $0.0145 | $0.0145 | $0.0145 | $0.0151 |
| Keyword resultOne keyword row with metrics (search volume/CPC/competition/trend, difficulty, intent, overview, history or AI search volume). | $0.0012 | $0.0012 | $0.0012 | $0.0006 |
| Keyword ideaOne new keyword found by the ideas, suggestions, related keywords or website modes, with volume, CPC and competition. | $0.002 | $0.002 | $0.002 | $0.002 |
| Website analyzedOne website or page analyzed in the Keywords for a website mode, charged even if no keywords are found. | $0.12 | $0.12 | $0.12 | $0.12 |
| Real time small batch feeReal time planner data only (you chose Real time, or a real time only option such as a date range or city targeting): added to a real time request that returns too few keywords to cover it (under 82 keywords with data on the Free, Bronze and Silver plans, under 163 on Gold and above). Never charged with the default settings. | $0.10 | $0.10 | $0.10 | $0.10 |
| Audience demographics add onPer output row that includes audience demographics, only when Include audience demographics is enabled. | $0.005 | $0.005 | $0.005 | $0.005 |
| Request without resultsAdded to a keyword database request that returns no usable keyword at all (nothing found, or everything removed by your filters or deduplication). Charged twice when audience demographics are enabled. | $0.0009 | $0.0009 | $0.0009 | $0.0003 |
| Keyword checked without a resultA keyword the keyword database returned but that is not in your output because it has no data, was removed by your filters or is a duplicate. Charged twice when audience demographics are enabled. | $0.0002 | $0.0002 | $0.0002 | $0.0002 |
How do I call Keyword Research Tool API from code?
Every run is one HTTP request to the Apify API with your Apify token; the input below is the actor's own example. The synchronous endpoint returns the rows in the response for runs up to 300 seconds; for longer runs start a run and fetch its dataset.
curl -X POST "https://api.apify.com/v2/acts/cheapapi~keyword-research-tool/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"mode":"searchVolume","keywords":["running shoes","best coffee maker","keyword research"],"country":"US","dataSource":"auto"}'With the JavaScript client:
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('cheapapi/keyword-research-tool').call({
"mode": "searchVolume",
"keywords": [
"running shoes",
"best coffee maker",
"keyword research"
],
"country": "US",
"dataSource": "auto"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();How does Keyword Research Tool compare with alternatives?
Typical run: search volume for your own list of 10 or 1,000 keywords. Prices are Actor fees per the public Apify Store listings, checked September 2026; user counts are rounded. ", " means the listing does not offer or state it.
| Option | 10 keywords, Free | 1,000 keywords, Free | 1,000 keywords, Gold | Billing (Free plan) | Difficulty + intent |
|---|---|---|---|---|---|
| Most used keyword volume Actor (~1,200 users) | $0.12 | $12.00 | $8.00 | $0.012 per keyword | , |
| Flat batch volume Actor (~790 users) | $1.99 | $1.99 | $0.40 | $1.99 per batch of up to 1,000 keywords | , |
| Batch priced Google + Bing volume Actor (~400 users) | $0.70 | $0.70 | $0.35 | $0.20 per run + $0.50 per batch of up to 1,000 keywords | intent only |
| Per keyword Actor with optional enrichment (~240 users) | $0.021 | $2.00 ($3.00 with difficulty + intent) | $1.60 ($2.40) | $0.001 per run + $0.002 per keyword, + $0.001 per keyword for difficulty/intent | paid add on |
| This Actor | $0.027 | $1.23 | $0.63 | $0.0145 per data request + $0.0012 per keyword with data | ✓ included |
What this means:
- Small and medium lists: this Actor is the cheapest option with difficulty and intent, because it has no per run or per batch minimum.
- A full 1,000-keyword list: we are not the cheapest. On the Free plan the batch priced Google + Bing Actor costs $0.70 (and also returns Bing volume, which we do not); on Gold both batch priced Actors ($0.35 and $0.40) cost less than our $0.63. They do not include keyword difficulty or the 3-month and year over year trend %.
- Platform usage: for this Actor, Apify platform usage is billed separately on top of the prices above (at the default 256 MB a small run typically uses about $0.001 to $0.005).
Keyword ideas from seed keywords (1,000 idea rows, Free plan):
| Option | 1,000 ideas | Difficulty + intent | Notes |
|---|---|---|---|
| Seed suggestion Actor, volume/CPC/intent (~270 users) | $1.00 | intent only | $0.001 per suggestion; platform usage also billed to the user |
| Seed suggestion Actor with difficulty (~530 users) | $3.00 | ✓ | $0.003 per keyword; one seed and up to 500 keywords per run |
| This Actor (Keyword ideas mode) | $2.01 | ✓ included | $0.0145 per page of up to 1,000 ideas + $0.002 per idea |
For plain idea lists without difficulty, the $1.00 Actor is cheaper than this one. Those two Actors expand seed keywords into suggestions; their listings do not describe looking up metrics for a list of your own keywords.
What is it used for?
- SEO content planning: find long tail ideas with volume, difficulty and intent. Then filter for easy informational keywords to write about.
- PPC budgeting: get CPC, top of page bid ranges and competition for thousands of keywords before you build a Google Ads campaign.
- Competitor research: list the keywords a competitor's domain or landing page is relevant for.
- Market and product research: compare demand for products across countries. Track seasonality with 12 months (or up to about 4 years) of monthly volume.
- AI search / GEO planning: see which topics people ask AI assistants about and how that demand is trending, next to classic Google volume.
- Rank tracking and reporting: add fresh metrics to your keyword lists in dashboards or Google Sheets every month.
What is not included?
- Bing, YouTube or Amazon volume: this Actor returns Google data only.
- Live Google search results (rankings, snippets, ads): use Google SERP Scraper.
- Visibility of a brand in AI answers (ChatGPT, Perplexity, AI Overviews): use AI Search Visibility Tracker. This Actor's AI search volume shows demand, not who gets cited.
- Backlinks and domain authority: use Backlink Checker or Domain SEO Analyzer.
- Technical on page audits: use SEO Site Audit.
- YouTube keyword ideas: use YouTube Search Scraper to see what ranks for a query on YouTube.
What are the limits?
- Up to 10,000 keywords per run in per keyword modes and 200 seed keywords in idea modes. Each keyword can be at most 80 characters and 10 words. Longer ones are skipped and listed in RUN_SUMMARY.
- Search volume is Google only. Rare keywords may return no volume; they cost at most the $0.0002 check fee.
- Keyword difficulty, intent, overview, history, ideas and demographics come from the keyword database. They cover country level locations and the major languages, not city targeting.
- Custom date ranges, search partners and city or coordinate targeting are real time only options, without difficulty or intent.
- AI search volume is an estimate with 12 months of history, so there is no year over year change for it.
- Demographics are not available for every keyword or country. Only rows that include them are charged.
- Economy processing can take 1 to 3 hours.
Questions about Keyword Research Tool
Is there a Free plan limit, and is platform usage included?
On the Apify Free plan you can use up to $0.25 of this Actor's results per calendar month, enough to try it (Apify pays developers nothing for Free plan usage while our data costs are real). Runs that reach the allowance stop cleanly with a message and keep everything collected; the allowance resets on the 1st, and any paid plan has no limit. Apify platform usage (compute) is not included: it is billed separately by Apify, typically $0.001 to $0.005 for a small run at the default 256 MB, and shown in the run details.
How accurate and fresh is the data?
Volumes are the Google Ads keyword planner numbers advertisers see: average monthly searches, rounded the way Google rounds them, as exact numbers rather than bands. Keyword database metrics are refreshed monthly (each row's lastUpdated shows when); real time data is fetched during your run; AI search volume covers the last 12 full months.
What is the difference between database and real time data, and can I target a city?
The keyword database is the default: fast, refreshed monthly, with difficulty and intent. Real time data asks the Google Ads keyword planner during your run and supports custom date ranges, search partners and city targeting (locationName such as London,England,United Kingdom, locationCode or coordinates), but has no difficulty or intent. Keywords missing from the database are listed in RUN_SUMMARY (keywordsNotFound); look them up with dataSource: "realtime" in a second run. Real time only options switch the run to real time data automatically.
What is AI search volume?
A model based estimate of how often a keyword or question is asked in AI assistants and AI search each month, with a 12-month trend. Use it next to Google volume to spot topics growing in AI search; it is not an exact count from each assistant.
Why did I get fewer rows than keywords, and why was I charged for them?
Very rare keywords may have no data (listed in keywordsWithoutData / keywordsNotFound); filters, maxResults, deduplication and the maximum cost per run can also reduce rows. Every lookup is paid when it is made, so a request that outputs nothing costs the data request plus the no result fee ($0.0154), and keywords returned without data, filtered out or duplicated cost $0.0002 each. A keyword that is not returned at all is free. In the website mode each analyzed website costs $0.12 even with no keywords, and opt in real time requests with fewer than 82 keywords with data (163 on Gold) add the $0.10 small batch fee. RUN_SUMMARY lists every charged event.
How do I control my budget?
Set Maximum cost per run in the run options. The Actor checks the remaining budget before every request, asks for no more keywords than it can pay for in the worst case, and stops cleanly when the next request would not fit. maxResults caps the number of rows.
Can I monitor keywords every month?
Yes. Save your input as a task and add a monthly schedule (the keyword database is refreshed monthly). Every row has a stable id (same keyword, mode and market give the same id in every run) and a scrapedAt timestamp, so you can append runs to one sheet or table and compare rows with the same id.
Do I need an API key or a Google Ads account?
No. Everything runs on our own data infrastructure.
Is it legal?
The Actor returns aggregated keyword statistics (search counts, bids, difficulty), not personal data. You are responsible for using the results in line with your local laws and the terms of the services you use them with.
Something does not work. Where do I get help?
Open an issue on the Actor's Issues tab and include your run ID. The run's RUN_SUMMARY record helps us find the cause quickly.
Run Keyword Research Tool on Apify
The form opens with a working example. Free Apify accounts get a small monthly allowance.