# solari insight instagram content aggregate

> Use this to count Instagram posts.

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

Add up tracked posts by account, format, hashtag, mention, or keyword — for questions that need a number.

**When to use it** — When you need volume, averages, or which hashtag leads. 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`, `transcription_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`, `follower_avg`, `account_count`.
- `query` (string, optional) — Keyword filter over captions and transcripts.
- `usernames` (string[], optional) — Only these Instagram 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.
- `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) — View total and mean, when requested.
- `metrics.share_sum / collect_sum` (number | null) — TikTok-only. Always null here.
- `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 instagram content aggregate group_by=hashtag query="이니스프리" metrics='["like_avg","view_sum","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": "hashtag",
  "interval": null,
  "total_posts": 1647,
  "truncated": true,
  "buckets": [
    {
      "key": "이니스프리",
      "metrics": {
        "post_count": 772,
        "like_sum": null,
        "like_avg": 320.7240932642487,
        "comment_sum": null,
        "comment_avg": null,
        "view_sum": 9400953,
        "view_avg": null,
        "share_sum": null,
        "share_avg": null,
        "collect_sum": null,
        "collect_avg": null,
        "follower_avg": null,
        "account_count": 587
      },
      "series": null
    },
    {
      "key": "광고",
      "metrics": {
        "post_count": 548,
        "like_sum": null,
        "like_avg": 373.04021937842776,
        "comment_sum": null,
        "comment_avg": null,
        "view_sum": 5463711,
        "view_avg": null,
        "share_sum": null,
        "share_avg": null,
        "collect_sum": null,
        "collect_avg": null,
        "follower_avg": null,
        "account_count": 381
      },
      "series": null
    },
    "… 3 more"
  ]
}
```

## As an MCP call

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

## Notes

- Only post_count is filled unless you name other metrics.
- Coverage is KR, JP, US, and TW, about the last six months. Older since values are clamped.
- interval alone makes one bucket per period. Combined with group_by, each group gets a series.

## Related tools

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