Keyword Difficulty Checker avatar

Keyword Difficulty Checker

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Keyword Difficulty Checker

Keyword Difficulty Checker

Estimate SEO keyword difficulty in bulk from live Google SERP signals. Find low-competition keywords, easy-win topics, and SERP risks before writing.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Group Oject

Group Oject

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

0

Monthly active users

15 days ago

Last modified

Share

Estimate SEO keyword difficulty in bulk from live Google SERP signals — and surface your easiest ranking opportunities first.

Drop in a list of keywords and get back a 0–100 difficulty score for each, based on what's actually ranking on Google right now: how many high-authority sites hold the top 10, how optimized their titles are, how many ads and SERP features crowd the page, and how concentrated the domains are.

Setup: supply your SerpApi key in the secret serpApiKey field, add keywords, and run. Provider quotas and charges are separate from Actor event fees.


What it does

For each keyword, the Actor pulls the live Google SERP (via SerpApi) and computes a transparent difficulty estimate from observable signals:

SignalWhat it measures
AuthorityShare of the top 10 held by high-authority domains (Wikipedia, Amazon, Forbes, .gov/.edu, …)
Title optimizationShare of top-10 titles containing your exact keyword
SERP featuresFeatured snippet + People-Also-Ask boxes that push organic results down
AdsNumber of paid results (commercial competition)
Domain concentrationHow few unique domains control the top 10

These combine into a 0–100 difficulty score and a plain-English rating (very easy → very hard) with a recommended action.


Why it's honest

This is a SERP-based estimate, not a backlink-based metric like Ahrefs/SEMrush KD. It answers "how contested and well-optimized is this SERP?" — which is exactly what you can observe without proprietary link data. Every weight is in plain code in src/difficulty.ts:

difficulty = authority*0.35 + titleOptimization*0.25 + serpFeatures*0.15
+ ads*0.15 + domainConcentration*0.10 (clamped 0–100)

No black box. Tune the weights to your niche if you want.


Who it's for

  • Content & SEO teams — prioritize the keywords you can actually rank for.
  • Bloggers & affiliates — find low-competition "easy win" topics.
  • Agencies — bulk-qualify a client's keyword list before committing hours.
  • PPC marketers — gauge commercial competition (ad density) per term.

  • Easy-win keyword finder - sort large keyword lists by low difficulty and clear recommended action.
  • Affiliate keyword qualification - check buyer-intent keywords before writing reviews or comparison pages.
  • SaaS content prioritization - compare solution, alternative, and "best software" SERPs.
  • Local SEO difficulty checks - estimate competition for city + service keywords.
  • eCommerce category planning - score product, category, and modifier keywords before building pages.
  • Agency keyword audits - turn client keyword exports into a transparent opportunity report.

Input

FieldTypeDefaultDescription
keywordsstring[]—Keywords to check
keywordsTextstring—Keywords as text (one per line / comma-separated)
serpApiKeystring (secret)—Required. Free key from serpapi.com
geostring"US"Google country code
languagestring"en"Language code
maxKeywordsinteger100Max keywords to process
requestDelayMsinteger500Delay between lookups
maxConcurrencyinteger3Parallel lookups

One SERP lookup is consumed per keyword.

Example input

{
"keywords": ["best coffee maker", "ai seo tools", "how to start a blog"],
"geo": "US",
"language": "en",
"serpApiKey": "@SERPAPI_KEY"
}

More in examples/.


Output

One dataset row per keyword:

{
"keyword": "ai seo tools",
"difficultyScore": 64,
"difficultyLabel": "hard",
"authorityScore": 70,
"titleOptimizationScore": 80,
"serpFeatureScore": 50,
"adsScore": 100,
"domainConcentrationScore": 10,
"highAuthorityCount": 7,
"exactTitleMatches": 8,
"uniqueDomains": 9,
"adsCount": 4,
"hasFeaturedSnippet": true,
"peopleAlsoAskCount": 4,
"topDomains": ["hubspot.com", "semrush.com", "..."],
"recommendedAction": "Hard — only with strong domain authority and link building.",
"source": "serpapi-google",
"error": null
}

Key-value store outputs

  • EASY_WINS — your lowest-difficulty keywords (the money output)
  • SUMMARY — counts by rating, average difficulty, easiest + hardest
  • ERRORS — any failed lookups

Limitations & honesty

  • This is a SERP-signal estimate, not a backlink-authority score. Treat it as directional.
  • Results vary by geo and language — a keyword can be easy in one market, hard in another.
  • The authority-domain list is curated + TLD heuristics (.gov/.edu); it won't recognize every strong niche site.
  • One SerpApi lookup per keyword — mind your monthly quota on big lists.

A natural workflow: discover (Autocomplete) → qualify (this) → prioritize (Trends) → schedule (Calendar).


Changelog

See CHANGELOG.md.

Pricing and billing

Base result price checked September 14, 2026: $1.00 per 1,000 dataset items ($0.001 each). 100 result items cost $0.10 in result fees.

The separate Actor start event is $0.00005 per billable start unit, with one unit per GB of configured memory and a minimum of one. It applies even when a run returns no results.

Each keyword report is a dataset item. Scores are heuristic estimates, not a ranking guarantee. SerpApi credentials and any provider charges are separate.

The live Pricing tab is authoritative for current rates, tier discounts and any separately charged usage. Set a maximum run charge and inspect a small sample before scaling. Charges from an external provider, where used, are not controlled by the Apify run-charge limit.