Keyword Search Volume - Google Keyword Planner, No Ads Account
Pricing
from $3.30 / 1,000 keyword results
Keyword Search Volume - Google Keyword Planner, No Ads Account
Bulk keyword search volume checker and search volume API with real Google Keyword Planner data: monthly searches, CPC, competition, 12-month trends and keyword ideas for any country, city or language. No Google Ads account. $4 per 1,000 keywords; keywords with no data are free.
Pricing
from $3.30 / 1,000 keyword results
Rating
0.0
(0)
Developer
Wrenfield Data
Maintained by CommunityActor stats
0
Bookmarked
109
Total users
79
Monthly active users
7 hours ago
Last modified
Share
Keyword Search Volume & Keyword Research Tool (Google Keyword Planner data)
Keyword Search Volume is a bulk keyword research tool for SEO and PPC. Paste a list of keywords and get real Google Keyword Planner numbers from the Google Ads API: average monthly search volume, a 12-month search trend, CPC, competition and low/high top-of-page bids. Turn on keyword ideas to discover new keywords from seed keywords. It works for any country, region, city and language.
- โ No Google Ads account, no ad spend. You get exact Keyword Planner averages, not the "1Kโ10K" ranges Google shows to accounts without active campaigns.
- ๐ธ $4 per 1,000 keywords, and keywords without data are free. Many keyword volume tools charge $10โ12 per 1,000.
- โก Fast. 1,000 keywords per Google Ads request, typically 20โ40 seconds per run. Input mistakes (empty list, misspelled country) never crash or charge: the run ends cleanly and tells you what to fix.
- ๐ Free Apify plan: runs are limited to 10 keywords and 10 ideas per run, country level. Any paid Apify plan removes the limits and adds volume discounts.
Wrenfield Search Data: keyword and AI-search visibility data, priced per result
- Keyword data: Keyword Search Volume ยท Keyword Difficulty ยท Keyword Research ยท Autocomplete Expander ยท Google Trends ยท People Also Ask ยท Competitor Keywords ยท Keyword Gap
- AI search visibility: AI Search Visibility Tracker ยท Google AI Overview Scraper ยท AI Answer Scraper ยท Agency AI Visibility Reports
- Site and domain SEO: Domain Authority & Traffic ยท Bulk PageSpeed ยท SEO Toolkit ยท SEO Agency Report
Sample output
| Keyword | Monthly searches | CPC (USD) | Competition | Top-of-page bid (high) |
|---|---|---|---|---|
| keyword research | 135,000 | 16.68 | LOW | 26.33 |
| seo tools | 165,000 | 24.39 | LOW | 29.08 |
| ai seo | 6,600 | 41.45 | MEDIUM | 34.42 |
Next step: check difficulty for these keywords
Search volume tells you how many people search. It doesn't tell you whether you can rank. Send the same list to Bulk Keyword Difficulty Checker for a keyword difficulty score (KD 0-100) and search intent per keyword, then go after the keywords with real volume and KD under 30.
- Copy the
keywordcolumn from this run's results (or the list you pasted in). - Paste it into Bulk Keyword Difficulty Checker, pick the same country and click Start. 1,000 keywords cost $5.03 for KD, or $6.55 with search intent.
- To see what a competitor already ranks for, run its domain through Competitor Keywords: every keyword it ranks for, with position, URL, volume and traffic ($2 per 1,000).
With the default Google Ads source, keyword_difficulty and search_intent are empty. dataSource: keyword_database includes them, but for countries only and from monthly-refreshed data.
Quick start: copy-paste inputs for the most common jobs
Click Start with the prefilled keywords to see real output in about 30 seconds, then paste one of these into the JSON tab of the input.
1. Bulk search volume for a keyword list (US):
{ "keywords": ["crm software", "email marketing tools", "project management software"], "location": "United States", "language": "English" }
2. The same list for another market (UK, Germany, Canada, India, Australia and 100+ more countries; language defaults to the main language):
{ "keywords": ["crm software", "email marketing tools"], "location": "United Kingdom" }
3. Local search volume for a city:
{ "keywords": ["plumber near me", "emergency plumber"], "location": "Austin,Texas,United States", "language": "English" }
4. Keyword ideas from a seed, keeping only ideas with at least 100 searches a month:
{ "keywords": ["standing desk"], "mode": "keyword_ideas", "maxIdeas": 200, "minSearchVolume": 100 }
5. Search volume plus keyword difficulty and search intent (country level, monthly-refreshed database, no request fee):
{ "keywords": ["standing desk", "ergonomic chair"], "location": "United States", "dataSource": "keyword_database" }
6. Long history for seasonality (up to 4 years):
{ "keywords": ["christmas tree", "sunscreen"], "dateFrom": "2023-01", "dateTo": "2026-09" }
The input is forgiving: keywords also accepts a comma- or line-separated string, and the Actor understands the common alternative field names (keyword, queries, searchTerms, seedKeywords), values such as United States (US), UK or en-US, and Keyword ideas or Google Ads API for the mode and data source.
From search volume to a ranking decision: the 3-step workflow
- Search volume (this Actor): find keywords with real demand. When a run finishes, the key-value store holds
NEXT_STEP_DIFFICULTY_INPUT: your keywords sorted by volume, with the same country and language, ready to paste. - Keyword difficulty: paste that record into Bulk Keyword Difficulty Checker to get KD 0-100 and search intent for every keyword, then pick keywords with real volume and low KD.
- AI search visibility: check whether ChatGPT, Perplexity and Google AI Mode recommend your brand for those topics with AI Search Visibility Tracker. The record
NEXT_STEP_AI_VISIBILITY_INPUTholds your top keywords as topics; replace the brand and domain placeholders before you run it.
Prefer to do the first two steps in one run? Use "dataSource": "keyword_database" to get keyword_difficulty and search_intent next to the volume (country level).
What data do you get?
One clean row per keyword:
| Field | What it is |
|---|---|
๐ search_volume | Average monthly Google searches, as reported by Google Ads Keyword Planner |
๐
monthly_searches | Month-by-month search volume (last 12 months, or up to 4 years with a date range) |
๐ trend | % change vs. last month, last quarter and last year (when that much history is available) |
๐ฐ cpc | Average cost per click in USD |
๐ฏ low_top_of_page_bid / high_top_of_page_bid | The bid range advertisers pay to show at the top of the page |
๐ฅ competition / competition_index | Google Ads competition: LOW / MEDIUM / HIGH and 0โ100 |
๐ง keyword_difficulty / search_intent | SEO keyword difficulty (0โ100) and search intent, with the keyword database data source |
๐ก type: "idea" + seed_keyword | Keyword ideas generated from your seed keywords |
Download the results as Excel, CSV, JSON or HTML, or get them through the API.
How to do keyword research with this tool
- Paste your keywords, one per line, into Keywords. Lists of thousands of keywords work fine.
- Set Location (
United States,GB,California,London,Austin, TXorWorldwide) and Language (English,es,pt-BR). Leave Language empty to use the location's main language. - Under What to get, pick Search volume, Keyword ideas or Both.
- Click Start. A typical run finishes in under a minute.
Tip: to find new keywords, use Keyword ideas with 1โ20 seed keywords and set Minimum search volume for ideas (for example 100) to skip tiny long-tail phrases.
Use cases
- SEO keyword research: size topics before you write, and prioritize pages by search demand and difficulty.
- PPC and Google Ads planning: estimate CPC and top-of-page bids before you launch campaigns.
- Content calendars: spot seasonal peaks in the monthly history.
- Market research: compare demand for products, brands or features across countries and cities.
- Agencies, SaaS and AI agents: enrich keyword lists in bulk on a schedule through the API, Make, Zapier, n8n or MCP.
Input example
{"keywords": ["keyword research", "seo tools", "ai seo", "content marketing", "running shoes"],"location": "United States","language": "English","mode": "search_volume","includeMonthlySearches": true}
| Field | Description |
|---|---|
keywords | Keywords to check, or seed keywords for ideas. Normalized and de-duplicated automatically. Max 80 characters and 10 words each. |
location | Country name, 2-letter code or Google Ads location code. For regions and cities, use the Google Ads name, e.g. London,England,United Kingdom. Default: United States. |
language | Language name or code (English, es). Empty = main language of the location. |
mode | search_volume (default), keyword_ideas or both. |
includeMonthlySearches | Add the month-by-month history (default true). |
dateFrom / dateTo | Optional history range as YYYY-MM, up to 4 years back. Default: last 12 months. |
maxIdeas | Max keyword ideas per run (default 100). |
minSearchVolume | Skip ideas below this monthly volume. |
dataSource | google_ads (default, live Google Ads API), keyword_database (monthly-refreshed Keyword Planner data with keyword difficulty and search intent, countries only, no request fee) or auto. |
ideasMethod | Keyword database only: keyword_ideas, keyword_suggestions (long-tail) or related_keywords. |
googleAdsMode | live (default, seconds) or queued (cheaper request fee, usually takes minutes). |
Output example
Real output for running shoes, United States, October 2026 (monthly_searches shortened):
{"keyword": "running shoes","type": "keyword","seed_keyword": null,"location": "United States","location_code": 2840,"language": "English","language_code": "en","search_volume": 301000,"cpc": 1.09,"competition": "HIGH","competition_index": 100,"low_top_of_page_bid": 0.48,"high_top_of_page_bid": 2.07,"keyword_difficulty": null,"search_intent": null,"trend": { "monthly": -18, "quarterly": 22, "yearly": null },"monthly_searches": [{ "date": "2025-10", "year": 2025, "month": 10, "search_volume": 368000 },{ "date": "2025-11", "year": 2025, "month": 11, "search_volume": 301000 },{ "date": "2026-09", "year": 2026, "month": 9, "search_volume": 246000 }],"found": true,"source": "google_ads_live","data_updated_at": null,"scraped_at": "2026-10-19T00:33:26Z"}
monthly_searches lists every month, oldest first. Keyword ideas have "type": "idea" and the seed_keyword they came from. If Google has no data for a keyword, it's still listed with "found": false and a short note, and you aren't charged for it. The dataset has an Overview table and a Monthly trends view. The SUMMARY record in the key-value store lists skipped or invalid keywords and run statistics.
Pricing
This Actor uses pay-per-event pricing. Keywords without data are free. Paid Apify plans get automatic volume discounts on keyword results.
| Event | Price |
|---|---|
Keyword result (keyword-result) | $0.004 per keyword or keyword idea with data |
Google Ads live request (google-ads-live-request) | $0.15 per request (up to 1,000 keywords, or up to 20 seeds for ideas) |
Google Ads queued request (google-ads-queued-request) | $0.08 per request (googleAdsMode: queued) |
Prices below are current (live Google Ads request $0.25, queued $0.15; the keyword-result price is $0.004 on the free plan tier and drops to $0.0033 on higher paid plans).
| Example run | Cost (free-plan tier prices) | Cost (Bronze paid plan) |
|---|---|---|
| 5 keywords, United States | $0.27 | $0.27 |
| 100 keywords | $0.65 | $0.61 |
| 1,000 keywords, Germany | $4.25 | $3.85 |
| 5,000 keywords (5 requests) | $21.25 | $19.25 |
1,000 keywords with dataSource: keyword_database (no request fee) | $4.00 | $3.60 |
How it adds up: keywords with data ร keyword price + one request fee per 1,000 keywords. Send your whole list in one run so you pay one request fee per 1,000, not one per small run. Keywords without data are free.
To cap your spend, set Maximum cost per run in the run options. The Actor checks the limit before each Google Ads request and stops cleanly when it's reached.
Free Apify plan: runs from free-plan accounts use the keyword database and are limited to 10 keywords and 10 ideas per run, at country level only. Any paid Apify plan removes these limits.
For agencies: run your whole client book
Researching keywords for clients? Pair the volumes with what AI search says about each client. Agency AI Visibility Reports takes one CSV row per client and returns a finished, white-label packet per client (HTML + PDF): whether ChatGPT, Perplexity, Gemini and Google AI Mode name the client, competitor share of voice, Google rankings, quoted evidence and a ranked action queue, plus one portfolio page for the whole book. Save it as a task and schedule it weekly for week-over-week change.
client,domain,competitors,category,keywordsHelp Scout,helpscout.com,Zendesk | zendesk.com; Freshdesk | freshworks.com; Intercom | intercom.com,help desk software,help desk software; shared inbox softwarePipedrive,pipedrive.com,HubSpot | hubspot.com; Salesforce | salesforce.com,CRM for small business,crm for small business
$12 per client packet ($8 each for books of 20-49 clients, $7 each at 50+). The Store price box lists this as "$12,000 / 1,000 packets"; that is the same $12 per packet. Turn on Quote only for a free count of packets and the maximum price before anything runs; only completed packets are charged.
Keyword search volume API: REST, Python, JavaScript, n8n and MCP
Actor ID for every client: wrenfield-data/keyword-search-volume (in URLs: wrenfield-data~keyword-search-volume). You need an Apify API token; send it in an Authorization: Bearer header. Every example below sets maxTotalChargeUsd, a hard spend cap for the run.
One request, rows back (runs up to 5 minutes):
curl -X POST "https://api.apify.com/v2/acts/wrenfield-data~keyword-search-volume/run-sync-get-dataset-items?maxTotalChargeUsd=5" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": ["crm software", "email marketing tools"], "location": "United States", "language": "English"}'
Python (pip install apify-client):
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("wrenfield-data/keyword-search-volume").call(run_input={'keywords': ['crm software', 'email marketing tools'], 'location': 'United States', 'language': 'English'},max_total_charge_usd=5,)for row in client.dataset(run.default_dataset_id).iterate_items(): # apify-client 1.x/2.x: run["defaultDatasetId"]print(row.get("keyword"), row.get("search_volume"), row.get("cpc"))
JavaScript / TypeScript (npm i apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('wrenfield-data/keyword-search-volume').call({"keywords": ["crm software", "email marketing tools"], "location": "United States", "language": "English"},{ maxTotalChargeUsd: 5 },);const { items } = await client.dataset(run.defaultDatasetId).listItems();
Long or scheduled jobs (async + webhook): start with POST https://api.apify.com/v2/acts/wrenfield-data~keyword-search-volume/runs?maxTotalChargeUsd=5 (returns at once with data.id and data.defaultDatasetId), wait with GET /v2/actor-runs/{id}?waitForFinish=60, then read GET /v2/datasets/{defaultDatasetId}/items?clean=true&format=json (or csv, xlsx). To be called back instead of polling, add &webhooks= with the base64 of [{"eventTypes":["ACTOR.RUN.SUCCEEDED"],"requestUrl":"https://your-app.example/hook"}]. For recurring pulls, save the input as a task and put it on an Apify schedule.
n8n: Apify node โ Resource Actors โ Run an Actor and Get Dataset โ Actor wrenfield-data/keyword-search-volume โ custom input {"keywords": ["crm software", "email marketing tools"], "location": "United States"}. Make and Zapier have the same "run Actor" + "get dataset items" steps. Or call the run-sync-get-dataset-items URL above from any HTTP node.
MCP (Claude, Cursor, VS Code, any MCP client): https://mcp.apify.com?tools=wrenfield-data/keyword-search-volume. The tool exposes the input schema and output fields to the agent.
Output fields
Main fields (the Output tab and the dataset schema list every field with its type):
| Field | Type | Meaning |
|---|---|---|
keyword | string | Keyword (normalized, lower-case) |
type | string | keyword = one of your input keywords; idea = a keyword idea generated from your seed keywords |
search_volume | integer or null | Average monthly searches (last 12 months) |
cpc | number or null | Average cost per click in USD |
competition | string or null | Paid search competition level: LOW, MEDIUM or HIGH |
competition_index | integer or null | Paid search competition index, 0-100 |
low_top_of_page_bid | number or null | Top-of-page bid, low range (USD) |
high_top_of_page_bid | number or null | Top-of-page bid, high range (USD) |
monthly_searches | array | Monthly search volume history, oldest to newest: {date, year, month, search_volume} |
trend | object or null | Search volume change in % of the latest month vs. previous month / 3 months / 12 months earlier |
keyword_difficulty | integer or null | SEO ranking difficulty 0-100 (keyword database only) |
search_intent | string or null | informational, navigational, commercial or transactional (keyword database only) |
found | boolean | true if search volume data was found (only these rows are charged) |
source | string | keyword_database, google_ads_live or google_ads_queued |
location_code | integer or null | Google Ads location code (e.g. 2840 = United States) |
scraped_at | string | When this row was produced (UTC) |
Field names and types stay stable within version 1.x: we add fields but don't rename or remove them. Anything that changes a field will be announced in this README first. Optional fields can be null or absent depending on the options you set, so read them with a default.
Cost per 1,000 results
| Volume | Cost (free plan prices) | How it adds up |
|---|---|---|
| 1,000 keywords, Google Ads data (default) | $4.25 | 1,000 ร $0.004 + one $0.25 Google Ads request (up to 1,000 keywords each) |
1,000 keywords, "dataSource": "keyword_database" | $4.00 | no request fee; adds keyword_difficulty and search_intent |
| 10,000 keywords, Google Ads data | $42.50 | 10 requests of 1,000 |
Keywords Google has no data for (found: false) are free. Paid Apify plans get lower per-keyword prices (down to $0.0033). The Google Ads request fee is $0.25 live or $0.15 queued from Oct 23, 2026 ($0.15 and $0.08 before).
Pipeline tips
- Send up to 1,000 keywords per run to pay one request fee per 1,000.
- Rows have
type: "keyword"(your input) ortype: "idea"(with"mode": "keyword_ideas"or"both"); filter on it downstream. "googleAdsMode": "queued"is cheaper but can take minutes, so use the async pattern for it, notrun-sync.
Related SEO tools
A full SEO toolkit from the same developer: keyword demand โ competitor authority and traffic โ AI search visibility.
- Domain Authority & Traffic Checker: bulk domain authority, backlinks and organic traffic
- AI Search Visibility Tracker: check if ChatGPT, Perplexity, Gemini and AI Overviews mention your brand
- Google Trends Scraper: interest over time, by region, related queries and Trending Now
- Google Ads Transparency Scraper: see competitors' Google, YouTube and Shopping ads
- Competitor Keywords: every keyword a domain ranks for, with position, URL, volume and traffic
- Bulk Keyword Difficulty Checker: SEO keyword difficulty (0-100) and search intent in bulk
- Keyword Research Tool: keyword ideas from any seed with volume, KD, intent and SERP features in one row
- People Also Ask Scraper: Google PAA questions, related searches and AI Overviews
- AI Answer Scraper: answers and cited sources from ChatGPT, Perplexity, Gemini and Google AI Mode
- SEO Toolkit All-in-One: domain overview, ranked keywords, backlinks and live SERPs in one Actor
- Google Autocomplete Keyword Expander: hundreds of long-tail ideas from Google and YouTube autocomplete
All of them export flat JSON, CSV or Excel, so you can feed one tool's dataset into the next.
Use it from an AI agent (MCP)
Add one line to Claude, Cursor, VS Code or any MCP client and the agent gets this Actor as a tool (it appears as wrenfield-data--keyword-search-volume):
https://mcp.apify.com?tools=wrenfield-data/keyword-search-volume
Try asking: Get US search volume and CPC for "crm software" and "email marketing tools", then tell me which has the better volume-to-CPC ratio.
Fields your agent reads: search_volume (monthly Google searches), cpc (USD), competition, monthly_searches (12 months), trend, found (false = no data, not charged).
Real output (one row from a run on Oct 22, 2026, trimmed):
{"keyword": "crm software", "location": "United States", "search_volume": 201000, "cpc": 37.13, "competition": "LOW", "found": true, "source": "google_ads_live"}
Free-plan runs read the keyword database and are limited to 10 keywords per run; paid plans unlock live Google Ads data. Set a maximum cost per run (maxTotalChargeUsd over the API, call options over MCP) so an agent loop cannot overspend.
FAQ
Is there a free keyword research tool or free trial? Every Apify account, including the free plan, gets $5 of platform credit each month with no credit card. That's enough to try this Actor. Free-plan runs use the keyword database and are limited to 10 keywords and 10 ideas per run (country level). Any paid Apify plan removes the limits and adds volume discounts.
Is this a Google Keyword Planner alternative without an Ads account? Yes. Keyword Planner hides exact volumes (it shows ranges like "1Kโ10K") unless you run ads. This Actor returns the exact Keyword Planner averages, monthly history and CPC with no Google Ads account and no ad spend.
Is there a search volume API?
Yes. Every Apify Actor is an API. Call the run-sync-get-dataset-items endpoint shown above from any language, or use the official Python and JavaScript clients, Make, Zapier, n8n or the Apify MCP server.
Where does the data come from?
From the Google Ads API, which is the same data you see in Google Keyword Planner. With dataSource: keyword_database, the Actor reads a database built from Google Ads data and refreshed every month instead. It's cheaper for small runs and adds keyword difficulty and search intent.
Can I use it as a cheaper alternative to big SEO suites for search volume? Yes, for search volume, CPC, competition, trends and keyword ideas. You pay only for keywords that return data, with no monthly subscription. (This Actor isn't affiliated with any SEO suite.)
Why is a keyword returned with found: false?
Google has no measurable search volume for it, usually because the phrase is very rare or new. You aren't charged for it.
Why do similar keywords show identical numbers? Google Ads groups close variants (plurals, misspellings, word order) and reports the same volume for all of them. Google also rounds volumes into buckets such as 90,500 or 110,000.
Why do some months jump a lot?
The monthly numbers are what Google Ads reports, including its rounding buckets. Use the 12-month average (search_volume) for planning and the monthly history for seasonality.
Can I get search volume for a city or state?
Yes. Type the place as you'd say it (London, Austin, TX, Bavaria) or use the full Google Ads location name, e.g. New York,New York,United States. If a name matches several places, the run notes say which one was used and how to pick another. Use Worldwide for global volume.
How many keywords can I check at once? Thousands per run. They're sent in batches of 1,000 per Google Ads request. Google Ads allows about 12 live requests per minute, so 10,000 keywords (10 requests) usually take 1โ3 minutes.
Why is the free plan limited to 10 keywords per run? Every lookup has a real upstream cost for us, and the Apify free plan does not pay for it. So free-plan runs are capped at 10 keywords and 10 ideas per run at country level, using the keyword database. Any paid Apify plan removes the caps, adds live Google Ads data, city and region targeting, and cheaper per-keyword prices.
What happens if I make a mistake in the input?
Nothing is charged and nothing crashes. The run ends with the reason in its status message, one type: "error" row in the dataset and the SUMMARY record (for example: unknown location, empty keyword list). Fix the input and start again.
How much does a typical run cost? 5 keywords cost $0.27, 100 keywords $0.65 and 1,000 keywords $4.25 on the free-plan price tier (see the table in Pricing). The Google Ads request fee is charged once per 1,000 keywords, so one big run is cheaper than many small ones.
What is the difference between this and the keyword database option? Google Ads (default) is live Google Keyword Planner data with every keyword Google knows about and a small request fee. The keyword database is refreshed monthly, has no request fee, and adds keyword difficulty and search intent, but covers countries only.
Is this an official Google product? No. This Actor isn't affiliated with or endorsed by Google. Google, Google Ads and Keyword Planner are trademarks of Google LLC.
Found a problem? Open an issue on the Issues tab with your run ID and we'll fix it.
Did it help? If this tool saved you time, a short review on the Store helps other people find it. Feedback on what's missing is just as welcome.
Acceptable use
- This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Google, Google Ads or DataForSEO.
- Don't use the data to build a competing search engine, or otherwise to compete with or harm Google or the other search engines the data comes from.
- The Actor may not be used from, or for people or organizations in, Russia, Belarus, Cuba, Iran, Syria, Myanmar, North Korea, Crimea or the Russian-occupied territories of Ukraine.
- You are responsible for using the results lawfully, including privacy laws such as GDPR for any personal data they contain.