Listar competidores
/sites/{siteId}/competitors- Permiso
search:read- Herramienta MCP
competitors
The competitor set with scores and visibility Picked competitors, then suggestions the AI confirmed, then ones not reviewed yet. Dismissed, weak and turned-down suggestions are left out (hidden counts them). Estimates from the keyword index.
Las descripciones vienen del documento OpenAPI y están en inglés.
Parámetros
| Nombre | Dónde | Detalles |
|---|---|---|
siteIdObligatorio | ruta | stringWebsite id, from GET /sites. |
Respuesta
200 · application/json
| Campo | Detalles |
|---|---|
competitors | list of values · required; Picked first, then suggestions the AI confirmed, then ones not reviewed yet |
competitors[].domain | string |
competitors[].kind | string |
competitors[].score | number |
competitors[].review | object |
competitors[].review.status | string |
competitors[].review.sameKind | |
competitors[].review.kind | |
competitors[].review.reason | |
competitors[].drivesGaps | true or false |
competitors[].sharedKeywords | number |
competitors[].brandKeywords | number |
competitors[].theirKeywords | number |
competitors[].ourKeywords | number |
competitors[].aboveUs | number |
competitors[].domainRank | number |
competitors[].category | string |
competitors[].visibility | list of numbers |
competitors[].visibilityMonths | list of strings |
competitors[].dataUpdatedAt | string |
ourVisibility | list of number · required; The website's own estimated monthly search traffic, oldest first |
ourVisibilityMonths | list of string · required; Month (YYYY-MM) of each ourVisibility value |
driving | list of string · required; The competitors gaps, link gap and "best X" lists use: picked, else the three strongest confirmed suggestions |
hidden | integer · required; Suggestions left out: weak, or turned down by the AI |
note | string · required; How to read the numbers |
link | address (URL) · required; The Competitors screen in the app |
Notas
GET /sites/{siteId}/competitors lista los sitios con los que compites: primero los que elegiste y luego los que MonoRanks sugiere porque posicionan por las mismas búsquedas. Una sugerencia sigue siendo sugerencia hasta que alguien la elige.
| Qué | Detalles |
|---|---|
score |
(de 0 a 100) dice cuánto encaja una sugerencia. Las palabras clave compartidas se miden frente al tamaño de las dos listas, así que un sitio gigante que comparte unos cientos de sus millones de palabras clave puntúa bajo. Las palabras clave compartidas que se explican por un nombre de marca no cuentan (brandKeywords). |
review |
es la revisión con IA de una sugerencia frente a lo que trata tu sitio web: status (reviewed o not_reviewed), sameKind (¿es el mismo tipo de negocio o producto?) y un reason breve. Las sugerencias que la IA rechaza se ocultan; hidden las cuenta junto con las débiles. Sin IA, status es not_reviewed y decide la puntuación. |
driving |
(y drivesGaps en cada fila) son los competidores que usan las brechas de palabras clave, la brecha de enlaces y las listas de “los mejores”: los que elegiste; si no elegiste ninguno, las tres sugerencias más fuertes que la IA confirmó; antes de que se revise ninguna, las tres más fuertes por puntuación. |
POST /sites/{siteId}/competitors cambia el conjunto. action es pick (convertir una sugerencia en competidor elegido), dismiss (ocultar desde ahora una sugerencia o un competidor elegido) o add (añadir cualquier dominio como competidor elegido). Elegir o añadir consulta las brechas de palabras clave de ese competidor, una consulta de pago dentro del límite de datos de tu espacio de trabajo. El cambio queda registrado en Activity a nombre del dueño de la clave, y la respuesta es el conjunto actualizado. Errores: bad_action, bad_domain (también para tu propio sitio web, una dirección de prueba reservada o más de 10 competidores elegidos) y not_found cuando pick o dismiss nombra un dominio que no está en el conjunto.
Errores
| Estado | Significado |
|---|---|
401 | Missing, unknown or revoked key. Codes: missing_key, invalid_key. |
403 | The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden. |
404 | Not found. Codes: not_found. |
429 | Too many requests this hour for this key. Codes: rate_limited. |
Petición de ejemplo
curl \
-H "Authorization: Bearer mr_ws_…" \
"https://app.monoranks.com/api/v1/sites/SITE_ID/competitors"const res = await fetch("https://app.monoranks.com/api/v1/sites/SITE_ID/competitors", {
headers: { Authorization: "Bearer mr_ws_…" },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const data = await res.json();import requests
res = requests.get(
"https://app.monoranks.com/api/v1/sites/SITE_ID/competitors",
headers={"Authorization": "Bearer mr_ws_…"},
)
res.raise_for_status()
data = res.json()<?php
$ch = curl_init("https://app.monoranks.com/api/v1/sites/SITE_ID/competitors");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer mr_ws_…"],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);import axios from "axios";
const { data } = await axios.get("https://app.monoranks.com/api/v1/sites/SITE_ID/competitors", { headers: { Authorization: "Bearer mr_ws_…" } });Respuesta de ejemplo
{
"competitors": [
{
"domain": "bikeworld.example",
"kind": "picked",
"score": 78,
"review": {
"status": "not_reviewed",
"sameKind": null,
"kind": null,
"reason": null
},
"drivesGaps": true,
"sharedKeywords": 412,
"brandKeywords": 6,
"theirKeywords": 5810,
"ourKeywords": 1240,
"aboveUs": 188,
"domainRank": 41,
"category": "Shop",
"visibility": [
32800,
35600,
37900,
41600
],
"visibilityMonths": [
"2026-06",
"2026-07",
"2026-08",
"2026-09"
],
"dataUpdatedAt": "2026-10-01T04:20:00.000Z"
},
{
"domain": "cyclehub.example",
"kind": "suggested",
"score": 64,
"review": {
"status": "reviewed",
"sameKind": true,
"kind": "Online bike shop",
"reason": "Sells bikes and parts to riders, like Acme Bikes."
},
"drivesGaps": true,
"sharedKeywords": 412,
"brandKeywords": 6,
"theirKeywords": 5810,
"ourKeywords": 1240,
"aboveUs": 188,
"domainRank": 41,
"category": "Shop",
"visibility": [
32800,
35600,
37900,
41600
],
"visibilityMonths": [
"2026-06",
"2026-07",
"2026-08",
"2026-09"
],
"dataUpdatedAt": "2026-10-01T04:20:00.000Z"
}
],
"ourVisibility": [
12400,
13900,
14800,
15700
],
"ourVisibilityMonths": [
"2026-06",
"2026-07",
"2026-08",
"2026-09"
],
"driving": [
"bikeworld.example"
],
"hidden": 3,
"note": "kind: picked (chosen by a person) or suggested. Suggestions stay suggestions until picked.",
"link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/competitors"
}{
"error": {
"code": "missing_key",
"message": "Send the key as Authorization: Bearer mr_site_…"
}
}{
"error": {
"code": "missing_scope",
"message": "This key does not have the scope this call needs."
}
}{
"error": {
"code": "not_found",
"message": "Website not found."
}
}{
"error": {
"code": "rate_limited",
"message": "More than 1200 requests this hour for this key."
}
}El servidor MCP hace lo mismo con la herramienta competitors.