SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap
Pricing
from $3.00 / 1,000 keywords
SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap
Find the Google keywords any domain or competitor ranks for: position, ranking URL, search volume, CPC, keyword difficulty, intent and traffic, plus organic competitors and the keyword gap between 2-5 domains. No Semrush or Ahrefs needed. $3 per 1,000 keywords + $0.02 per domain; errors free.
Pricing
from $3.00 / 1,000 keywords
Rating
0.0
(0)
Developer
Tenfold Fleet
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
What does SEO Competitor Keywords do?
SEO Competitor Keywords finds the Google keywords any domain or competitor ranks for, with the position, the ranking URL, search volume, CPC, keyword difficulty, search intent and estimated traffic on every row. It also lists the organic competitors of a domain and runs a keyword gap between your site and up to 4 competitors, so you see the keywords they win and you don't.
It works like the "Organic Research", "Organic Competitors" and "Keyword Gap" reports of Semrush or Ahrefs, as an API: no Semrush or Ahrefs subscription needed. Data comes from the DataForSEO Labs Google database (billions of keywords, 94 countries). Run it from the Apify Console, the API, Zapier, Make, n8n or an AI agent through MCP.
Why use it?
- Competitor keyword research: see every keyword a competitor gets traffic from, which page ranks, and how much traffic it brings.
- Keyword gap / content gap: find the keywords 1-4 competitors rank for and your site doesn't rank for at all. Keywords that several competitors share come first.
- Find your real competitors: list the domains that rank for the same keywords as you, with common keywords, average position and their total traffic.
- SEO reporting and rank tracking: export the positions of your own domain with the previous position, new/up/down flags and the featured snippet flag.
- Agencies and AI agents: bulk-analyze up to 50 domains per run and feed the JSON into reports, spreadsheets or LLM workflows.
What data can it extract?
| Field | Description |
|---|---|
keyword | Google keyword the domain ranks for |
position / previousPosition | Organic position now and at the previous SERP update |
rankingUrl / rankingTitle | The page that ranks and its title |
searchVolume | Average monthly Google searches |
etv / trafficCost | Estimated monthly traffic from the keyword and its value in ad spend |
cpc, competition | Google Ads cost per click and competition |
keywordDifficulty | How hard it is to reach the top 10 (0-100) |
intent / secondaryIntents | Informational, navigational, commercial or transactional |
serpFeatures / isFeaturedSnippet | SERP features on the page (people also ask, video, local pack...) and whether the domain holds the featured snippet |
totalRankedKeywords | How many keywords the domain ranks for in total (with your filters) |
competitorDomain, commonKeywords, avgPosition, competitorEtv | Competitors mode: the competing domain, shared keywords, its average position and total traffic |
yourPosition, positions, bestCompetitor, competitorsRanking | Keyword gap mode: your position, every domain's position, the best-ranking competitor and how many competitors rank |
How to find the keywords a competitor ranks for
- Open the Actor and pick a Mode: Ranked keywords, Organic competitors or Keyword gap.
- Enter one or more domains (
example.comor any URL). For a keyword gap, put your domain first, then 1-4 competitors. - Choose the country and language (94 countries; names or codes like
US,GB,dework). - Optional: set Max rows per domain (up to 10,000), Max Google position (10 = first page) and Min monthly search volume.
- Click Start and download the results as JSON, CSV, Excel or HTML.
How much does it cost?
Pay per result, no subscription:
- $3 per 1,000 keywords ($0.003 per ranked-keyword or keyword-gap row)
- $3 per 1,000 competitor rows ($0.003 per competitor)
- $0.02 per domain with data (covers the data provider's fixed fee per lookup)
Example: the top 500 keywords of one competitor cost $1.52. Invalid domains, domains with no data, duplicates and errors are free. Set a max cost per run and the Actor stops there, only buying the data you can pay for.
Free Apify plan: 1 domain and 10 rows per run (keyword gap: your domain vs 1 competitor), because every lookup costs the developer a data fee. Any paid Apify plan gets up to 10,000 rows per domain and 50 domains per run.
Input
{"mode": "keywordGap","domains": ["apify.com", "scrapingbee.com", "brightdata.com"],"location": "United States","language": "English","maxRowsPerDomain": 500,"maxPosition": 20,"minSearchVolume": 100,"gapType": "missing"}
Output
One row per keyword (or competitor). Download it as JSON, CSV, Excel or HTML, or read it through the API.
{"type": "rankedKeyword","domain": "apify.com","keyword": "web scraping tools","position": 3,"previousPosition": 5,"rankingUrl": "https://apify.com/...","searchVolume": 9900,"etv": 1210.5,"cpc": 6.12,"keywordDifficulty": 48,"intent": "commercial","serpFeatures": ["people_also_ask", "video"],"isFeaturedSnippet": false,"totalRankedKeywords": 6953,"location": "United States","language": "English"}
Keyword gap rows add yourPosition (null = you don't rank), positions ({"apify.com": null, "brightdata.com": 5}), rankingUrls, bestCompetitor and competitorsRanking. Rows with an error field are free notes (invalid domain, no data).
Tips
- Rows come highest traffic first, so a small Max rows per domain already gives the keywords that matter.
- Use Max Google position 10 to see only first-page keywords, and Min monthly search volume to skip the long tail.
- Missing gap = content ideas (competitors rank, you don't). Shared gap = keywords you can push up (both rank; compare positions).
- Enter the root domain (
example.com) for the whole site, or a subdomain (blog.example.com) for just that part. - Big runs (many domains with 10,000 rows each) can take a while. If the run's timeout comes close, the Actor stops cleanly: you keep and pay for the rows already found, and the domains not reached are listed as free rows.
FAQ
Do I need a Semrush, Ahrefs or DataForSEO account?
No. The data access is included in the price per result.
How fresh is the data?
Positions come from the DataForSEO Labs Google database, which is refreshed continuously; each row's SERP is usually from the last few weeks. It is an estimate like Semrush or Ahrefs data, not a live Google check.
Which countries are supported?
94 countries, with local languages (for example United States English/Spanish, Canada English/French, Switzerland German/French/Italian).
Why does a domain return no keywords?
Small or new sites may not rank in the top 100 for any keyword the database tracks in that country. Those rows are free; try another country. If 10 domains in a row have no data, the run stops and lists the rest as free rows, because that almost always means the wrong country or language.
Disclaimer
This Actor returns aggregated search-engine statistics about public websites. It does not collect personal data. Keyword metrics are estimates. Not affiliated with Google, Semrush or Ahrefs.