Rankings

Get current Google organic rankings for your brand's domain. Always fresh, pulled from DataForSEO on every call.

GEThttps://api.boringmarketing.com/track/rankings

Returns the current live Google organic rankings for your brand's domain. This is a stateless, on-demand read — it calls DataForSEO every time and does not maintain a history. For time-series deltas, use POST /track/brands/{brand_id}/snapshot + GET /track/brands/{brand_id}/changes.

Query parameters

brand_idstringrequired

The brand UUID.

limitnumberdefault: 50

Maximum keywords to return. Max: 200.

Response

{
  "brand_id": "ea502f67-338b-47e4-a245-5c4eea8bd8d2",
  "domain": "yourdomain.com",
  "pulled_at": "2026-04-07T10:00:00Z",
  "total_keywords": 127,
  "keywords": [
    {
      "keyword": "ai marketing tools",
      "position": 8,
      "url": "/ai-marketing-tools",
      "volume": 12000,
      "kd": 34
    }
  ],
  "cost": 0.003
}

Field notes

FieldDescription
total_keywordsTotal keywords the brand ranks for (may exceed limit)
keywords[].positionAbsolute rank position (1-indexed)
keywords[].urlRelative URL of the ranking page on your domain
keywords[].volumeMonthly search volume
keywords[].kdKeyword difficulty (0-100)
costDataForSEO API cost for this request in USD

This endpoint returns a fresh pull every call — no previous_position, no change field, no persistent history. To compute deltas over time, snapshot the response with POST /track/brands/{brand_id}/snapshot and diff two snapshots via GET /track/brands/{brand_id}/changes?since=....

Example

curl -H "X-API-Key: $BM_API_KEY" \
  "https://api.boringmarketing.com/track/rankings?brand_id=$BRAND_ID&limit=100"