# solari insight tiktok content aggregate

> Use this to count TikTok posts.

- **CLI**: `solari insight tiktok content aggregate`
- **MCP tool**: `solari_insight_tiktok_content_aggregate`
- **Access**: `solari:read` — Works with any signed-in SOLARI account.
- **Required plan**: Free
- **Credit**: 0

Add up tracked TikTok posts by account, format, hashtag, mention, or keyword.

**When to use it** — When you need cadence, hashtag mix, or average plays. For the posts themselves, use content search.

**What comes back** — Counts per group, largest first. Extra metrics only if you ask for them.

## Parameters

- `region` (enum, optional, default "KR") — KR, JP, US, or TW. Values: `KR`, `JP`, `US`, `TW`.
- `group_by` (enum, optional) — How to split the counts. Values: `account`, `post_type`, `hashtag`, `mention`, `caption_keyword`.
- `interval` (enum, optional) — Add a time series at this calendar interval. Values: `day`, `week`, `month`.
- `metrics` (string[], optional) — Extra metrics besides post_count. Values: `like_sum`, `like_avg`, `comment_sum`, `comment_avg`, `view_sum`, `view_avg`, `share_sum`, `share_avg`, `collect_sum`, `collect_avg`, `follower_avg`, `account_count`.
- `query` (string, optional) — Keyword filter over captions and transcripts.
- `usernames` (string[], optional) — Only these TikTok usernames.
- `hashtags` (string[], optional) — Only posts that have all of these hashtags.
- `mentions` (string[], optional) — Only posts that mention all of these usernames.
- `post_types` (string[], optional) — Only these formats. Values: `video`, `carousel`.
- `since` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$) — Only posts on or after this UTC date (YYYY-MM-DD).
- `until` (string, optional, pattern ^\d{4}-\d{2}-\d{2}$) — Only posts on or before this UTC date (YYYY-MM-DD).
- `limit` (integer, optional, ≥ 1) — How many groups to return.

## Response

### `Response`

- `region` (string) — Region aggregated.
- `since` (date) — Start date actually used.
- `until` (date | null) — End date actually used.
- `group_by` (string | null) — Grouping applied.
- `interval` (string | null) — Time interval applied.
- `total_posts` (integer) — Posts matching the filters.
- `truncated` (boolean) — true if more groups existed than limit.
- `buckets` (object[]) — Groups, largest first.

### `buckets[]`

- `key` (string) — Group value. A single total when group_by is omitted.
- `metrics.post_count` (integer) — Post count. Always present.
- `metrics.like_sum / like_avg` (number | null) — Like total and mean, when requested.
- `metrics.comment_sum / comment_avg` (number | null) — Comment total and mean, when requested.
- `metrics.view_sum / view_avg` (number | null) — Play total and mean, when requested.
- `metrics.share_sum / collect_sum` (number | null) — Share and save totals, when requested.
- `metrics.follower_avg` (number | null) — Mean follower count of authors.
- `metrics.account_count` (integer | null) — Distinct accounts in the group.
- `series` (object[] | null) — Per-period breakdown, when interval is set.

## Example

```console
$ solari insight tiktok content aggregate group_by=account query="이니스프리" metrics='["view_sum","like_avg","account_count"]' limit=5
```

_Long strings and repeated array entries are trimmed for readability._

```json
{
  "region": "KR",
  "since": "2026-03-04",
  "until": null,
  "group_by": "account",
  "interval": null,
  "total_posts": 20,
  "truncated": true,
  "buckets": [
    {
      "key": "merryview_",
      "metrics": {
        "post_count": 2,
        "like_sum": null,
        "like_avg": 2378.5,
        "comment_sum": null,
        "comment_avg": null,
        "view_sum": 179504,
        "view_avg": null,
        "share_sum": null,
        "share_avg": null,
        "collect_sum": null,
        "collect_avg": null,
        "follower_avg": null,
        "account_count": 1
      },
      "series": null
    },
    {
      "key": "_kimdayun_",
      "metrics": {
        "post_count": 1,
        "like_sum": null,
        "like_avg": 1829,
        "comment_sum": null,
        "comment_avg": null,
        "view_sum": 102000,
        "view_avg": null,
        "share_sum": null,
        "share_avg": null,
        "collect_sum": null,
        "collect_avg": null,
        "follower_avg": null,
        "account_count": 1
      },
      "series": null
    },
    "… 3 more"
  ]
}
```

## As an MCP call

```json
{
  "name": "solari_insight_tiktok_content_aggregate",
  "arguments": {
    "group_by": "account",
    "query": "이니스프리",
    "metrics": [
      "view_sum",
      "like_avg",
      "account_count"
    ],
    "limit": 5
  }
}
```

## Notes

- view_* is plays. share_* and collect_* are filled here, unlike Instagram.
- Coverage is KR, JP, US, and TW, about the last six months. Older since values are clamped.

## Related tools

- [`solari_catalog_tiktok_content_search`](https://solari.sh/docs/tools/catalog-tiktok-content-search.md)
- [`solari_insight_instagram_content_aggregate`](https://solari.sh/docs/tools/insight-instagram-content-aggregate.md)
