Analytics

Brand against competitors

Every keyword matched in the window with its counts and its share of brand plus competitor matches; topic keywords are counted but stay out of the split. The window is `range` (7d, 30d, 90d, 365d, ending today) or `from` and `to`, cut into days in `timezone` (UTC by default); `keywordIds` and `platforms` narrow it; `compare=true` adds the period of the same length right before it. Time axis is the publish date.

GET
/v1/analytics/share-of-voice
AuthorizationBearer <token>

API key minted via POST /v1/api-keys (format mk_live_...)

In: header

Query Parameters

range?string

Preset window ending today. Ignored when from or to is given. Default 30d.

Value in"7d" | "30d" | "90d" | "365d"
from?string

First day, YYYY-MM-DD, inclusive, in timezone.

Match^\d{4}-\d{2}-\d{2}$
to?string

Last day, YYYY-MM-DD, inclusive, in timezone. Default today.

Match^\d{4}-\d{2}-\d{2}$
keywordIds?|null

Only these keyword ids. Repeatable, or comma-separated; omit for every keyword.

Itemsitems <= 50
platforms?array<string>

Only these platforms. Repeatable, or comma-separated; omit for every platform.

Itemsitems <= 20
compare?boolean

true adds the period of the same length right before the window as previous.

timezone?string

IANA zone the days are cut in (Europe/Madrid). Default UTC. One offset, the zone's at the end of the window, applies to the whole window.

Lengthlength <= 64

Response Body

application/json

application/json

application/json

curl -X GET "https://api.mentio.dev/v1/analytics/share-of-voice"
{
  "window": {
    "from": "string",
    "to": "string",
    "days": 0,
    "timezone": "string"
  },
  "data": [
    {
      "keyword": {
        "id": "string",
        "term": "string",
        "kind": "brand"
      },
      "matched": 0,
      "relevant": 0,
      "negative": 0,
      "buyIntent": 0,
      "share": 0,
      "previous": {
        "matched": 0
      }
    }
  ]
}
{
  "error": {
    "code": "unauthorized",
    "message": "string",
    "requestId": "string",
    "retryAfterSeconds": 0
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "string",
    "requestId": "string",
    "retryAfterSeconds": 0
  }
}