v1Resources/SEO/getGet a location's ranking overview

Get a location's ranking overview

Returns tracked keywords, monthly rank trend, the ranking grid, and stat cards for one location. Pass keywordId to scope the grid to a single keyword, or month (YYYY-MM) to pin it to a specific month instead of each keyword's latest measured report.

get/api/v1/seo/keywords
seo:read
Query parameters
locationIdstringrequired
The location to look up.
clientIdstringoptional
The location's client.
keywordIdstringoptional
Restrict the grid to one tracked keyword. Omit for the aggregated best-rank-per-cell grid across all active keywords.
monthstringoptional
Pin the grid and stats to this month (YYYY-MM) instead of each keyword's latest measured report.
Response
dataobjectoptional
Additional internal fields may be present but are not part of the stable contract — rely only on the fields documented here.
keywordsarray of objectoptional
Tracked keywords for this location, each with its current rank and monthly trend.
idstringoptional
Unique identifier for the tracked keyword.
keywordstringoptional
The keyword text.
avgRanknumberoptional
The keyword's latest measured average rank across the grid (lower is better; null if never measured or not ranking).
monthlyarray of objectoptional
This keyword's average rank for each month it has a report.
monthstringoptional
ranknumberoptional
monthsarray of objectoptional
Every month with at least one measured report, oldest first, with the mean average rank across keywords for that month.
keystringoptional
Month in YYYY-MM form.
labelstringoptional
Human-readable label for the month, e.g. "Aug 2026".
avgRanknumberoptional
Mean average rank across tracked keywords for this month, or null.
gridarray of objectoptional
The ranking grid: one entry per scraped point, merged across the in-scope keyword(s)/month.
idstringoptional
rowintegeroptional
Grid row index.
colintegeroptional
Grid column index.
latnumberoptional
Latitude of this grid point.
lngnumberoptional
Longitude of this grid point.
ranknumberoptional
Rank found at this point (lower is better); null if not measured, values above 20 mean "20+".
excludedbooleanoptional
Whether this point is excluded from the location's stat calculations.
waterbooleanoptional
Whether this point falls in water (sea, lake, wide river) and is only counted if the location has opted in to including water points.
statsobjectoptional
Aggregate rank stats across the active grid.
top3Pctnumberoptional
Percent of grid points ranking in the top 3, or null.
top10Pctnumberoptional
Percent of grid points ranking in the top 10, or null.
avgRanknumberoptional
Average rank across the grid, or null.
statCardsobjectoptional
Highlight cards summarizing the location's best/worst keyword and biggest month-over-month mover.
bestobjectoptional
The keyword with the best (lowest) current average rank, or null if none has ranked.
keywordstringoptional
avgRanknumberoptional
worstobjectoptional
The keyword with the worst current average rank, or null.
keywordstringoptional
avgRanknumberoptional
gainerobjectoptional
The keyword whose rank improved the most from its first to its latest month, or null.
keywordstringoptional
fromnumberoptional
tonumberoptional
dropperobjectoptional
The keyword whose rank declined the most from its first to its latest month, or null.
keywordstringoptional
fromnumberoptional
tonumberoptional
notRankingCountnumberoptional
Grid points that were measured successfully but rank outside the top 20, or null.
noDataCountnumberoptional
Grid points that could not be measured at all (the scrape failed), distinct from not ranking, or null.
centerobjectoptional
The map center point for this location's grid (its business location), or null if not yet configured.
latnumberoptional
lngnumberoptional
includeWaterPointsbooleanoptional
Whether this location has opted in to counting grid points that fall in water.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
429Too many requests. Retry after the number of seconds in the Retry-After header.
get/api/v1/seo/keywords
Your API key
locationId *
clientId
keywordId
month
{
  "data": {
    "keywords": [
      {
        "id": "cm_kw_abc123",
        "keyword": "dentist near me",
        "avgRank": 4.2,
        "monthly": [
          {
            "month": "2026-01",
            "rank": 5.1
          },
          {
            "month": "2026-02",
            "rank": 4.2
          }
        ]
      }
    ],
    "months": [
      {
        "key": "2026-01",
        "label": "Jan 2026",
        "avgRank": 5.1
      },
      {
        "key": "2026-02",
        "label": "Feb 2026",
        "avgRank": 4.2
      }
    ],
    "grid": [
      {
        "id": "cm_pt_1",
        "row": 0,
        "col": 0,
        "lat": 30.2682,
        "lng": -97.7441,
        "rank": 3,
        "excluded": false,
        "water": false
      }
    ],
    "stats": {
      "top3Pct": 44,
      "top10Pct": 78,
      "avgRank": 4.2
    },
    "statCards": {
      "best": {
        "keyword": "dentist near me",
        "avgRank": 4.2
      },
      "worst": {
        "keyword": "emergency dentist austin",
        "avgRank": 9.6
      },
      "gainer": {
        "keyword": "dentist near me",
        "from": 5.1,
        "to": 4.2
      },
      "dropper": {
        "keyword": "family dentist",
        "from": 3.8,
        "to": 5.2
      },
      "notRankingCount": 1,
      "noDataCount": 0
    },
    "center": {
      "lat": 30.2672,
      "lng": -97.7431
    },
    "includeWaterPoints": false
  }
}