Documentación para desarrolladores

Listar filas de Search Console

GET/sites/{siteId}/search/rows
Permiso
search:read
Herramienta MCP
search_rows

Search Console rows for a date range, by query, page, pair or day One row per query, page, query + page pair, or day. CTR (a fraction) and position are computed from sums over the whole range, never averaged across rows. Keyset pages in a stable order (clicks high first, then the key; dimension=date by date): send nextCursor back as cursor until it is null. format=csv streams every row from the cursor on as a CSV file (limit is ignored). What is stored limits the filters: country and device work on daily totals only (dimension=date without page); image search has daily totals only; query_page returns the top 5,000 page × query pairs of the 28 days before the last sync inside the range (see window). A filter the stored data cannot answer returns 400 not_stored.

Las descripciones vienen del documento OpenAPI y están en inglés.

Parámetros

NombreDóndeDetalles
siteIdObligatoriorutastringWebsite id, from GET /sites.
fromObligatorioquerydate (YYYY-MM-DD)First day, YYYY-MM-DD. The range can be at most 16 months, the history MonoRanks keeps.
toObligatorioquerydate (YYYY-MM-DD)Last day, YYYY-MM-DD, not in the future.
dimensionqueryquerypagequery_pagedatedefault queryWhat one row is.
countryquerystringpattern ^[A-Za-z]{3}$ISO 3166-1 alpha-3 as Search Console uses it, for example usa. dimension=date only.
devicequerymobiledesktoptabletdimension=date only.
search_typequerywebimagedefault webWeb or image search. Image search has daily totals only.
pagequerystringA full URL matches that page exactly; anything else matches pages whose URL contains it (for example /blog/). Works with dimension=page, query_page and date.
limitqueryintegerdefault 1000, min 1, max 10000Rows per page, 1 to 10,000. Ignored with format=csv.
cursorquerystringnextCursor from the previous page, unchanged.
formatqueryjsoncsvdefault jsoncsv streams every row as a CSV file.

Respuesta

200 · application/json

CampoDetalles
periodobject · required; The range asked for
period.fromdate (YYYY-MM-DD) · required; First day
period.todate (YYYY-MM-DD) · required; Last day
dimensionquery | page | query_page | date · required; What one row is
searchTypeweb | image · required; Search type
filtersobject · required; The filters applied
filters.countrystring or null · required; Country filter (ISO 3166-1 alpha-3, lower case)
filters.deviceMOBILE | DESKTOP | TABLET | · required; Device filter
filters.pagestring or null · required; Page filter
rowslist of values · required
rows[].querystring
rows[].clicksnumber
rows[].impressionsnumber
rows[].ctrnumber
rows[].positionnumber
nextCursorstring or null · required; Send back as cursor for the next page; null after the last page
notestring · required; How the numbers are computed

Errores

EstadoSignificado
400Bad request. Codes: bad_period, period_too_long, bad_dimension, bad_search_type, bad_device, bad_country, not_stored, bad_limit, bad_cursor.
401Missing, unknown or revoked key. Codes: missing_key, invalid_key.
403The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden.
404Not found. Codes: not_found.
429Too 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/search/rows?from=2026-09-01&to=2026-09-28"

Respuesta de ejemplo

{
  "period": {
    "from": "2026-09-01",
    "to": "2026-09-30"
  },
  "dimension": "query",
  "searchType": "web",
  "filters": {
    "country": null,
    "device": null,
    "page": null
  },
  "rows": [
    {
      "query": "acme bikes",
      "clicks": 571,
      "impressions": 2104,
      "ctr": 0.2714,
      "position": 1.2
    },
    {
      "query": "best gravel bike under 1500",
      "clicks": 221,
      "impressions": 8890,
      "ctr": 0.0249,
      "position": 7.8
    }
  ],
  "nextCursor": "eyJjIjoyMjEsImsiOiJiZXN0IGdyYXZlbCBiaWtlIHVuZGVyIDE1MDAifQ",
  "note": "CTR and position are computed from sums over the period, never averaged across rows. CTR is a fraction (0.05 = 5%)."
}

El servidor MCP hace lo mismo con la herramienta search_rows.