DataForSEO Competitor Gap & Traffic
Find the keywords your rivals rank for and you don't. Compare two domains or a set of URLs with DataForSEO Labs domain and page intersection, list who competes on a keyword set, see which pages and subdomains bring a site its organic traffic, estimate traffic for up to 1,000 domains, and track a site's ranking history month by month.
Connect this API to an AI agent Browse all specs
What you can do with DataForSEO Competitor Gap & Traffic via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| POST | /v3/dataforseo_labs/google/domain_intersection/live |
getDomainIntersection | Find keywords two domains both rank for, or one ranks for and the other doesn't |
| POST | /v3/dataforseo_labs/google/page_intersection/live |
getPageIntersection | Find keywords shared by (or missing from) a set of pages |
| POST | /v3/dataforseo_labs/google/serp_competitors/live |
getSerpCompetitors | List the domains that rank for a set of keywords, with visibility and traffic |
| POST | /v3/dataforseo_labs/google/relevant_pages/live |
getRelevantPages | List a domain's pages that bring the most organic traffic |
| POST | /v3/dataforseo_labs/google/subdomains/live |
getSubdomains | List a domain's subdomains with their rankings and traffic |
| POST | /v3/dataforseo_labs/google/historical_rank_overview/live |
getHistoricalRankOverview | Get a domain's monthly ranking and traffic history |
| POST | /v3/dataforseo_labs/google/bulk_traffic_estimation/live |
getBulkTrafficEstimation | Estimate monthly organic and paid traffic for up to 1,000 domains or pages |
| POST | /v3/dataforseo_labs/google/historical_bulk_traffic_estimation/live |
getHistoricalTrafficEstimation | Get monthly traffic estimates over time for up to 1,000 domains |
| POST | /v3/dataforseo_labs/google/categories_for_domain/live |
getCategoriesForDomain | See which product and service categories a domain ranks in |
| POST | /v3/dataforseo_labs/google/domain_metrics_by_categories/live |
getDomainMetricsByCategories | Find top domains in chosen categories, with traffic metrics |
Authentication
basicAuth
HTTP Basic
DataForSEO uses HTTP basic auth with your API login and API password (not your dashboard password).
How to get a credential
- Sign up at https://app.dataforseo.com/register (pay-as-you-go; new accounts get trial credit).
- Open API Access in the dashboard (https://app.dataforseo.com/api-access).
- Copy the API login (your email) and the API password shown there.
Permissions used
DataForSEO has no scopes: every DataForSEO Labs live call is billed from your balance.
| Access | Operations |
|---|---|
| Billed DataForSEO Labs live calls | getDomainIntersection, getPageIntersection, getSerpCompetitors, getRelevantPages, getSubdomains, getHistoricalRankOverview, getBulkTrafficEstimation, getHistoricalTrafficEstimation, getCategoriesForDomain, getDomainMetricsByCategories |
Common errors
DataForSEO answers HTTP 200 and puts the real result in status_code (20000 = ok) inside the body and each task.
| Code | Meaning | Fix |
|---|---|---|
| 401 / 40100 | Wrong login or API password | Copy both again from API Access. |
| 40200 / 40210 | Balance too low | Top up the account balance. |
| 40203 | Daily cost limit reached | Raise the limit under API Settings in the dashboard. |
| 40501 / 40503 | Invalid field, filter or location | Check field names and use a supported location_name / language_name. |
| 40202 | Per-minute rate limit exceeded | Slow down and retry. |
Store the login and API password as a VX Agents basic-auth credential.
Usage guide
Setup
- Credential: DataForSEO API login and API password (app.dataforseo.com > API Access) as basic auth; not the dashboard password.
- Pin your domain and market:
location_name+language_name(United States+English) or codes (2840+en). - Every call is billed: tell the user how many calls you plan first.
include_clickstream_data: truedoubles the price.
Find a content gap against a competitor
Every body is an array holding one task object: [{"target1": "rival.com", "target2": "mysite.com", "intersections": false, "location_name": "United States", "language_name": "English"}]. Domains go without https:// or www..
getSerpCompetitorswithkeywords(your money keywords) to see who ranks for them.getDomainIntersection:intersections: falsereturns keywordstarget1ranks for andtarget2does not (the gap);truereturns keywords both rank for.- Page level:
getPageIntersectionwithpages: {"1": "https://rival.com/blog/*", "2": "https://other.com/"}(up to 20,*wildcard after a slash) andexclude_pages: ["https://mysite.com/*"];intersection_modeisintersectorunion. getRelevantPagesandgetSubdomainswithtargetto see which pages and subdomains earn a rival its traffic.
Size and track sites
getBulkTrafficEstimationwithtargets(up to 1,000 domains, subdomains or pages) for estimated monthly organic and paid traffic.getHistoricalRankOverview(target) orgetHistoricalTrafficEstimation(targets) withdate_from/date_to(YYYY-MM-DD, from 2020-10-01) for month-by-month trends.getCategoriesForDomain(target) for the Google product/service categories a site ranks in;getDomainMetricsByCategorieswith up to 5category_codes,first_dateandsecond_datefor the top domains in those categories.
Good to know
- Check
status_codein the response and intasks[0]: 20000 means ok, even when HTTP is 200. Results are intasks[0].result. - Lists use
limit(default 100, max 1000) andoffset.filterslook like[["keyword_data.keyword_info.search_volume", ">", 100], "and", ["first_domain_serp_element.etv", ">", 0]](max 8);order_bylike["keyword_data.keyword_info.search_volume,desc"](max 3). item_typesdefaults to["organic", "paid"]. Read-only, but each task costs money.
Source: DataForSEO API v3 documentation (https://docs.dataforseo.com/v3/dataforseo_labs/google/domain_intersection/live/), checked 2026-10-24.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “DataForSEO Competitor Gap & Traffic” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.