Keyword Research — Ideas, Difficulty & Search Intent avatar

Keyword Research — Ideas, Difficulty & Search Intent

Pricing

from $1.40 / 1,000 keyword results

Go to Apify Store
Keyword Research — Ideas, Difficulty & Search Intent

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ış

Salih Küçükkayış

Maintained by Community

Actor 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"]
}
FieldMeaning
keywordsSeed keywords, or the keywords to analyse. Up to 80 characters and 10 words each. Duplicates are removed.
modeideas (default), suggestions, related or overview (analyse my keywords).
countriesUp to 10 countries: two-letter codes (US, GB, TR) or names. Default US.
languageOptional language code (en, es, de, …). Empty means each country's main language.
maxResultsIdeas, suggestions and related: keywords per country, up to 10,000. Default 300.
maxSeedsHow many of your keywords are used as seeds, up to 200. Default 20.
depthRelated searches only: 1 to 4 levels. Default 2.
minSearchVolume, maxKeywordDifficulty, intentsFilters. Dropped keywords are not charged.
keywordsUrl, datasetId, keywordFieldOther ways to pass keywords, and the name of the column or field that holds them.
maxKeywordsAnalyse 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).

FieldMeaning
searchVolumeAverage monthly searches over the last 12 months
keywordDifficulty, difficultyLevelHow 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, otherIntentsMain search intent, and any secondary intents
cpcUsd, competition, competitionLevelGoogle Ads cost per click (USD) and advertiser competition (0 to 1, and LOW / MEDIUM / HIGH)
lowTopOfPageBidUsd, highTopOfPageBidUsdTop-of-page bid range
monthlySearches, trend3mPct, trendDirection, peakMonth, dataMonthMonthly 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, avgReferringDomainsTop10Average backlinks and referring domains of the pages in the top 10
wordCount, coreKeywordWords in the keyword; the main form when it is a close variant of another keyword
source, seed, depthThe mode, the seed a keyword came from (suggestions and related), and the related-search level
status, note, chargedok, or why there is no figure. charged is true only on rows you paid for
indexAnalyse 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

statusWhat happened
no_dataNo 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_keywordOver 80 characters, over 10 words, or a symbol that cannot be looked up.
input_errorA country the database does not cover, a language not available there, or an unknown intent. Nothing is guessed.
spending_limitYour "Maximum cost per run" was reached.
free_plan_limitPast the free-plan allowance (see below).
skippedFive lookups in a row returned nothing, so the run stopped buying more. Check the seeds, country, language and filters.
throttled, provider_errorThe data source was busy or unavailable. Run again later.

What it costs

RunPrice (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

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-result charge per keyword row with data, one lookup charge 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.