# Social Analytics Overview

> Cross-account analytics for your social posts. Totals, per-post metrics and follower counts

- **URL**: https://orshot.com/docs/api-reference/social-analytics-list

---

## Overview

Returns analytics for every post across your connected social accounts. This is the same data behind the **Analytics** page in your dashboard. Each post carries its metrics (impressions, reach, likes, comments, shares, saves, clicks, views, engagement rate), and the response includes follower counts per account.

Covers posts published through Orshot **and** posts synced from your connected platforms, so there is data from day one.

```markdown tab="Endpoint"
https://api.orshot.com/v1/social/analytics
```

## Request

**Request**
```js
await fetch(
  "https://api.orshot.com/v1/social/analytics?from=2026-08-01&to=2026-08-13&sort=engagement",
  {
    method: "GET",
    headers: {
      Authorization: "Bearer <ORSHOT_API_KEY>",
    },
  },
);
```

**Response**
```json
{
  "data": {
    "analytics_available": true,
    "overview": {
      "total_posts": 42,
      "published_posts": 38,
      "scheduled_posts": 4,
      "last_sync": "2026-08-13T11:25:38.000Z",
      "stale_accounts": 0,
      "refresh_triggered": false
    },
    "posts": [
      {
        "analytics_post_id": "665f1c0f8a2b3c0012ab34cd",
        "post_id": 512,
        "is_external": false,
        "content": "Our new pricing is live.",
        "status": "published",
        "published_at": "2026-08-12T09:00:00.000Z",
        "platform": "linkedin",
        "post_url": "https://www.linkedin.com/feed/update/...",
        "thumbnail_url": "https://storage.orshot.com/.../launch.png",
        "media_type": "image",
        "metrics": {
          "impressions": 790,
          "reach": 561,
          "likes": 66,
          "comments": 2,
          "shares": 0,
          "saves": 1,
          "clicks": 2,
          "engagement_rate": 8.7,
          "last_updated": "2026-08-13T10:12:00.000Z"
        },
        "platforms": [
          {
            "platform": "linkedin",
            "metrics": { "impressions": 790, "likes": 66 },
            "sync_status": "synced",
            "post_url": "https://www.linkedin.com/feed/update/..."
          }
        ]
      }
    ],
    "accounts": [
      {
        "account_id": 15,
        "platform": "linkedin",
        "username": "acme-inc",
        "follower_count": 930,
        "followers_last_updated": "2026-08-13T10:12:00.000Z"
      }
    ],
    "pagination": { "page": 1, "has_more": false }
  }
}
```

## Query Parameters

| Parameter    | Type    | Required | Description                                                                              |
| ------------ | ------- | -------- | ---------------------------------------------------------------------------------------- |
| `platform`   | String  | No       | Only posts on this platform, e.g. `linkedin`                                              |
| `account_id` | Integer | No       | Only posts from this connected account                                                    |
| `source`     | String  | No       | `all` (default), `orshot` (published through Orshot) or `external` (synced from platform) |
| `from`       | String  | No       | Start date, `YYYY-MM-DD`                                                                  |
| `to`         | String  | No       | End date, `YYYY-MM-DD`                                                                    |
| `sort`       | String  | No       | Sort order, e.g. `engagement`                                                             |
| `page`       | Integer | No       | Page number                                                                               |
| `refresh`    | String  | No       | Pass `1` to bypass the cache and pull fresh numbers from the platforms                    |

Responses are cached briefly and refreshed in the background, so repeated calls are fast. `post_id` is set when a post was published through Orshot, so use it with the [per-post analytics endpoint](https://orshot.com/docs/api-reference/social-analytics-post). External posts use `analytics_post_id` there instead.

## Error Responses

### Analytics not enabled (403)

```json
{
  "error": "Analytics is not enabled for this account",
  "code": "analytics_not_enabled"
}
```

### Rate limited (429)

API analytics reads are limited to 10 requests per minute per workspace (responses are cached server-side, so polling faster buys nothing). The response includes a `Retry-After` header.