SV APIDeveloper Referencev1
All systems operational
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

FieldTypeRequiredDescription
actionstringoptional
analyze Get top 10 competitor URLs ranked for a keyword.
kwstringrequiredKeyword text, 4 to 100 characters.
kstringrequiredAPI 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
successboolean= true
applicationstring= "top-competitors"
actionstring= "analyze"
dataarrayTop competitor URLs ranked for the keyword.
└─linkstringCompetitor URL.
└─rankingintegerSearch ranking position (1 = top result).
└─selfintegerWhether this URL belongs to the queried site. 1 = yes, 0 = no.
metaobject
└─request_idstring
└─duration_msinteger
└─upstream_http_codeinteger
errornull

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
successboolean= false
applicationstring= "top-competitors"
actionstring
datanull
metaobject
└─request_idstring
errorobject
└─codestringError code returned by the API.
└─messagestringHuman-readable error message.
└─fieldstringInput field associated with the error.
└─detailsarrayAdditional error details.
└─apidefinitionsstringPublic 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.