Saltar al contenido principal
GET
Leer un resultado de investigación SEO
Usa result_url sin cambios en el origen de la API y autentícate con una Key autorizada para leer cada Run. La respuesta usa los mismos campos que la respuesta inicial de Solution. HTTP 200 aún puede incluir result_status: pending mientras se ejecuta un rastreo; sigue consultando hasta que status sea terminal. Esta lectura no crea Runs, no llama a proveedores de datos ni reanuda el fallback.

Parámetros de consulta

token
string
requerido

Contexto de resultado opaco devuelto en result_url. Consérvalo sin cambios y autentícate con una API Key autorizada para leer cada Run incluido.

Required string length: 1 - 16384

Respuesta

SeoResearchResult

id
string
requerido
run_url
string
requerido

Abre este Run en la consola. Requiere pertenecer a un Workspace.

provider
string
requerido
Pattern: ^[a-z0-9][a-z0-9-]*$
endpoint
string
requerido
Pattern: ^\/.+$
endpoint_version
integer
requerido
status
enum<string>
requerido

QUEUED o RUNNING: sigue en curso. COMPLETED: hay una respuesta del proveedor de datos disponible, incluidas las respuestas que no son 2xx. FAILED: consulta failure. STOPPED: detenido antes del envío. Consulta charge_usd por separado de status.

Opciones disponibles:
QUEUED,
RUNNING,
COMPLETED,
FAILED,
STOPPED
failure
object | null
requerido

Motivo por el que falló el Run. No es null únicamente cuando el estado es FAILED.

input
object
requerido
output
object
requerido

Campos normalizados por acción. El resultado nativo del proveedor de datos no se repite aquí; permanece en el Run (GET /v1/runs/:id). Los valores que un proveedor de datos no informa son null. Los importes monetarios están en USD. Las puntuaciones de autoridad conservan la métrica y el nombre propios del proveedor de datos que responde y nunca se convierten: ahrefs_domain_rating (Ahrefs Domain Rating, 0–100), semrush_authority_score (Semrush Authority Score, 0–100), dataforseo_rank (DataForSEO rank, 0–1000), serpstat_domain_rank (Serpstat Domain Rank, 0–100). La dificultad de palabras clave se divide del mismo modo (semrush_keyword_difficulty, serpstat_keyword_difficulty, dataforseo_keyword_difficulty, ahrefs_keyword_difficulty, cada una de 0–100 según su propio modelo). Solo se completa el campo del proveedor de datos que respondió; los demás son null. volume, traffic y cpc son estimaciones del proveedor de datos que responde; compáralos únicamente dentro de un mismo proveedor de datos (runs[].provider). Una respuesta vacía (result_status no_result) conserva la estructura de la acción: items es [], o todos los campos son null.

  • keyword_overview: items[]: keyword, volume, cpc_usd, semrush_keyword_difficulty, serpstat_keyword_difficulty, dataforseo_keyword_difficulty, ahrefs_keyword_difficulty, intent
  • keyword_ideas: items[]: misma fila que keyword_overview
  • serp: items[]: position (posición orgánica: 1 = primer resultado orgánico; las funciones de SERP no se contabilizan), url, domain, title, snippet (solo resultados orgánicos)
  • domain_overview: organic_keywords, organic_traffic, organic_traffic_value_usd, paid_keywords, paid_traffic
  • ranked_keywords: items[]: keyword, position (posición orgánica: 1 = primer resultado orgánico; las funciones de SERP no se contabilizan), url, volume, cpc_usd, traffic
  • organic_competitors: items[]: domain, common_keywords, organic_keywords (total del competidor), organic_traffic (se excluyen el dominio objetivo y sus subdominios)
  • backlinks_overview: backlinks, referring_domains, semrush_authority_score, dataforseo_rank, serpstat_domain_rank, dofollow_backlinks, nofollow_backlinks
  • backlinks: items[]: source_url, target_url, anchor, source_ahrefs_domain_rating, source_semrush_authority_score, source_dataforseo_rank, dofollow, first_seen_at (ISO 8601 UTC; Semrush: zona no indicada, sin sufijo Z). Una fila por enlace de cada proveedor de datos
  • referring_domains: items[]: domain, ahrefs_domain_rating, semrush_authority_score, dataforseo_rank, backlinks, dofollow_backlinks, first_seen_at (ISO 8601 UTC; Semrush: zona no indicada, sin sufijo Z)
  • domain_rating: ahrefs_domain_rating
  • site_audit: dataforseo_task_id (entrada para los endpoints de informes OnPage de DataForSEO), crawl_progress, crawl_stop_reason (vocabulario de DataForSEO), pages_crawled, dataforseo_onpage_score, broken_links, non_indexable, duplicate_title, duplicate_description, duplicate_content
  • keyword_gap: items[]: keyword, volume, cpc_usd, semrush_keyword_difficulty, dataforseo_keyword_difficulty, positions {domain: posición orgánica; null = no está entre los 100 primeros}, identificadas por los dominios enviados. Las filas de Semrush son palabras clave para las que posiciona cualquiera de los dominios (unión); las filas de DataForSEO son palabras clave para las que posiciona el competidor y tú no
  • backlink_gap: items[]: domain, dataforseo_rank, backlinks_per_target {dominio del competidor: cantidad}
  • page_audit: url, status_code, title, description, canonical, dataforseo_onpage_score, internal_links, external_links
  • visibility_history: items[]: month, organic_keywords, organic_traffic, organic_traffic_value_usd, paid_keywords, paid_traffic
  • ai_citations: items[]: url, platform, mentions, ai_search_volume, is_target_domain (páginas más citadas en respuestas de IA que mencionan el dominio, de cualquier sitio)
  • ai_visibility: ahrefs_ai_citations, ahrefs_ai_cited_pages, ahrefs_ai_citations_by_platform {platform: citations}, dataforseo_ai_mentions_by_platform {platform: mentions}, dataforseo_ai_search_volume_by_platform {platform: volumen de búsqueda de IA}. Cada proveedor de datos completa únicamente sus propios campos; no hay un total combinado entre proveedores
provider_response
object | null
requerido

No es null únicamente cuando el estado es COMPLETED.

  • Para respuestas 2xx, output contiene JSON nativo del proveedor de datos (de cualquier estructura), o null si el cuerpo está vacío.
  • Para respuestas que no son 2xx, error contiene el cuerpo de error del proveedor de datos y output es null.

Los campos sensibles se eliminan de ambos cuerpos.

charge_usd
string | null
requerido

Cargo total de los Runs en esta respuesta de Solution. Es null hasta que se liquiden todos los Runs incluidos. Cada Run conserva su propio cargo; los errores también pueden generar cargos.

Pattern: ^(0|[1-9]\d*)\.(\d{2}|\d{2}\d{0,3}[1-9])$
charge_basis
object | null
requerido

Base del cargo de un único Run, o null para un total de varios Runs. Consulta runs[].charge_basis para cada cargo.

stoppable
boolean
requerido

Indica si actualmente se puede aceptar una solicitud de detención. Esto no garantiza que el Run pueda detenerse antes del envío.

stop_requested_at
string<date-time> | null
requerido

Momento en que se solicitó la detención. El Run puede continuar si el envío ya había comenzado.

created_at
string<date-time>
requerido

Marca de tiempo UTC en formato ISO-8601

started_at
string<date-time> | null
requerido

Marca de tiempo UTC en formato ISO-8601

completed_at
string<date-time> | null
requerido

Marca de tiempo UTC en formato ISO-8601

task_id
string | null
requerido
metadata
object
requerido

Tus campos de seguimiento almacenados. Úsalos para filtrar Runs. Nunca se envían al proveedor de datos ni afectan al enrutamiento, Price o la idempotencia.

  • Hasta 20 claves: letras minúsculas, dígitos y guiones bajos; deben comenzar por una letra; como máximo 40 caracteres.
  • Valores: cadenas de 1–500 caracteres.
  • user_id: el ID opaco de tu usuario final, nunca su dirección de correo electrónico ni su nombre.
action
enum<string>
requerido
Opciones disponibles:
keyword_overview,
keyword_ideas,
serp,
domain_overview,
ranked_keywords,
organic_competitors,
backlinks_overview,
backlinks,
referring_domains,
domain_rating,
site_audit,
ai_visibility,
keyword_gap,
backlink_gap,
page_audit,
visibility_history,
ai_citations
result_status
enum<string>
requerido

Estado de entrega empresarial, independiente del ciclo de vida final del Run en status. no_result es una respuesta vacía pero válida; error significa que no se pudo entregar el resultado del proveedor de datos.

Opciones disponibles:
success,
no_result,
error,
pending
error
object | null
requerido
runs
object[]
requerido
result_url
string
requerido

Ruta URL autenticada y de solo lectura para consultar este resultado normalizado y el cargo total. Úsala con el origen de la API. No crea Runs ni reanuda el fallback. GET /v1/runs/:id sigue devolviendo el Run individual nativo.