Top Ranking Competitor URLs
Top Competitors
Return the top 10 competitor URLs currently ranking for a keyword — the fast way to see who you are up against.
POSThttps://ai.seovendor.co/api/top-competitors/
Authenticate every request by passing your secret key as
k in the JSON body. Requests are POST with Content-Type: application/json.01Request parameters
| Field | Type | Required | Description |
|---|---|---|---|
| action | string | optional | analyze Get top 10 competitor URLs ranked for a keyword. |
| kw | string | required | Keyword text, 4 to 100 characters. |
| k | string | required | API key sent as k in query string, POST body, JSON body; api_key is also accepted, 11 to 120 characters. |
02Response
Every response uses the standard envelope (success, application, action, data, meta, error). The data field for this endpoint is documented below.
successaction: analyze · HTTP 200
200 response example
{
"success": true,
"application": "top-competitors",
"action": "analyze",
"data": [
{
"link": "string",
"ranking": 0,
"self": 0
}
],
"meta": {
"request_id": "req_3f9a7c2e8b41",
"duration_ms": 1284,
"upstream_http_code": 200
},
"error": null
}Response schema
success
application
action
dataTop competitor URLs ranked for the keyword.
└─linkCompetitor URL.
└─rankingSearch ranking position (1 = top result).
└─selfWhether this URL belongs to the queried site. 1 = yes, 0 = no.
meta
└─request_id
└─duration_ms
└─upstream_http_code
error
errorHTTP 400, 401, 502, 503, or 504
error response example
{
"success": false,
"application": "top-competitors",
"action": "string",
"data": null,
"meta": {
"request_id": "req_3f9a7c2e8b41"
},
"error": {
"code": "invalid_request",
"message": "The kw field is required.",
"field": "kw",
"details": [],
"apidefinitions": "https://ai.seovendor.co/api/top-competitors/definitions"
}
}Response schema
success
application
action
data
meta
└─request_id
error
└─codeError code returned by the API.
└─messageHuman-readable error message.
└─fieldInput field associated with the error.
└─detailsAdditional error details.
└─apidefinitionsPublic API definitions URL.
POST /api/top-competitors/
curl -X POST "https://ai.seovendor.co/api/top-competitors/" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"k": "[API KEY]",
"action": "analyze",
"kw": "white label seo"
}'<?php
$ch = curl_init("https://ai.seovendor.co/api/top-competitors/");
$payload = [
"k" => "[API KEY]",
"action" => "analyze",
"kw" => "white label seo",
];
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Accept: application/json",
],
CURLOPT_POSTFIELDS => json_encode($payload),
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);const response = await fetch("https://ai.seovendor.co/api/top-competitors/", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
},
body: JSON.stringify({
k: "[API KEY]",
action: "analyze",
kw: "white label seo",
})
});
const data = await response.json();
console.log(data);import requests
url = "https://ai.seovendor.co/api/top-competitors/"
payload = {
"k": "[API KEY]",
"action": "analyze",
"kw": "white label seo",
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data)SV API
Base URL
https://ai.seovendor.co/api · All requests are POST · JSON in, JSON out · © 2026 SEO Vendor. Built for agencies since 2004.