Keyword Research — Ideas, Difficulty & Search Intent
Pricing
from $1.40 / 1,000 keyword results
Keyword Research — Ideas, Difficulty & Search Intent
Keyword ideas, long-tail suggestions and related keywords from your seed keywords, with search volume, keyword difficulty, search intent, CPC and trend. Or check difficulty and intent for your own list. Up to 10 countries per run.
Pricing
from $1.40 / 1,000 keyword results
Rating
0.0
(0)
Developer
Salih Küçükkayış
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Turn a few seed keywords into hundreds of new ones, each with search volume, keyword difficulty, search intent, CPC and trend. Or paste your own keyword list and get difficulty and intent for every keyword. Up to 10 countries in one run, one row per keyword and country.
$2 per 1,000 keywords ($1.80, $1.60 and $1.40 on the Starter, Scale and Business plans), plus $0.02 per lookup. A lookup is one request to the keyword database: one page of up to 1,000 keyword ideas, one seed in the suggestions and related modes, or up to 700 of your keywords in the analyse mode. Keywords without data, keywords your filters drop, and failed lookups are free. No subscription, and platform usage is included. (Plus a tiny $0.00005 start fee per run.)
What you get
- Four ways to research. Keyword ideas: the broadest list from up to 200 seeds at once, most relevant first. Long-tail suggestions: longer phrases that contain each seed. Related searches: Google's "related searches" around each seed, up to four levels deep. Analyse my keywords: difficulty, intent and volume for a list you already have.
- Difficulty and intent on every row. Keyword difficulty from 0 to 100 (with a plain label: very easy to very hard), the main search intent (informational, navigational, commercial, transactional) and any secondary intents.
- Filter before you pay. Minimum search volume, maximum difficulty and intent are applied at the source, so you only pay for keywords you want.
- Trend already worked out. 12 months of search volume per keyword, with the 3-month trend and peak month as columns. For year-on-year change and up to 48 months of history, use Keyword Search Volume.
- How strong the top 10 is. The average number of referring domains of the pages ranking for each keyword, a quick check next to the difficulty score.
- Many countries in one run. Up to 10 countries, each in its own main language unless you choose one.
- Bring keywords from anywhere. Paste them, link a text, CSV or JSON file (a published Google Sheet works), or point to the dataset of another Actor.
- Stops at your spending limit. Set "Maximum cost per run" and the run never goes over it.
Typical uses
- Plan content. Start from three topic words, filter to difficulty 30 or below with informational intent, and get a list of articles you can rank for.
- Find buying keywords. Filter by commercial and transactional intent and sort by CPC.
- Score a list you already have. Analyse a keyword export from any tool and add difficulty and intent to it.
- Compare markets. One seed list, several countries, one table.
Input
{"keywords": ["project management software"],"mode": "ideas","countries": ["US", "GB"],"maxResults": 500,"maxKeywordDifficulty": 40,"intents": ["commercial", "transactional"]}
| Field | Meaning |
|---|---|
keywords | Seed keywords, or the keywords to analyse. Up to 80 characters and 10 words each. Duplicates are removed. |
mode | ideas (default), suggestions, related or overview (analyse my keywords). |
countries | Up to 10 countries: two-letter codes (US, GB, TR) or names. Default US. |
language | Optional language code (en, es, de, …). Empty means each country's main language. |
maxResults | Ideas, suggestions and related: keywords per country, up to 10,000. Default 300. |
maxSeeds | How many of your keywords are used as seeds, up to 200. Default 20. |
depth | Related searches only: 1 to 4 levels. Default 2. |
minSearchVolume, maxKeywordDifficulty, intents | Filters. Dropped keywords are not charged. |
keywordsUrl, datasetId, keywordField | Other ways to pass keywords, and the name of the column or field that holds them. |
maxKeywords | Analyse mode: stop after this many keywords (up to 10,000). |
Output
One row per keyword and country.
{"keyword": "asana project management software","country": "US","language": "en","searchVolume": 18100,"keywordDifficulty": 47,"difficultyLevel": "medium","intent": "commercial","otherIntents": [],"cpcUsd": 8.6,"competition": 0.12,"competitionLevel": "LOW","lowTopOfPageBidUsd": 2.43,"highTopOfPageBidUsd": 28.68,"trend3mPct": 48.9,"trendDirection": "rising","peakMonth": 9,"dataMonth": "2026-08","monthlySearches": [{ "year": 2025, "month": 9, "searches": 49500 }, "…"],"avgReferringDomainsTop10": 64.8,"source": "ideas","seed": null,"status": "ok","charged": true}
A real row from a run on 17 October 2026: ideas for project management software in the United States (293 keywords, one lookup, $0.61).
| Field | Meaning |
|---|---|
searchVolume | Average monthly searches over the last 12 months |
keywordDifficulty, difficultyLevel | How hard it is to reach the top 10, 0 to 100, from the backlink profiles of the pages ranking now. Labels: under 15 very easy, under 30 easy, under 50 medium, under 70 hard, 70+ very hard |
intent, otherIntents | Main search intent, and any secondary intents |
cpcUsd, competition, competitionLevel | Google Ads cost per click (USD) and advertiser competition (0 to 1, and LOW / MEDIUM / HIGH) |
lowTopOfPageBidUsd, highTopOfPageBidUsd | Top-of-page bid range |
monthlySearches, trend3mPct, trendDirection, peakMonth, dataMonth | Monthly series (oldest first) and the trend worked out from it. trendDirection is rising at +15 % or more over 3 months, falling at −15 % or less, otherwise flat |
avgBacklinksTop10, avgReferringDomainsTop10 | Average backlinks and referring domains of the pages in the top 10 |
wordCount, coreKeyword | Words in the keyword; the main form when it is a close variant of another keyword |
source, seed, depth | The mode, the seed a keyword came from (suggestions and related), and the related-search level |
status, note, charged | ok, or why there is no figure. charged is true only on rows you paid for |
index | Analyse mode: position of the keyword in your list (0-based) |
A run summary is saved as SUMMARY in the run's key-value store. Seeds or keywords that were not looked up are listed, uncharged, and saved in full as NOT_LOOKED_UP.
Rows with no keyword fee
status | What happened |
|---|---|
no_data | No figures for this phrase in this country (analyse mode), or no new keywords for a seed. The lookup fee for that request is still charged. |
invalid_keyword | Over 80 characters, over 10 words, or a symbol that cannot be looked up. |
input_error | A country the database does not cover, a language not available there, or an unknown intent. Nothing is guessed. |
spending_limit | Your "Maximum cost per run" was reached. |
free_plan_limit | Past the free-plan allowance (see below). |
skipped | Five lookups in a row returned nothing, so the run stopped buying more. Check the seeds, country, language and filters. |
throttled, provider_error | The data source was busy or unavailable. Run again later. |
What it costs
| Run | Price (no discount) |
|---|---|
| 300 ideas from 5 seeds, 1 country | $0.62 |
| 1,000 ideas, 1 country | $2.02 |
| 1,000 ideas in each of 5 countries | $10.10 |
| 20 seeds × 50 long-tail suggestions | $2.40 |
| Analyse 5,000 of your keywords | $10.16 |
These assume every keyword has data and passes your filters. On a paid Apify plan the keyword fee is 10 %, 20 % or 30 % lower.
Apify free plan
Every lookup costs us real money at the data source, and free-plan runs earn nothing. So on the Apify free plan this Actor gives one lookup a day with up to 20 keywords in one country, enough to see real data. Everything else comes back as uncharged free_plan_limit rows. Any paid Apify plan has no such limits.
Covered countries
Albania, Algeria, Angola, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahrain, Bangladesh, Belgium, Bolivia, Bosnia and Herzegovina, Brazil, Bulgaria, Burkina Faso, Cambodia, Cameroon, Canada, Chile, Colombia, Costa Rica, Côte d'Ivoire, Croatia, Cyprus, Czechia, Denmark, Ecuador, Egypt, El Salvador, Estonia, Finland, France, Germany, Ghana, Greece, Guatemala, Hungary, India, Indonesia, Ireland, Israel, Italy, Japan, Jordan, Kazakhstan, Kenya, Latvia, Lithuania, Malaysia, Malta, Mexico, Moldova, Monaco, Morocco, Myanmar, Netherlands, New Zealand, Nicaragua, Nigeria, North Macedonia, Norway, Pakistan, Panama, Paraguay, Peru, Philippines, Poland, Portugal, Romania, Saudi Arabia, Senegal, Serbia, Singapore, Slovakia, Slovenia, South Africa, South Korea, Spain, Sri Lanka, Sweden, Switzerland, Thailand, Tunisia, Türkiye, Ukraine, United Arab Emirates, United Kingdom, United States, Uruguay, Venezuela, Vietnam.
Other countries come back as an uncharged input_error row. For Google Ads search volume in any country, use Keyword Search Volume.
Using it from an AI agent or code
The Actor works as a tool through the Apify MCP server and through the Apify API. Send {"keywords": ["..."], "mode": "ideas", "countries": ["US"]}. Every row has a status, so an agent can tell a keyword with no data from one that failed.
Next steps with your keywords
- Exact Google Ads volume and up to 48 months of history: send the keywords to Keyword Search Volume with
datasetIdset to this run's dataset. - Merge, dedupe and filter the results of several runs: Dataset Merge & Dedup Datasets.
- Call any API for each keyword: Bulk HTTP Requests.
Good to know
- The figures come from a licensed SEO data provider's keyword database, built from Google Ads data and search results. You do not need a Google Ads, Semrush or Ahrefs account. Nothing is scraped from those tools.
- Search volumes are rounded and close variants can share one figure, as in Google Keyword Planner. Difficulty and intent are estimates.
- This Actor is not affiliated with, endorsed by or sponsored by Google. "Google" and "Google Ads" are trademarks of Google LLC.
- A run that is moved to another server, or resurrected, continues where it stopped. Nothing is looked up or charged twice.
- Pricing: one
keyword-resultcharge per keyword row with data, onelookupcharge per request the database answers, plus $0.00005 when a run starts. - Code examples (curl, Python, Node.js, n8n) for this and the other Actors: github.com/msalihk/apify-actor-examples.
- Questions or a missing feature: open an issue on the Actor page.
FAQ
Which mode should I use? Start with keyword ideas: it gives the broadest list from all your seeds in one lookup. Use long-tail suggestions when you want phrases that contain your seed word for word, and related searches to explore around a topic.
How is keyword difficulty worked out? From the backlink profiles of the pages ranking in the top 10 now: the stronger they are, the higher the score.
Can I get more than 1,000 ideas? Yes, up to 10,000 per country. Each page of 1,000 is one lookup.
Why did I get fewer keywords than I asked for? The database had no more for those seeds, or your filters dropped the rest. You only pay for what is delivered, plus the lookups.
More from this developer
- Competitor Keywords: every Google keyword a domain or page ranks for, and its organic competitors, $2 per 1,000 rows.
- Domain SEO Overview: organic keywords, estimated traffic and top-10 rankings for thousands of domains, $5 per 1,000 domains.
- Google SERP Rank Tracker: Google positions for your keywords by country and device, with AI Overview checks, $2 per 1,000 result pages.
- Google Trends API: interest over time, by region and related queries for hundreds of keywords, $6 per 1,000 queries.
- Keyword Search Volume: Google Ads search volume, CPC and up to 48 months of trend for a keyword list, $2 per 1,000 keywords.
- Sitemap Extractor: every URL a website lists in its sitemaps, with lastmod, images and hreflang, $0.25 per 1,000 URLs.
- Broken Link Checker: crawl a site and find broken links and images, with the pages they are on.
- Tech Stack Detector: which CMS, ecommerce platform, analytics and hosting a website uses, $1.50 per 1,000 websites.
- Website Screenshot + Change Detection: screenshots of many URLs on desktop and mobile, with visual change detection between runs.
- Dataset Merge & Dedup Datasets: merge, dedupe and filter the results of several runs into one dataset.