Competitor Keywords API: Ranked Keywords of Any Domain
Pricing
from $4.00 / 1,000 domains
Competitor Keywords API: Ranked Keywords of Any Domain
Competitor keywords finder and MCP tool: every keyword a domain ranks for on Google (ranked keywords, domain keywords) with position, ranking URL, volume, CPC, difficulty and intent, plus organic traffic. Bulk domains, 94 countries. From $0.002 per keyword, plus per-domain and $0.012 start fees.
Pricing
from $4.00 / 1,000 domains
Rating
0.0
(0)
Developer
PlainRows
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Competitor keyword research in bulk: for any list of websites, get every keyword each one ranks for on Google (up to 1,000 per site), with its position, ranking URL, estimated traffic, search volume, CPC, keyword difficulty and search intent, plus the site's organic traffic, keyword count and position distribution, in 94 countries. The ranked keywords of a domain, as Semrush Organic Research or Ahrefs Organic Keywords show them, in clean JSON or one row per keyword.
Built on a commercial SEO data provider: no scraping of Semrush, Ahrefs or other tools, no accounts, no subscription. You pay per domain with data and per keyword returned, plus $0.012 per run.
Typical uses
- Find the keywords a competitor ranks for, and on which page, to plan your own content.
- Keyword gap by hand: export the ranked keywords of 3 competitors and keep those you don't rank for.
- Spot a site's best traffic keywords and quick wins (positions 4-20 with high volume, using
maxPositionandminSearchVolume). - Check the domain keywords of prospects, partners or acquisition targets in bulk.
- Track ranking keywords over time by scheduling runs.
- Give AI agents (MCP) a competitor keywords tool: one call returns the keywords of a domain with their metrics.
- Need the Google Ads keywords instead? Set
keywordTypetopaid(same price).
What you get for each domain
| Field | Description |
|---|---|
domain | The website analysed (lowercase, without www.) |
found | false when no ranking data exists for the domain (not billed) |
organicTraffic | Estimated monthly visits from Google organic results in the selected country |
organicKeywords | Number of keywords the domain ranks for in the top 100 |
paidTraffic, paidKeywords | Estimated Google Ads traffic and number of keywords with ads |
organicTrafficValueUsd | What that organic traffic would cost in Google Ads* |
organicPositions | Ranking keywords per position bucket: 1, 2-3, 4-10, 11-20, 21-50, 51-100* |
topKeywords | The keywords bringing the most traffic: keyword, position, ranking URL, estimated traffic, search volume, CPC, difficulty, intent* |
topKeywordsType | organic or paid: what topKeywords holds (input keywordType) |
paidTrafficCostUsd | With keywordType: "paid": estimated monthly cost of the domain's Google Ads traffic* |
observedAt | When this run fetched the data (UTC) |
* Filled when topKeywords is 10 or more. With topKeywords: 0 you get the traffic metrics only, at the lowest price. With keywordType: "paid", organicTrafficValueUsd and organicPositions stay null, each top keyword also has adTitle and adDescription, and its position and url are the ad's position and landing page.
Missing values are always null, never guessed.
Input
{"domains": ["apify.com", "https://www.semrush.com/blog/", "moz.com"],"country": "US","languageCode": "","topKeywords": 100,"keywordType": "organic"}
- domains: domains or full URLs, up to 5,000 per run. URLs are reduced to their domain; subdomains other than
wwware kept (blog.example.com). Duplicates are removed for free. - country: two-letter code of one of 94 countries: the US, Canada, the UK and most of Europe, Latin America, Asia-Pacific, the Middle East and Africa (full list in the input form).
- languageCode: optional, defaults to the country's main language. A language the data source doesn't offer for that country stops the run with a clear message; only the $0.012 start fee is charged.
- topKeywords: 10 to 1,000 ranked keywords per domain (those bringing the most traffic first), or 0 for traffic metrics only. Default 100.
- keywordType:
organic(default, SEO keywords) orpaid(Google Ads keywords, with the ad text). Same price per keyword. Run once per type if you want both. - minSearchVolume, maxPosition, excludeKeywords (optional filters): keep only keywords with at least this monthly volume, at this position or better, and without these words (up to 6, e.g. your brand). The data source applies them, so keywords left out are neither returned nor billed. With a filter set,
organicPositions,organicTrafficValueUsdandpaidTrafficCostUsdstaynull(the source would compute them on the kept keywords only).
Output example
Real row from a run on 2026-10-07 (US, topKeywords: 10, first 2 keywords shown):
{"domain": "moz.com","found": true,"country": "US","languageCode": "en","organicTraffic": 43510.31,"organicKeywords": 23045,"paidTraffic": 1.46,"paidKeywords": 1,"organicTrafficValueUsd": 337059.79,"organicPositions": {"pos1": 1207,"pos2to3": 1244,"pos4to10": 5122,"pos11to20": 4983,"pos21to50": 7567,"pos51to100": 2922},"topKeywords": [{"keyword": "seo tools","position": 2,"url": "https://moz.com/free-seo-tools","estimatedTraffic": 4269.41,"searchVolume": 110000,"cpcUsd": 21.79,"keywordDifficulty": 66,"searchIntent": "commercial"},{"keyword": "domain authority checker","position": 1,"url": "https://moz.com/domain-analysis","estimatedTraffic": 3284.7,"searchVolume": 9900,"cpcUsd": 4.64,"keywordDifficulty": 72,"searchIntent": "informational"}],"observedAt": "2026-10-07T12:04:27.655Z","schemaVersion": "1.0"}
Pricing
Pay per result, no subscription. Each run costs $0.012 to start. See the Pricing tab for current prices:
- one event per domain with data: $0.006 (FREE) / $0.005 (BRONZE) / $0.0045 (SILVER) / $0.004 (GOLD);
- one event per top keyword returned: $0.003 (FREE) / $0.002 (BRONZE and above).
Domains without data, duplicates and invalid entries are never billed. Input mistakes cost only the $0.012 start fee. The run never spends more than the maximum cost you set: it returns fewer top keywords, then stops processing domains, before reaching it.
Keywords are only looked up for domains that rank organically (with keywordType: "paid": that run Google Ads), and never more than the domain has: a site with 4 ranking keywords returns (and is billed) 4. Lists where most domains have no data, or only sites with a handful of keywords, stop early with a clear warning in the run log and the summary: the remaining domains are not looked up and not charged, and some small sites may come back without keywords (billed as traffic-only rows).
Free Apify plan: each run analyses up to 2 domains with up to 10 top keywords each, so you can check the output. A paid Apify plan removes these limits.
Use it from code, automations or AI agents
API (one call, results returned directly):
curl -X POST "https://api.apify.com/v2/acts/plainrows~competitor-keywords-api/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"domains": ["apify.com", "moz.com"], "country": "US", "topKeywords": 100}'
n8n, Make, Zapier: use the Apify integration and pick plainrows/competitor-keywords-api as the Actor; map the dataset items to your sheet, CRM or database.
AI agents (MCP): add https://mcp.apify.com?tools=plainrows/competitor-keywords-api to Claude, Cursor or any MCP client. The agent gets a typed tool with the input and output schemas of this page and pays per result.
What this is not
- Traffic figures are estimates of Google organic (and paid) search traffic, not total website visits from all channels, and not analytics data.
- No backlink or "domain authority" metrics: this tool focuses on search traffic and keywords.
- Not affiliated with Google, Ahrefs, Semrush or Similarweb.
Run summary
Each run stores a summary in the key-value store (OUTPUT): domains submitted, found, not found, billed, keywords billed, duplicates removed, invalid entries with the reason, and anything skipped because of the free-plan or budget limit (skippedBudgetLimit) or an early stop (skippedUncoveredCost: domains not looked up; keywordsSkippedUncoveredCost: domains returned without top keywords).
FAQ
How do I check the traffic of a website? Enter the domain (or many, up to 5,000 per run), pick the country and run. Each row gives the estimated monthly Google organic traffic, the number of ranking keywords and, if you ask for them, the top keywords.
Is this the site's total traffic? No: it estimates visits from Google search (organic, and paid separately) in the selected country, not visits from all channels and not analytics data. Use it to compare sites with each other.
Can I check competitors in another country? Yes: 94 countries (full list in the input form). Run once per country you care about.
Which keywords bring a site its traffic? Set topKeywords to 10 to 1,000: you get each keyword with position, ranking URL, estimated traffic, search volume, CPC and difficulty.
Which keywords does a competitor buy on Google Ads?
Set keywordType to paid and topKeywords to 10 to 1,000: each keyword the domain advertises on comes with the ad position, landing page, ad title, ad text, search volume and CPC, and the row gives its estimated monthly ad spend (paidTrafficCostUsd). Domains without ads come back with traffic data only. Same price as organic keywords.
Can I get one row per keyword (Excel, CSV, Google Sheets)?
Yes. In the run's Output tab, open the Ranking keywords view: one row per keyword with its domain, ready to export. From the API, add view=keywords (or unwind=topKeywords) to the dataset items URL, for example https://api.apify.com/v2/datasets/DATASET_ID/items?view=keywords&format=csv. Same data, same price: only the layout changes.
Do I need a Semrush, Ahrefs, SpyFu or Similarweb account? No. The data comes from a commercial SEO data provider; you pay per domain with data, with no subscription.
More PlainRows tools
Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.
- SEO and keywords: Keyword Search Volume, CPC & Difficulty · Keyword Planner Alternative (Bulk Search Volume & CPC) · Bing Keyword Search Volume & CPC · Keyword Ideas Generator · Google Autocomplete & People Also Ask · Google Trends Explorer · Website Organic Traffic & Top Keywords · SEO Competitors & Keyword Gap Finder · Bulk Domain Authority Checker · Backlink Checker · Broken Link Checker · AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode) · Google Maps Rank Tracker (Geo-Grid Local SEO)
- Leads and companies: Google Maps Scraper · Google Maps Email Extractor · Google Maps Businesses Without Website · Yellow Pages Australia Scraper · Website Technology Checker · Website Email Extractor · Contact Details Scraper (Emails, Phones, Socials) · ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby) · Workday Jobs Scraper · Greenhouse Jobs Scraper · Lever Jobs Scraper · Ashby Jobs Scraper · Google Jobs Scraper · Reed.co.uk Jobs Scraper (UK) · jobs.ch & jobup.ch Jobs Scraper (Switzerland) · Arbeitsagentur Jobs Scraper (Germany) · Gupy Jobs Scraper (Brazil) · Catho Jobs Scraper (Brazil) · Vagas.com.br Jobs Scraper (Brazil) · Jobs.cz Scraper (Czech Republic) · Google Ads Scraper (Transparency Center) · Company Registry Lookup (SIRENE, LEI, Brreg) · Public Tenders Search (EU TED & UK)
- E-commerce and travel: Amazon Product Search Scraper · Google Shopping Prices Scraper · Google Hotels Prices Scraper · Google Hotels Scraper · Tripadvisor Reviews Scraper · Trustpilot Reviews Scraper
- Marketplaces and classifieds: AliExpress Scraper · Kleinanzeigen Scraper (Germany) · AutoScout24 Scraper (Cars, Europe) · Kijiji Scraper (Canada) · Marktplaats Scraper (Netherlands) · Property Finder Scraper (UAE) · Redfin Scraper (US Homes for Sale) · Otomoto Scraper (Polish Car Listings) · Otodom Scraper (Poland Property) · Imovirtual Scraper (Portugal Property) · Standvirtual Scraper (Portugal Cars) · Immoweb Scraper (Belgium Property) · Blocket Scraper (Sweden) · FINN.no Scraper (Norway) · coches.net Scraper (Spain Cars) · 2dehands Scraper (Belgium) · Storia Scraper (Romania Property) · Autovit Scraper (Romania Cars) · FINN.no Car Scraper (Norway Cars) · DBA Scraper (Denmark) · Tori.fi Scraper (Finland)
- Content and media: Google News Scraper · YouTube Search Scraper · YouTube Search API (JSON) · YouTube Comments Scraper · Google Images Scraper · Website Screenshot API · Google Maps Reviews Scraper · Google Reviews Scraper · App Store & Google Play Reviews Scraper · App Store & Google Play App Details Scraper · Google Play Reviews Scraper · App Store Reviews Scraper
Support
Found a bug or need a field? Open an issue on this page. Issues are read and answered.