SignalSumo

Referencia API

Integre los datos SEO de SignalSumo directamente en sus propias herramientas, paneles y flujos de trabajo.

Pro Agencia El acceso a la API está disponible en los planes Pro y Agency

Inicio rápido

Tres pasos para su primera respuesta.

1. Crear una clave API

En un plan Pro o Agency, genere una clave en Claves API y cópiela — se muestra solo una vez.

2. Verificar la conexión

curl -H "Authorization: Bearer ss_live_your_key_here" \
     "https://signalsumo.com/api/v1/usage"

A 200 respuesta con su plan y llamadas restantes significa que está conectado.

3. Realizar su primera llamada de datos

curl -X POST \
     -H "Authorization: Bearer ss_live_your_key_here" \
     -H "Content-Type: application/json" \
     -d '{"keyword":"seo audit tool","limit":5}' \
     "https://signalsumo.com/api/v1/keyword-research"
Eso es todo. Cada endpoint usa el mismo Authorization: Bearer encabezado y devuelve el mismo sobre JSON — explora los endpoints a continuación para ver parámetros y campos de respuesta.

Resumen

Todos los endpoints de la API se sirven bajo:

https://signalsumo.com/api/v1/

Las solicitudes y respuestas usan JSON. Cada respuesta sigue el mismo sobre:

{
  "success": true,
  "data":    { ... },
  "meta":    { "timestamp": "2026-06-26T10:00:00+00:00" }
}

Los errores siguen la misma estructura con success: false y un error objeto en lugar de data.

Los endpoints se dividen en dos grupos, y la diferencia es lo que le cuesta:

  • Endpoints de investigación — /backlinks, /keyword-research, /site-audit — fetch fresh data from outside SignalSumo. They draw feature quota or credits. See Planes y facturación.
  • Endpoints de sus datos — everything under /rank, /gsc y /ai-visibility — read what your account has already collected. They are plain database reads: they cost sin créditos ni cuota de funciones, y nunca se rechazan por superar el límite mensual.
Los puntos finales de datos son gratuitos en créditos y cuota de funciones, pero cada llamada sigue siendo registrado en su total mensual de llamadas API — and that total is what gates the research endpoints. A long exploratory session can therefore use up the allowance your billed calls need. This applies equally to the Conector MCP, que funciona en el mismo medidor.

Autenticación

Pase su clave API en el Authorization encabezado en cada solicitud:

Authorization: Bearer ss_live_your_key_here

Alternativamente, puede pasarlo como parámetro de consulta (no recomendado para producción):

GET /api/v1/usage?api_key=ss_live_your_key_here
Genera y gestiona tus claves API en signalsumo.com/api-keys. Each key is shown solo una vez en el momento de la creación — guárdalo de forma segura.

El Authorization: Bearer el encabezado es el método recomendado. La API también envía encabezados CORS permisivos, por lo que puede llamarse directamente desde herramientas basadas en navegador. Mantén las claves secretas en el servidor en producción.

Planes y facturación

El acceso a la API está disponible en los Pro y Agencia planes. Dos medidores independientes regulan el uso — una llamada solo se sirve cuando ambos lo permiten.

1. Llamadas API mensuales

Cada solicitud (incluidos los aciertos de caché y los errores que llegan a un endpoint) cuenta como una llamada API.

PlanLlamadas API mensualesRestablecimientos
Pro201.º de cada mes
Agencia1001.º de cada mes

Superar esto devuelve HTTP 429 (RATE_LIMITED) con un resets_at campo en meta. Verifique su límite en vivo y uso en cualquier momento a través de GET /usage.

2. Cuota por característica y créditos

Más allá del contador de llamadas, los puntos finales de datos extraen cada uno de su propia cuota mensual de característica (la misma asignación que usa su panel de control conectado). Cómo se comporta cada uno cuando esa cuota se agota:

Punto finalCuando la cuota de característica se agota
/investigación-palabras-claveDevuelve 429 QUOTA_EXCEEDED. Nunca gasta créditos — seguro para bucle.
/backlinksRecurre a 1 crédito por solicitud. A profundo consulta (page > 1 o limit > 100) always costs 1 credit. No credits → 402 PAYMENT_REQUIRED.
/site-auditDevuelve 429 QUOTA_EXCEEDED cuando se agota el recuento mensual de rastreo o el presupuesto de páginas rotativo.
Los aciertos de caché están libres de cuota de característica. Los resultados se almacenan en caché y se comparten con su panel, por lo que un dominio o palabra clave ya consultado recientemente se devuelve al instante, marcado "cached": true en meta, y no consume cuota de funciones ni créditos (sigue contando como una llamada API).

3. Solicitudes por minuto

Separado de los contadores mensuales, su plan establece cuántas solicitudes por minuto puede realizar. Esto limita un bucle descontrolado o una clave filtrada a algo recuperable — una asignación mensual no dice nada sobre gastar todo en una hora.

PlanSolicitudes por minuto
Pro20
Agencia60

Cada endpoint cuenta por separado, por lo que trabajar con su asignación de backlinks nunca le bloquea la investigación de palabras clave. Superarla devuelve 429 con retry_after (segundos) y limit en meta. Las solicitudes rechazadas no se contabilizan, por lo que esperar retry_after siempre lo borra.

Las solicitudes idénticas se responden una sola vez. Si varios de tus requests hacen la misma pregunta al mismo tiempo, se recupera una y el resto recibe ese mismo resultado — se cobra una sola vez, no por cada uno. Si la recuperación sigue en curso cuando llega la tuya, obtienes 409 ALREADY_RUNNING; reintente en unos segundos y será un acierto de caché.

Ubicaciones y lenguajes

/keyword-research acepta un location_code y language_code para localizar resultados. Ambos son opcionales — los valores predeterminados son Estados Unidos (2840) y Inglés (en).

código_ubicación

Un código de mercado numérico. Valores comunes:

CódigoMercadoCódigoMercado
2840Estados Unidos2276Alemania
2826Reino Unido2250Francia
2124Canadá2724España
2036Australia2380Italia
2356India2528Países Bajos
2392Japón2076Brasil

Se admiten más de 90 mercados. Un código no reconocido devuelve 422 UNSUPPORTED_LOCATION en lugar de volver a los Estados Unidos — que se le facture por datos estadounidenses que no solicitó es peor que que le indiquen que el código es incorrecto. Llame GET /api/v1/keyword-research/locations para la lista completa.

código_idioma

Un código de idioma de dos letras. Valores admitidos:

CódigoIdiomaCódigoIdioma
enInglésptPortugués
esEspañolnlHolandés
frFrancésruRuso
deAlemánjaJaponés
itItalianozhChino
Solo se admiten los idiomas enumerados arriba. Cualquier otro language_code recurre a Inglés en lugar de devolver un error — así que verifique el código si los resultados aparecen inesperadamente en inglés.

Códigos de error

HTTPcódigoSignificado
400BAD_REQUESTSintaxis de solicitud malformada
401UNAUTHORIZEDClave API faltante o no válida
403FORBIDDENAcceso API no disponible en su plan (se requiere Pro o Agencia)
404NOT_FOUNDEndpoint o recurso no encontrado
402PAYMENT_REQUIREDCuota de la función agotada y no quedan créditos (backlinks)
422VALIDATION_ERRORParámetro requerido faltante o valor no válido
409ALREADY_RUNNINGLa misma solicitud ya se está obteniendo para su cuenta — vuelva a intentarlo en breve y será un acierto de caché. No se cobró nada
429RATE_LIMITED / QUOTA_EXCEEDEDLímite mensual de llamadas, ritmo por minuto o cuota de función alcanzada — vea resets_at o retry_after en meta
502UPSTREAM_ERRORNo se devolvieron datos del proveedor de datos ascendente
500SERVER_ERRORError interno — seguro de reintentar

MCP y clientes LLM

Si su objetivo es permitir que un asistente como Claude lea estos datos de forma conversacional, no necesita escribir un cliente. SignalSumo habla el Protocolo de Contexto del Modelo, que expone los endpoints a continuación como herramientas que un LLM puede invocar directamente.

RutaAutenticaciónIdeal para
Conector alojadoOAuth 2.1 — no key to copyClaude y otros clientes MCP. No hay nada que instalar, siempre actualizado.
@signalsumo/mcp en npmClave API en la configuración del clienteInstalaciones locales, configuraciones autoalojadas o ejecución en su propio entorno.
Esta API RESTAuthorization: BearerSus propios scripts, paneles y integraciones de back-end.

All three read the same data through the same endpoints and the same plan limits — they differ only in how the caller authenticates. The npm package uses slightly different tool names from the hosted connector; its README is the reference for those. Source: github.com/signalsumo/mcp.

El acceso MCP se rige por su propia bandera de plan, separada del acceso a la API REST. Consulte tu plan si un cliente se autentica pero cada llamada de herramienta es rechazada.

GET /api/v1/usage

GET /api/v1/usage

Devuelve el uso de tu cuota API para el mes calendario actual.

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/usage"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "plan": "agency",
    "api_calls_used": 42,
    "api_calls_limit": 100,
    "unlimited": false,
    "resets_at": "2026-08-01"
  },
  "meta": {
    "timestamp": "2026-06-26T10:00:00+00:00",
    "key_name": "Production App"
  }
}
GET /api/v1/backlinks?domain={domain}

Devuelve el perfil de backlinks de un dominio: un resumen overview, distribución insights, y una lista enriquecida de individual backlinks. Los resultados se almacenan en caché y se comparten con su panel (Pro: 2 días, Agencia: 7 días); una coincidencia en caché se marca "cached": true y no consume cuota de funciones.

Estos son los mismos datos que el Comprobador de backlinks shows in the app, and the cache is shared — a domain you have already looked at there returns instantly here, free.

Una solicitud estándar consume tu cuota mensual de búsqueda de backlinks (luego 1 crédito si eso está agotado). Un profundo solicitud — page > 1 o limit > 100 — siempre cuesta 1 crédito. Ver Planes y facturación.

Parámetros de consulta

ParámetroTipoObligatorioDescripción
domaincadenaSíDominio raíz, p. example.com (también se acepta una URL completa y se normaliza)
páginaenteroNoNúmero de página, por defecto 1
limitenteroNoResultados por página, 1–200, predeterminado 100

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/backlinks?domain=example.com&limit=2"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "domain": "example.com",
    "total_backlinks": 48210,
    "referring_domains": 1824,
    "page": 1,
    "limit": 2,
    "overview": {
      "domain_rank": 71,
      "total_backlinks": 48210,
      "referring_domains": 1824,
      "referring_domains_nofollow": 640,
      "referring_main_domains": 1610,
      "referring_pages": 39044,
      "referring_ips": 1502,
      "referring_subnets": 1210,
      "dofollow_backlinks": 1184,
      "broken_backlinks": 220,
      "broken_pages": 96,
      "spam_score": 8,
      "first_seen": "2018-05-11 09:20:00",
      "lost_date": null
    },
    "insights": {
      "referring_links_types":          { "anchor": 30140, "image": 9800 },
      "referring_links_attributes":     { "noopener": 12000, "nofollow": 8400 },
      "referring_links_platform_types": { "blogs": 900, "cms": 640, "news": 210 },
      "referring_links_tld":            { "com": 1200, "org": 180 },
      "referring_links_countries":      { "US": 800, "GB": 210 },
      "referring_subnets": 1210,
      "referring_main_domains": 1610
    },
    "backlinks": [
      {
        "domain_from": "blog.example-news.com",
        "url_from": "https://blog.example-news.com/best-seo-tools",
        "url_to": "https://example.com/",
        "anchor": "SignalSumo",
        "dofollow": 1,
        "spam_score": 4,
        "first_seen": "2021-03-10 12:00:00",
        "last_seen": "2026-06-20 04:00:00",
        "semantic_location": "article",
        "platform_type": "blogs",
        "country": "US",
        "is_broken": 0,
        "domain_from_rank": 62,
        "page_from_rank": 41,
        "is_lost": 0,
        "lost_date": null,
        "is_new": 0,
        "item_type": "anchor",
        "page_from_title": "The Best SEO Tools in 2026",
        "page_from_status_code": 200,
        "url_to_status_code": 200,
        "domain_from_ip": "192.0.2.10",
        "tld_from": "com",
        "links_count": 2,
        "is_indirect_link": 0,
        "url_from_https": 1,
        "attributes": ["noopener"],
        "text_pre": "we recommend",
        "text_post": "for site audits",
        "kw_top3": 4,
        "kw_top10": 12,
        "kw_top100": 88
      }
    ]
  },
  "meta": { "timestamp": "2026-06-26T10:00:00+00:00", "cached": false }
}

Campos de backlinks

CampoDescripción
domain_from / url_fromEl sitio enlazante y la página exacta donde está el enlace
url_toLa página en tu dominio a la que se enlaza
anchorTexto ancla del enlace
dofollow1 = dofollow, 0 = nofollow
spam_scorePuntuación de spam de la página enlazante (0–100)
domain_from_rank / page_from_rankAutoridad del dominio / página enlazante, normalizada 0–100
is_new / is_lost / is_brokenBanderas del ciclo de vida del enlace (1/0)
first_seen / last_seen / lost_dateCuándo se vio el enlace por primera vez, la última vez y (si corresponde) se perdió
platform_type / country / tld_fromPlataforma, país y TLD del sitio enlazante
item_typeFormato del enlace: anchor, image, redirect, …
page_from_status_code / url_to_status_codeEstado HTTP de la página enlazante / la página enlazada
attributesAtributos rel del enlace, p. ej. ["noopener","nofollow"]
kw_top3 / kw_top10 / kw_top100Palabras clave para las que la página enlazante se posiciona en los top 3 / 10 / 100

POST /api/v1/keyword-research

POST /api/v1/keyword-research

Devuelve un conjunto completo de métricas para una palabra clave semilla: volumen de búsqueda, CPC, competencia, dificultad, intención de búsqueda, tendencia de volumen de 12 meses, características SERP y más, además de una lista clasificada de palabras clave relacionadas con los mismos campos. Sincrónico: responde de inmediato.

Estas son las métricas que Herramienta de investigación de palabras clave se muestra. Una vez que haya seleccionado las palabras clave que vale la pena perseguir, el Rank Tracker follows their positions daily — and /rank/keywords lee esas posiciones de vuelta, gratis.

Este endpoint consume su cuota mensual de búsquedas de palabras clave y nunca consume créditos: una vez que se agota la cuota, devuelve 429 QUOTA_EXCEEDED, por lo que es seguro llamarlo en un bucle. Las búsquedas recientes se sirven desde la caché (marcadas "cached": true) sin costo de cuota.

Cuerpo de la solicitud (JSON)

CampoTipoObligatorioDescripción
keywordcadenaSíPalabra clave semilla, máx. 200 caracteres
código_ubicaciónenteroNoCódigo de ubicación, por defecto 2840 (Estados Unidos)
código_idiomacadenaNoCódigo de idioma, por defecto en
limitenteroNoMáximo de palabras clave relacionadas devueltas, 1–100, por defecto 10

Solicitud de ejemplo

curl -X POST \
     -H "Authorization: Bearer ss_live_xxxx" \
     -H "Content-Type: application/json" \
     -d '{"keyword":"seo audit tool","limit":5}' \
     "https://signalsumo.com/api/v1/keyword-research"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "keyword": "seo audit tool",
    "location_code": 2840,
    "language_code": "en",
    "total_count": 80,
    "overview": {
      "search_volume": 2900,
      "cpc": 19.07,
      "competition": 0.11,
      "competition_level": "LOW",
      "difficulty": 77,
      "intent": ["Commercial"],
      "trend": [ { "y": 2026, "m": 5, "v": 2400 }, { "y": 2026, "m": 6, "v": 1600 } ],
      "serp_features": ["organic"],
      "growth": { "m": -33, "q": -16, "y": -64 },
      "bid_low": 4.72,
      "bid_high": 19.10,
      "avg_backlinks": 5087,
      "avg_ref_domains": 970,
      "comp_domain_rank": 486,
      "se_results": 41000000
    },
    "related_keywords": [
      {
        "keyword": "free seo audit tool",
        "search_volume": 1900,
        "cpc": 3.10,
        "competition": 0.68,
        "competition_level": "MEDIUM",
        "difficulty": 54,
        "intent": ["Commercial", "Transactional"],
        "trend": [ { "y": 2026, "m": 6, "v": 1900 } ],
        "serp_features": ["organic", "people_also_ask"],
        "growth": { "m": 4, "q": -2, "y": 11 },
        "bid_low": 1.20,
        "bid_high": 4.90,
        "avg_backlinks": 210,
        "avg_ref_domains": 88,
        "comp_domain_rank": 402,
        "se_results": 12000000,
        "related": ["website audit tool", "seo checker free"],
        "match_bucket": "similar"
      }
    ]
  },
  "meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}

Campos de palabra clave

El overview (palabra clave inicial) y cada related_keywords fila comparte estos campos. Cualquier campo puede ser null cuando los datos ascendentes no están disponibles.

CampoDescripción
search_volumeBúsquedas mensuales promedio
cpcCosto promedio por clic (USD)
competitionCompetencia pagada, 0–1
nivel_de_competenciaLOW / MEDIUM / HIGH
dificultadDificultad de posicionamiento orgánico, 0–100 (null si aún no se ha calculado)
intenciónIntención de búsqueda, p. ["Commercial"]
tendenciaHistorial de volumen de 12 meses — { y, m, v } por mes
crecimientoCambio de volumen %: m mensual, q trimestral, y anual
características_serpTipos de características SERP presentes, p. ["organic","people_also_ask"]
bid_low / bid_highRango de puja superior de página (USD)
avg_backlinks / avg_ref_domainsPromedio de backlinks / dominios de referencia de las páginas que aparecen ahora
comp_domain_rankAutoridad promedio (0–1000) de las páginas que aparecen ahora
se_resultsTotal de resultados competidores para la palabra clave
relacionadoHasta 8 subpalabras clave relacionadas (solo filas relacionadas)
match_bucketRelación con la semilla: similar, related, o question

POST /api/v1/site-audit

POST /api/v1/site-audit

Ejecuta el mismo rastreo que el Herramienta de auditoría web — broken links, redirect chains, missing titles and canonical problems, page by page.

Las auditorías de sitio son asíncrono. Este endpoint devuelve un job_id immediately. Poll GET /api/v1/jobs/{job_id} para resultados. Tiempo típico de rastreo: 1–5 minutos.

Cuerpo de la solicitud (JSON)

CampoTipoObligatorioDescripción
urlcadenaSíURL completa para rastrear, e.g. https://example.com
max_pagesenteroNoMáximo de páginas a rastrear (por defecto 100). Limitado por el límite de rastreo por crawl de su plan y su presupuesto mensual de páginas restantes.
profundidadenteroNoProfundidad de rastreo, 1–5, predeterminado 3

Solicitud de ejemplo

curl -X POST \
     -H "Authorization: Bearer ss_live_xxxx" \
     -H "Content-Type: application/json" \
     -d '{"url":"https://example.com","max_pages":50}' \
     "https://signalsumo.com/api/v1/site-audit"

Respuesta (202 Accepted)

{
  "success": true,
  "job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
  "status": "queued",
  "poll": "https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
  "meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}

GET /api/v1/jobs/{job_id}

GET /api/v1/jobs/{job_id}

Consulte el estado de un trabajo asíncrono. Consulte cada 10–15 segundos hasta status es complete o failed.

Valores de estado

EstadoSignificado
en colaTrabajo aceptado, aún no iniciado
en ejecuciónRastreo en progreso — verifique progress (0–100)
completoHecho — data el campo contiene resultados
fallidoRastreo fallido — error el campo tiene la razón

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5"

Respuesta — En proceso

{
  "success": true,
  "data": {
    "job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
    "endpoint": "site-audit",
    "status": "running",
    "progress": 42,
    "created_at": "2026-06-26 10:00:00",
    "updated_at": "2026-06-26 10:01:30",
    "completed_at": null
  },
  "meta": { "timestamp": "2026-06-26T10:01:30+00:00" }
}

Respuesta — Completa

{
  "success": true,
  "data": {
    "job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
    "endpoint": "site-audit",
    "status": "complete",
    "progress": 100,
    "created_at": "2026-06-26 10:00:00",
    "updated_at": "2026-06-26 10:03:18",
    "completed_at": "2026-06-26 10:03:18",
    "data": {
      "audit_id": "AUDIT-A1B2C3-4567",
      "domain": "https://example.com",
      "pages_crawled": 47,
      "total_score": 78,
      "geo_score": 71,
      "issues": { "critical": 3, "warning": 12, "total": 15 },
      "report_url": "https://signalsumo.com/report?id=AUDIT-A1B2C3-4567"
    }
  },
  "meta": { "timestamp": "2026-06-26T10:03:18+00:00" }
}

GET /api/v1/rank/keywords

GET /api/v1/rank/keywords

Todas las palabras clave que tu cuenta rastrea, cada una con el mercado y dispositivo en que se midió y su posición más reciente. Estos son los datos detrás del Rank Tracker — no crawl is triggered and nothing is charged.

country, language y device are returned on every row on purpose. A position is meaningless without them — comparing a desktop US ranking against a mobile UK one produces a decline that never happened.

Parámetros de consulta

ParámetroTipoObligatorioDescripción
project_identeroNoRestringir a un proyecto. Omitir para devolver palabras clave de todos los proyectos que posees.
limitenteroNo1–500, default 100

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/rank/keywords?limit=1"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "keywords": [
      {
        "keyword_id": 4821,
        "keyword": "seo audit tool",
        "difficulty": 62,
        "search_volume": 8100,
        "cpc": 12.4,
        "country": "US",
        "language": "en",
        "device": "desktop",
        "status": "active",
        "project_id": 17,
        "project_domain": "example.com",
        "project_name": "Example Site",
        "last_checked": "2026-08-19",
        "current_position": 8,
        "previous_position": 11,
        "position_change": 3,
        "landing_page": "https://example.com/tools/audit",
        "gsc_clicks": 143,
        "gsc_impressions": 5210,
        "gsc_ctr": 2.74,
        "local_pack": false,
        "featured_snippet": true,
        "ai_overview": false
      }
    ],
    "count": 1
  },
  "meta": { "project_id": null, "limit": 1 }
}

position_change es positivo cuando la palabra clave se movió arriba. Una palabra clave que nunca se ha consultado devuelve null para cada latest.* campo en lugar de 0 — position zero would read as "ranked first".

GET /api/v1/rank/history

GET /api/v1/rank/history?keyword_id={id}

Historial diario de posiciones para una palabra clave rastreada, con la URL que se posicionó y las características SERP presentes en cada verificación. Incluye un precomputado trend resumen.

Parámetros de consulta

ParámetroTipoObligatorioDescripción
keyword_identeroSíDesde /rank/keywords. Una palabra clave que no posee devuelve 404 NOT_FOUND.
díasenteroNo1–365, default 90

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/rank/history?keyword_id=4821&days=30"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "keyword": {
      "id": 4821,
      "keyword": "seo audit tool",
      "project_id": 17,
      "domain": "example.com",
      "project": "Example Site"
    },
    "history": [
      {
        "check_date": "2026-08-19",
        "position": 8,
        "previous_position": 11,
        "change": 3,
        "landing_page": "https://example.com/tools/audit",
        "gsc_clicks": 143,
        "gsc_impressions": 5210,
        "gsc_ctr": 2.74,
        "gsc_average_position": 8.6,
        "featured_snippet": true,
        "ai_overview": false,
        "people_also_ask": true,
        "local_pack": false,
        "images": false,
        "videos": false,
        "shopping": false,
        "knowledge_graph": false,
        "sitelinks": true
      }
    ],
    "trend": { "first": 14, "latest": 8, "best": 6, "worst": 15 }
  },
  "meta": { "days_requested": 30, "points": 1 }
}

Lectura trend

CampoSignificado
primeroPosición en el más antiguo punto en la ventana
más recientePosición en la verificación más reciente
mejorNúmero más bajo alcanzado (mejor posición)
peorNúmero más alto alcanzado (peor posición)

history se ordena del más reciente al más antiguo. best y worst ignorar verificaciones sin ranking, para que sean null cuando la palabra clave nunca se posicionó en la ventana.

GET /api/v1/gsc/properties

GET /api/v1/gsc/properties

Las propiedades de Google Search Console conectadas a tu cuenta, como se muestra en Insights de Search Console. No requiere parámetros.

This reads SignalSumo's synced copy — it does not call Google. last_synced_at le indica cuán reciente es esa copia.

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/gsc/properties"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "properties": [
      {
        "property_id": 31,
        "property_uri": "sc-domain:example.com",
        "display_name": "example.com",
        "status": "active",
        "last_synced_at": "2026-08-20 04:15:02",
        "last_sync_status": "ok",
        "google_email": "[email protected]",
        "is_sandbox": false
      }
    ],
    "count": 1
  }
}

GET /api/v1/gsc/queries

GET /api/v1/gsc/queries?property_id={id}

Clicks, impressions, CTR and average position for a synced property, grouped by whichever dimension you ask for. Despite the name it is not limited to queries — set dim para desglosar los mismos números por página, país, dispositivo o fecha.

Parámetros de consulta

ParámetroTipoObligatorioDescripción
property_identeroSíDesde /gsc/properties. Una propiedad que no posees devuelve 404 NOT_FOUND.
dimcadenaNoquery (predeterminado), page, country, device, date, searchAppearance
fromcadenaNoYYYY-MM-DD, predeterminado hace 28 días
tocadenaNoYYYY-MM-DD, predeterminado hoy
sortcadenaNoclicks (predeterminado), impressions, ctr, position, key
dircadenaNodesc (predeterminado) o asc
limitenteroNo1–500, default 100
Una fecha con formato incorrecto devuelve 422 VALIDATION_ERROR, pero un no reconocido dim o sort el valor recae silenciosamente al predeterminado en lugar de generar un error. Consulte el dim repetido en data antes de confiar en un desglose.

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/gsc/queries?property_id=31&dim=query&limit=2"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "property_id": 31,
    "dim": "query",
    "from": "2026-07-23",
    "to": "2026-08-20",
    "totals": {
      "clicks": 4820,
      "impressions": 216400,
      "ctr": 2.23,
      "position": 18.4
    },
    "rows": [
      { "key": "seo audit tool", "clicks": 143, "impressions": 5210, "ctr": 2.74, "position": 8.6 },
      { "key": "free seo checker", "clicks": 98,  "impressions": 7740, "ctr": 1.27, "position": 14.2 }
    ],
    "total_rows": 1842
  },
  "meta": { "sort": "clicks", "dir": "desc", "limit": 2 }
}

total_rows is the number of distinct keys in the period, not the number returned — use it to decide whether to raise limit. totals siempre cubre todo el período sin importar limit.

GET /api/v1/ai-visibility/projects

GET /api/v1/ai-visibility/projects

Las marcas que sigues en los motores de respuesta de IA, una fila por proyecto, con la puntuación de visibilidad actual y su movimiento. No requiere parámetros. Impulsado por el Comprobador de Visibilidad IA.

Scores are collected by scheduled scans, so this endpoint never calls an AI provider — it returns what the last scan stored.

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/ai-visibility/projects"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "projects": [
      {
        "id": 9,
        "domain": "example.com",
        "brand_name": "Example",
        "target_country": "US",
        "target_language": "en",
        "ai_engine": "all",
        "tracking_frequency": "weekly",
        "status": "active",
        "visibility_score": 41.8,
        "previous_visibility_score": 37.2,
        "score_change": 4.6,
        "created_at": "2026-05-02 11:20:44",
        "updated_at": "2026-08-18 06:02:11"
      }
    ],
    "count": 1
  }
}

score_change es null until a project has been scanned at least twice — a first scan has nothing to compare against, and reporting 0 se leería como "sin movimiento".

GET /api/v1/ai-visibility/share-of-voice

GET /api/v1/ai-visibility/share-of-voice?project_id={id}

Con qué frecuencia los asistentes de IA nombran tu marca frente a los competidores que se rastrean junto a ella, más el desglose completo de métricas del escaneo más reciente.

Parámetros de consulta

ParámetroTipoObligatorioDescripción
project_identeroSíDesde /ai-visibility/projects. Un proyecto que no posee devuelve 404 NOT_FOUND.

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/ai-visibility/share-of-voice?project_id=9"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "project": {
      "id": 9,
      "domain": "example.com",
      "brand_name": "Example",
      "target_country": "US",
      "ai_engine": "all",
      "visibility_score": 41.8,
      "previous_visibility_score": 37.2
    },
    "latest_snapshot": {
      "geo_score": 41.8,
      "mention_rate": 38.0,
      "avg_position": 2.4,
      "sentiment_avg": 0.62,
      "citation_rate": 21.5,
      "competition_score": 58.3,
      "prompts_evaluated": 50,
      "snapshot_date": "2026-08-18"
    },
    "share_of_voice": {
      "brand_mentions": 19,
      "competitor_mentions": 74,
      "total_mentions": 93,
      "brand_share_pct": 20.43
    },
    "competitors": [
      {
        "competitor_name": "Competitor One",
        "competitor_domain": "competitor1.com",
        "mention_count": 31,
        "visibility_score": 52.1,
        "avg_position": 1.9,
        "updated_at": "2026-08-18 04:41:07"
      }
    ]
  }
}

Dos porcentajes diferentes

Estos son fáciles de confundir y responden a preguntas diferentes:

CampoPregunta que responde
mention_rateOf the prompts we tested, what share mentioned you at all? — coverage.
brand_share_pctOf every brand mention across you and your tracked competitors, what share was yours? — competitive position.

latest_snapshot es null antes de que se complete el primer escaneo de un proyecto. competitors devuelve como máximo 20, ordenados por recuento de menciones. brand_share_pct es null when no mentions have been recorded on either side — a share of nothing is not zero percent.

GET /api/v1/keyword-research/locations

GET /api/v1/keyword-research/locations

Todos los mercados POST /keyword-research acepta, para que puedas descubrir un location_code en lugar de adivinar uno y ganar un 422. No requiere parámetros.

Esto es deliberadamente no the full market list. Keyword research runs on the keyword database, which covers fewer markets than SERP work does — publishing the wider list here would only move the failure one call later.

Solicitud de ejemplo

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/keyword-research/locations"

Respuesta de ejemplo

{
  "success": true,
  "data": {
    "locations": [
      { "location_code": 2840, "location_name": "United States", "country_iso": "US", "language_code": "en" },
      { "location_code": 2826, "location_name": "United Kingdom", "country_iso": "GB", "language_code": "en" }
    ],
    "count": 94,
    "note": "These are the markets covered by the keyword database. Pass location_code to POST /keyword-research."
  }
}

Registro de cambios

VersiónFechaCambios
v1.2Ago 2026Documentados los siete endpoints de solo lectura que ya estaban activos: /rank/keywords, /rank/history, /gsc/properties, /gsc/queries, /ai-visibility/projects, /ai-visibility/share-of-voice y /keyword-research/locations. No behaviour changed — these were callable before, just undocumented. Added MCP and LLM client guidance.
v1.1Jul 2026Respuestas de palabra clave y backlinks ampliadas a conjuntos métricos completos (dificultad, intención, tendencia, características SERP, campos de backlinks enriquecidos, visión general y análisis). Los resultados de auditoría del sitio añaden geo_score y recuentos de incidencias. Referencia de ubicación/idioma añadida y detalles de facturación.
v1.0Jun 2026Lanzamiento inicial — uso, backlinks, investigación de palabras clave, auditoría del sitio, trabajos

¿Preguntas? Correo electrónico [email protected]