---
title: Full Report
api: GET /track/report
description: "Get a combined 30-day report with Google organic, LLM citations, and competitor comparison."
---

> **For AI agents:** the complete documentation index is at [llms.txt](https://docs.boringmarketing.com/llms.txt). Append `.md` to any page URL for its markdown version.

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

<ParamField query="brand_id" type="string" required>
  The brand UUID.
</ParamField>

## Response

```json
{
  "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

| Field | Description |
|-------|-------------|
| `period` | Always the literal string `"last_30_days"`. |
| `summary` | A single paragraph of text — not a structured object. |
| `sections.google_organic` | Branded vs non-branded keyword split and top 10 ranking pages |
| `sections.llm_citations.baseline` | Citation count when the brand was registered |
| `sections.llm_citations.delta_since_baseline` | Change vs baseline (positive = growth) |
| `sections.competitor_comparison` | Sorted by mention count descending, brand first unless a competitor outranks |

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

<Warning>
**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.
</Warning>

## Example

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

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