Keyword Difficulty Checker avatar

Keyword Difficulty Checker

Pricing

from $0.50 / 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 $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Group Oject

Group Oject

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours 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 in 60 seconds: get a free SerpApi key (100 SERP lookups/month free), paste it into serpApiKey, add keywords, and run.


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 easyvery 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 0100)

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
keywordsTextstringKeywords 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.