Competitors
Page Intersection
Find keywords where specific pages rank in the same search results.
POST
from $0.02/call/v1/seo/competitors/pagesUsage
const res = await fetch('https://api.yepapi.com/v1/seo/competitors/pages', {
method: 'POST',
headers: {
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
pages: {
'1': 'stripe.com/payments',
'2': 'square.com/payments',
},
location_code: 2840,
language: 'en',
limit: 100,
}),
});
const { data } = await res.json();
console.log(data.keywords);curl -X POST https://api.yepapi.com/v1/seo/competitors/pages \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pages": {"1": "stripe.com/payments", "2": "square.com/payments"}, "location_code": 2840, "limit": 100}'Request Body
| Parameter | Type | Required | Description | Default |
|---|---|---|---|---|
pages | object | Yes | Numbered keys ("1", "2", etc.) mapping to page URLs. Up to 20. | — |
location_code | number | No | Target country code. See Location Codes. | 2840 |
language | string | No | ISO language code | "en" |
limit | number | No | Max keywords to return | 100 |
Info
Pages support wildcard patterns like stripe.com/blog/* to match all URLs under a path.
Response
{
"ok": true,
"data": {
"keywords": [
{
"keyword": "payment processing api",
"volume": 2400,
"cpc": 18.5,
"competition": 0.82,
"difficulty": 68,
"intent": "commercial",
"pages": [
{
"url": "https://stripe.com/payments",
"position": 2,
"type": "organic",
"etv": 650.0
},
{
"url": "https://square.com/payments",
"position": 5,
"type": "organic",
"etv": 180.0
}
]
}
]
}
}Response Fields
| Field | Type | Description |
|---|---|---|
ok | boolean | Whether the request succeeded |
data.keywords | array | List of keywords where the specified pages intersect in search results |
data.keywords[].keyword | string | The keyword |
data.keywords[].volume | number | Monthly search volume |
data.keywords[].cpc | number | Average cost per click (USD) |
data.keywords[].competition | number | Competition level (0-1) |
data.keywords[].difficulty | number | Keyword difficulty score (0-100) |
data.keywords[].intent | string | Search intent (informational, navigational, commercial, transactional) |
data.keywords[].pages | array | Ranking data for each page that ranks for this keyword |
data.keywords[].pages[].url | string | The ranking page URL |
data.keywords[].pages[].position | number | SERP position for this page |
data.keywords[].pages[].type | string | Result type (e.g. organic) |
data.keywords[].pages[].etv | number | Estimated traffic value for this page (USD) |