Full Report

Get a combined 30-day report with Google organic, LLM citations, and competitor comparison.

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

Returns a multi-section tracking report covering the last 30 days: Google organic rankings summary, LLM citation metrics with baseline delta, and competitor comparison across LLM mentions.

Query parameters

brand_idstringrequired

The brand UUID.

Response

{
  "brand": "Your Brand",
  "domain": "yourdomain.com",
  "generated_at": "2026-04-07T10:00:00Z",
  "period": "last_30_days",
  "sections": {
    "google_organic": {
      "total_keywords": 127,
      "branded_keywords": 18,
      "non_branded_keywords": 109,
      "top_10": [
        {
          "keyword": "ai marketing tools",
          "position": 8,
          "volume": 12000
        }
      ]
    },
    "llm_citations": {
      "total_mentions": 34,
      "impressions": 1280,
      "baseline": 22,
      "delta_since_baseline": 12
    },
    "competitor_comparison": [
      { "domain": "yourdomain.com", "mentions": 34 },
      { "domain": "competitor1.com", "mentions": 58 },
      { "domain": "competitor2.com", "mentions": 21 }
    ]
  },
  "summary": "Your Brand currently ranks for 127 keywords (109 non-branded) on Google. LLM citation count: 34 total mentions across AI platforms (+12 vs baseline)."
}

Field notes

FieldDescription
periodAlways the literal string "last_30_days".
summaryA single paragraph of text — not a structured object.
sections.google_organicBranded vs non-branded keyword split and top 10 ranking pages
sections.llm_citations.baselineCitation count when the brand was registered
sections.llm_citations.delta_since_baselineChange vs baseline (positive = growth)
sections.competitor_comparisonSorted by mention count descending, brand first unless a competitor outranks

The report does not currently include an AIO section. For AI Overview presence, call GET /track/aio separately.

Sections may be replaced by an error placeholder on upstream failure. When a DataForSEO call fails for one of the sections, the section value is replaced with {"error": "<message>"} rather than omitted — the report still returns 200, but you must check each section for an error key before consuming its data. The competitor_comparison section is only included when the brand has at least one business- or serp-type competitor set; brands with no competitors get a report without that key. The summary paragraph wording is heuristically generated from the section data and is not a stable contract — do not parse it.

Example

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

Use the full report for monthly reviews. Use individual tracking endpoints (/rankings, /citations, /aio) for real-time checks.