Competitor Keyword Research & Gap - SEO Competitor Analysis
Pricing
from $1.70 / 1,000 per delivered keywords
Competitor Keyword Research & Gap - SEO Competitor Analysis
SEO competitor analysis for any domain: every keyword it ranks for in Google with volume, difficulty, intent, position, ranking URL and traffic value, plus the keyword gap vs your site. Bulk domains in one run. Live native SEO data, no scraping. Semrush & Ahrefs alternative, pay per keyword.
Pricing
from $1.70 / 1,000 per delivered keywords
Rating
0.0
(0)
Developer
David S
Maintained by CommunityActor stats
1
Bookmarked
146
Total users
11
Monthly active users
3 days ago
Last modified
Categories
Share
Competitor Keyword Research & Gap — SEO Competitor Analysis · Semrush / Ahrefs Alternative API
Paste one or many competitor domains → get every keyword each one ranks for in Google, 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 — a content roadmap ranked by opportunity.
Built on live native SEO data straight from Google's index — not a scrape of a third-party SEO tool that breaks the moment a dashboard changes. Pay per keyword: $2 per 1,000 keywords on paid plans, $1.70 on Gold and above. No subscription, no seat, no login. Free Apify plans get a 100-keyword preview of one domain per run.
Built for SEO agencies running instant competitor teardowns, content teams turning gap lists into roadmaps, founders checking what wins rivals organic traffic, and developers / AI agents dropping clean ranked-keyword JSON into a pipeline via Apify MCP.
What does this SEO competitor analysis do?
Two jobs, one actor, any number of domains:
Ranked-keywords mode (default) — list competitor domains, get every keyword each one ranks for in Google organic, with volume, keyword difficulty (0–100), search intent, the exact position it holds, the ranking page, and estimated traffic value. Every row carries competitor_domain, so a 10-domain run is one dataset you can pivot by domain.
Keyword-gap mode — list competitors and your own domain to get the shared keyword universe with both positions side by side, plus a gap_type on every row:
gap_type | meaning | what to do |
|---|---|---|
missing | they rank, you don't appear | net-new content opportunity |
weaker | you rank, but below them | optimize / build links |
stronger | you outrank them | defend, monitor |
tied | same position bracket | push for the edge |
Filter to missing + low difficulty + high volume for a prioritized content roadmap built from real ranking data, not guesswork.
Why use this for competitor keyword research
- Native data, not a scrape — reads ranking data straight from Google's search surface, so runs don't silently die when a third-party SEO dashboard ships a redesign, and there's no third-party account to get rate-limited or banned. If you've been burned by an Apify "Ahrefs/Semrush scraper" that worked for a month then returned empty rows, this is the fix. Zero failed runs in the last 30 days.
- Bulk domains in one run — up to 20 competitor domains per run, one report each, one dataset. Each domain is billed only for the keywords it delivers; one domain failing never costs you the others.
- Difficulty + intent in one pass — keyword difficulty and search intent arrive with the ranking data, no second lookup.
- Pay per keyword, no seat — run a teardown when you're pitching a client or planning a quarter; pay for exactly those keywords, done. No monthly commitment.
- Fast & scriptable — a typical 1,000-keyword report returns in seconds; larger pulls paginate automatically to the 5,000-per-domain cap. Clean JSON over the API and MCP, schedulable for ongoing monitoring.
How to find a competitor's ranked keywords
- Paste one or more competitor domains into
targets(or leave the prefilledahrefs.com). - For a keyword gap, set
mode: "gap"and addcompareToDomain(your site). - Set
maxKeywordsper domain (default 1,000) and, optionally,location/languageand filters. - Click Start — in seconds you get a clean table of ranked keywords.
- Download (JSON, CSV, Excel), then sort by volume, filter by difficulty, or filter
gap_type: missingfor your roadmap.
Ranked keywords for several competitors:
{ "targets": ["ahrefs.com", "semrush.com", "moz.com"], "maxKeywords": 1000 }
Keyword gap vs your own site:
{ "mode": "gap", "targets": ["ahrefs.com"], "compareToDomain": "yourdomain.com", "maxKeywords": 500 }
Page-1-only, easy keywords across a whole competitor set:
{ "targets": ["ahrefs.com", "semrush.com"], "positionTo": 10, "maxKeywordDifficulty": 30, "minVolume": 500 }
Ready-made examples: one click, prefilled input
Each example below is a saved task with the input already filled in. Open it, swap in your own domain, and run.
- Check website ranking keywords — Website Ranking Keywords Checker: enter any domain and see which Google keywords it ranks for, with position, ranking URL, volume, difficulty and traffic value.
- Competitor keyword analysis — Competitor Keyword Analysis — Commercial Intent: a competitor's keywords filtered to commercial and transactional intent, with 100+ monthly searches.
- Keyword gap analysis — Keyword Gap Analysis — Competitor vs Your Site: a content gap analysis listing the keywords a competitor holds in the Google top 20 where your site is missing or ranks lower.
What keyword data you get
One dataset item per ranked keyword:
| Field | Description |
|---|---|
keyword | the search term the domain ranks for |
search_volume | monthly Google searches (location-specific) |
cpc | cost-per-click signal (commercial value) |
competition_level | LOW / MEDIUM / HIGH |
keyword_difficulty | 0–100 ranking difficulty (see coverage note) |
search_intent | informational / commercial / transactional / navigational |
competitor_domain | the domain analyzed (pivot a bulk run on this) |
competitor_rank | exact organic position held |
competitor_url | the page that ranks |
estimated_traffic_value | estimated traffic value of that ranking |
is_featured_snippet | whether it holds the featured snippet |
| Gap mode adds | your_domain / your_rank / your_url (null = you don't rank) + gap_type |
| Always | location, language, content_hash (stable dedup hash per keyword) |
{"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 row (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"}
Note on
keyword_difficultycoverage. Difficulty is densest in major markets (US / UK / DE / …). Some smaller-market or non-English locales have sparse difficulty coverage in the source data and return0for many keywords — a data-availability limit, not a scoring error. Every other field is unaffected; lean onsearch_volume+competitor_rankwhen difficulty is unavailable for your market.
Input parameters
| Field | Type | Default | Notes |
|---|---|---|---|
targets | array | — | competitor domains, up to 20 per run (e.g. ["ahrefs.com", "semrush.com"]) |
target | string | — | legacy single domain; merged into targets if both are set |
mode | enum | ranked | ranked or gap |
compareToDomain | string | — | required in gap mode — your domain |
maxKeywords | int | 1000 | per domain, 1–5,000 (hard cap, so a run can't drain credits) |
location | string | United States | any supported location |
language | string | English | any supported language |
minVolume | int | 0 | filter |
maxKeywordDifficulty | int | 100 | filter (0–100) |
intentFilter | array | [] | subset of the four intents |
positionFrom / positionTo | int | 1 / 100 | rank range |
Full configuration is on the Input tab. Run it from any stack via the Apify API client or the Apify MCP server (mcp.apify.com).
How much does competitor keyword research cost?
You're charged per keyword delivered, on success only — empty results and failed runs cost nothing. $0.002 per keyword on paid plans (Bronze), $0.0018 on Silver and $0.0017 on Gold and above. The free plan preview is billed at $0.003 from your free credits.
| What you run | Keywords delivered | Bronze | Gold+ |
|---|---|---|---|
| Quick competitor peek | 100 | $0.20 | $0.17 |
| Standard competitor report | 1,000 | $2.00 | $1.70 |
| Five competitors, 1,000 each | 5,000 | $10.00 | $8.50 |
| Deep single-domain teardown | 5,000 | $10.00 | $8.50 |
| Keyword-gap (you vs them) | 1,000 | $2.00 | $1.70 |
Free Apify plan: a preview of one domain, up to 100 keywords per run — enough to check the data shape before upgrading. Paid plans unlock up to 5,000 keywords per domain and 20 domains per run.
Compare that to a Semrush/Ahrefs seat (from ~$100+/mo, login required): no seat, no monthly commitment — pay for exactly the keywords you pull.
Competitor Keyword Research vs Ahrefs, Semrush & Moz
| This actor | Ahrefs / Semrush / Moz | Other Apify "SEO scraper" actors | |
|---|---|---|---|
| Data source | live native SEO data | native (SaaS dashboard) | scrape a 3rd-party dashboard (fragile) |
| Access | API + MCP, clean JSON | login + UI | actor |
| Pricing | $2 per 1,000 keywords (paid plans) | seat, ~$100+/mo | varies |
| Difficulty + intent | ✅ on every row, one pass | ✅ | often missing |
| Keyword gap vs your site | ✅ gap_type on every row | ✅ | rarely |
| Bulk domains | ✅ up to 20 per run | ✅ | varies |
| Breaks on dashboard redesign | ❌ no 3rd-party account | n/a | ✅ yes |
Same core job as the SaaS dashboards — the keywords a domain ranks for + the gap vs yours — but pay-per-keyword, as an API, with nothing to break when someone else redesigns a page.
What this actor does not do
- It's not a full SEO suite — no backlinks, audits or dashboards; just clean ranked-keyword and gap data you own as JSON. (For backlinks, see the related Backlink Checker.)
- It doesn't track your own rankings over time — it reports a competitor's ranked keywords and the gap; to monitor where you rank, pair it with a rank checker.
- It doesn't discover competitors for you yet — you name the domains. Organic-competitor discovery is next on the roadmap.
keyword_difficultycoverage is sparse in smaller/non-English markets (returns0) — a source data limit, not a bug.
FAQ
How do I see what keywords a competitor ranks for?
Paste their domain into targets and run. You get every keyword they rank for with volume, difficulty, intent, position and traffic value — no access to their account needed.
Can I analyse several competitors in one run?
Yes — put up to 20 domains in targets. Each one is a separate report, all rows land in one dataset with competitor_domain on every row, and each domain is billed only for what it delivers.
How do I find the keyword gap between two websites?
Set mode: "gap", targets = competitor(s), compareToDomain = your site. Every row shows both positions and a gap_type; filter to missing for net-new opportunities.
Is this a Semrush / Ahrefs alternative?
For the competitor-keyword and keyword-gap job, yes — same data class, pay-per-keyword instead of a monthly seat, as an API/MCP instead of a dashboard.
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. (See the difficulty-coverage note above.)
What does a competitor report cost?
$2.00 for 1,000 keywords on Bronze ($1.70 on Gold and above), $0.20 for a 100-keyword peek. You're never charged for empty or failed runs, and every domain is capped by maxKeywords.
What do I get on the free Apify plan?
A preview: one domain and up to 100 keywords per run, with every column. Upgrade to any paid plan for full reports.
Is it legal to research a competitor's keywords?
Yes. Ranked-keyword data is derived from public search results — the same thing anyone sees on Google. You're analysing which public queries a site appears for, not accessing anything private.
Is this safe for AI agents to run?
Yes. It runs under limited permissions — it only pulls ranked keywords and writes your dataset, never touching the rest of your account, so there's no full-permission approval step. Run it from any agent or IDE via the Apify MCP server.
Legal & compliance
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. Found a bug or need a field? Open a ticket on the Issues tab; code samples are on the API tab.
Related Actors
A natural workflow: pull competitors' ranked keywords here → enrich with volume/CPC in Keyword Metrics → organize into clusters for your content plan.
- Keyword Metrics Pro — Google + Bing search volume, CPC, ideas & intent for the keywords you find.
- AI Keyword Clustering Tool — group them into a topical authority map.
- Google Rank Checker — verify where YOU rank for the keywords you just found (position, who beats you, AI Overview).
- Backlink Checker API — your competitor's backlinks & referring domains.
- AI Brand Visibility Tracker — competitor visibility in ChatGPT, Perplexity & Gemini.
- Website Traffic & Domain Authority — competitor traffic & authority rank in bulk (SEO Similarweb alternative).
SEO keywords
seo competitor analysis, competitor keyword research, competitor keyword analysis, competitor keywords, ranked keywords, see what keywords a site ranks for, keyword gap analysis, content gap analysis, competitor analysis seo, find competitor keywords, bulk competitor keywords, semrush alternative, ahrefs alternative, moz alternative, spyfu alternative, ranked keywords api, seo data api, competitor keyword api, keyword research api, organic competitor analysis, keyword difficulty api, search intent api, pay per keyword seo, mcp seo.
Built by DoesAiKnow.com — no subscription, pay per keyword, API + MCP-ready.
Last reviewed: October 2026.