Competitor Keyword Research - See Any Site's Ranked Keywords avatar

Competitor Keyword Research - See Any Site's Ranked Keywords

Pricing

from $2.50 / 1,000 per delivered keywords

Go to Apify Store
Competitor Keyword Research - See Any Site's Ranked Keywords

Competitor Keyword Research - See Any Site's Ranked Keywords

See every keyword any competitor ranks for in Google - volume, difficulty, intent & traffic value - plus the keyword gap vs your own domain. Live native SEO data, no scraping, no broken tools. Semrush & Ahrefs alternative - pay per keyword, no subscription.

Pricing

from $2.50 / 1,000 per delivered keywords

Rating

0.0

(0)

Developer

Dawid S

Dawid S

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Competitor Keyword Research — See Any Site's Ranked Keywords (+ Keyword Gap) · Semrush / Ahrefs Alternative API

Paste any competitor's domain → get every keyword it ranks for in Google, each with search volume, keyword difficulty, search intent, exact ranking position, ranking URL and estimated traffic value. Then flip to keyword-gap mode to see exactly where a competitor ranks and you don't — your content roadmap, ranked by opportunity.

Built on live native SEO data straight from Google's indexnot a scrape of a third-party SEO tool. That's the whole point: tools that scrape Ahrefs/Semrush dashboards break the moment the dashboard changes and risk being shut off. This pulls the data natively, so your runs don't silently die.

Pay per keyword. No subscription. No seat. No login. A full 1,000-keyword competitor teardown costs about the price of a coffee.


⚡ Quick Start — try in 30 seconds

  1. Click Try for free.
  2. Leave the prefilled input (target: "ahrefs.com"), or paste any domain you want to dissect.
  3. Start → in seconds you get a clean table of the keywords that domain ranks for.
{ "target": "ahrefs.com", "maxKeywords": 100 }

Want the gap vs your own site? Add one field:

{ "mode": "gap", "target": "ahrefs.com", "compareToDomain": "yourdomain.com", "maxKeywords": 500 }

🎯 What this actor does

Two jobs, one actor:

Mode A — Ranked keywords (default)

Input a domain → every keyword it ranks for in Google organic, with the full picture per keyword: volume, keyword difficulty (0–100), search intent, the exact position it holds, the page that ranks, and the estimated traffic that keyword sends. Sort/filter to find a competitor's biggest organic assets in minutes.

Mode B — Keyword gap

Input a competitor and your own domain → the shared keyword universe with both domains' positions side by side, plus a gap_type on every row:

gap_typemeaningwhat to do
missingthey rank, you don't appearnet-new content opportunity
weakeryou rank, but below themoptimize / build links
strongeryou outrank themdefend, monitor
tiedsame position bracketpush for the edge

Filter to missing + low difficulty + high volume = a prioritized content roadmap, generated from real ranking data instead of guesswork.


💰 Pricing — pay per keyword, no subscription

You're charged per keyword delivered, on success only. Empty results and failed runs cost nothing. Apify automatically discounts the per-keyword price on higher plans (Bronze → Gold).

What you runKeywords deliveredApprox. cost (Gold)
Quick competitor peek100~$0.25
Standard competitor report1,000~$2.50
Deep teardown3,000~$7.50
Keyword-gap (you vs them)1,000~$2.50

Compare that to a Semrush/Ahrefs seat (subscription, from ~$100+/mo, login required). Here there's no seat and no monthly commitment — run a teardown when you're pitching a client or planning a quarter, pay for exactly those keywords, done.

Cost control: every run is hard-capped (maxKeywords, default 250, max 5,000) so a single run can never run away with your credits.


🆚 How this compares

vs. Ahrefs / Semrush / Moz (the SaaS dashboards)

Same core data — the keywords a domain ranks for + the gap vs yours — but pay-per-scan instead of a monthly seat, delivered as clean JSON over an API (and MCP), ready to drop into a sheet, a pipeline, or an AI agent. No login, no per-seat pricing, no UI to click through.

vs. other Apify "SEO scraper" actors

Most competing actors scrape a third-party SEO tool's dashboard. That's fragile (the scrape breaks when the dashboard's HTML changes), slow, and on shaky terms-of-service ground. This actor reads live native SEO data instead — so it doesn't break when someone else redesigns a page, and there's no third-party account in the loop.

vs. building it yourself on a raw SEO data API

You could wire up a raw data provider — then build pagination, the filter layer, the gap logic, intent + difficulty enrichment, and a stable output schema yourself. This actor is that work, finished: ranked + gap modes, difficulty and intent already on every row, traffic value, content hashing, clean schema, one call.


🛡️ The reliability moat — native data, not a scrape

The single most important thing about this actor: it does not scrape a SaaS SEO tool. It reads ranking data natively from Google's search surface. Practically, that means:

  • Runs don't silently die when a third-party dashboard ships a redesign.
  • No third-party account to get rate-limited or banned.
  • Difficulty + search intent arrive with the ranking data in one pass — no second lookup.

If you've been burned by an Apify "Ahrefs/Semrush scraper" that worked for a month and then started returning empty rows, this is the fix.


📊 What you get — output fields

One dataset item per ranked keyword:

FieldDescription
keywordthe search term the domain ranks for
search_volumemonthly Google searches (location-specific)
cpccost-per-click signal (commercial value)
competition_levelLOW / MEDIUM / HIGH
keyword_difficulty0–100 ranking difficulty (see coverage note below)
search_intentinformational / commercial / transactional / navigational
competitor_domainthe domain analyzed
competitor_rankexact organic position held
competitor_urlthe page that ranks
estimated_traffic_valueestimated traffic value of that ranking
is_featured_snippetwhether it holds the featured snippet
Gap mode adds:
your_domain / your_rank / your_urlyour side of the comparison (your_rank null = you don't rank)
gap_typemissing / weaker / stronger / tied
Always:
location, language, content_hashlocale + a stable dedup hash per keyword

Note on keyword_difficulty coverage. Difficulty data is densest in major markets (US / UK / DE / …). For some smaller-market or non-English locales the underlying SEO data has sparse difficulty coverage and returns 0 for many keywords — that's a data-availability limit of the source, not a scoring error. Every other field (search volume, intent, rank, ranking URL, estimated traffic value) is unaffected and fully populated. Tip: run with the target's native location / language for the most relevant volumes, and lean on search_volume + competitor_rank when difficulty is unavailable for your market.


🚀 Input — what you pass in

FieldTypeDefaultNotes
targetstringrequired. Competitor domain (e.g. ahrefs.com)
modeenumrankedranked or gap
compareToDomainstringrequired in gap mode — your domain
maxKeywordsint2501–5,000
locationstringUnited Statesany supported location
languagestringEnglishany supported language
minVolumeint0filter
maxKeywordDifficultyint100filter (0–100)
intentFilterarray[]subset of the four intents
positionFrom / positionToint1 / 100rank range

📦 Sample output

Ranked mode (target: "ahrefs.com"):

{
"keyword": "keyword generator",
"search_volume": 90,
"competition_level": "LOW",
"keyword_difficulty": 40,
"search_intent": "informational",
"competitor_domain": "ahrefs.com",
"competitor_rank": 1,
"competitor_url": "https://ahrefs.com/keyword-generator",
"estimated_traffic_value": 27.36,
"is_featured_snippet": false,
"location": "United States",
"language": "English",
"content_hash": "a1b2c3d4e5f60718"
}

Gap mode (competitor ahrefs.com vs your moz.com):

{
"keyword": "googlebot",
"search_volume": 550000,
"keyword_difficulty": 26,
"competitor_domain": "ahrefs.com",
"competitor_rank": 8,
"your_domain": "moz.com",
"your_rank": 29,
"gap_type": "weaker",
"location": "United States",
"language": "English"
}

🧭 Who this is for

  • SEO agencies — instant competitor teardowns for pitches and audits, no extra seat.
  • Content teams — a missing + low-difficulty gap list is a ready content roadmap.
  • Founders / marketers — see what's actually winning organic traffic for rivals.
  • Developers / AI agents — clean JSON + MCP; drop ranked-keyword + gap data into any pipeline.

⏱️ Scale & speed

A typical 1,000-keyword report returns in seconds. Larger pulls paginate automatically up to the 5,000-keyword cap. Need ongoing monitoring? Schedule the actor — each run is independent and priced per keyword.


Reads public search-results data only — the same organic rankings anyone sees in Google. No logins, no paywalled data, no third-party SEO-tool accounts. You control the domains and locations you query.


🧰 FAQ

How do I see what keywords a competitor ranks for? Paste their domain as target, run, and you get every keyword they rank for with volume, difficulty, intent, position and traffic value.

How do I find the keyword gap between two websites? Set mode: "gap", target = competitor, compareToDomain = your site. Every row shows both positions and a gap_type. Filter to missing for net-new opportunities.

What is a content gap analysis? Finding the keywords a competitor ranks for that you don't — exactly what gap mode's missing rows give you, prioritized by volume and difficulty.

Is this a Semrush / Ahrefs alternative? For the competitor-keyword and keyword-gap job: yes — same data, pay-per-scan instead of a monthly seat, as an API/MCP instead of a dashboard.

Do I need a subscription? No. You pay per keyword delivered, on success only. No subscription, no seat, no login.

Where does the data come from — is it accurate? Live native SEO data from Google's search surface (not a scraped dashboard). Difficulty and intent come with the ranking data in the same pass.

Does it work for non-US / non-English domains? Yes — set location and language to any supported market.

What does a competitor report cost? About $2.50 for 1,000 keywords on the Gold tier; ~$0.25 for a 100-keyword peek. You're never charged for empty or failed runs.

How do I keep costs predictable? Every run is capped by maxKeywords (default 250, max 5,000), so one run can't drain your credits.


🗺️ Roadmap

Shipped (v1.0): ranked-keyword mode, keyword-gap mode, difficulty + intent + traffic value on every row, location/language, volume/difficulty/intent/position filters, pay-per-keyword.

Coming soon (v0.2): onlyNewSinceLastRun delta feed (only keywords that changed since your last run) · standalone search-intent + difficulty mode · multi-competitor share-of-voice.


🏷️ Keywords

competitor keyword research, competitor keyword analysis, ranked keywords, see what keywords a site ranks for, keyword gap analysis, content gap analysis, competitor analysis seo, find competitor keywords, semrush alternative, ahrefs alternative, moz alternative, spyfu alternative, similarweb alternative, ranked keywords api, seo data api, competitor keyword api, keyword research api, domain keyword research, organic competitor analysis, keyword difficulty api, search intent api, pay per scan seo, no subscription seo tool, mcp seo, seo data api.


🤝 Built by doesaiknow

Part of the doesaiknow competitive-SEO + market-intelligence suite — runs great on its own, even better together:

A natural workflow: pull a competitor's ranked keywords here → enrich with volume/CPC in Keyword Metrics → organize into clusters for your content plan.

No subscription. Pay per scan. API + MCP-ready.