Skip to content
postpeg

Analytics

Numbers for each post, per account it went to, and follower counts for each account. Available on X, Instagram, Facebook, LinkedIn, TikTok, YouTube and Pinterest.

Post analytics

GET/v1/posts/{id}/analytics

One entry per target, each with a status:

  • ready: metrics holds the numbers, updated_at says when the network reported them.
  • syncing: the network hasn’t reported yet. New posts take minutes to hours; ask again later.
  • unavailable: there will be no numbers, and reason says why: the network has no post analytics (Threads, Bluesky and Google Business), the target never published, or the network returned an error for this account.
curl https://api.postpeg.com/v1/posts/post_mfz2k3v8q1w5e9r4t7y0u2i6o3/analytics \
  -H "Authorization: Bearer $POSTPEG_KEY"
Response · 200 OK
{
  "post_id": "post_mfz2k3v8q1w5e9r4t7y0u2i6o3",
  "targets": [
    {
      "account_id": "acc_mfz1x0k27d4q8vbn3c5s0a1p9e",
      "platform": "x",
      "url": "https://x.com/acme/status/1971234567890123456",
      "status": "ready",
      "metrics": {
        "impressions": 4812,
        "reach": null,
        "views": null,
        "likes": 131,
        "comments": 9,
        "shares": 22,
        "saves": 6,
        "clicks": 74,
        "engagement_rate": 5.07
      },
      "updated_at": "2026-10-01T15:20:31.000Z",
      "reason": null
    },
    {
      "account_id": "acc_mfz1y4r9h2c6t0wqk8e3m7ld5f",
      "platform": "linkedin",
      "url": "https://www.linkedin.com/feed/update/urn:li:share:7378123456789012345",
      "status": "syncing",
      "metrics": null,
      "updated_at": null,
      "reason": null
    },
    {
      "account_id": "acc_mfz24f7z0x3c6v9b2n5m8q1w4e",
      "platform": "threads",
      "url": "https://www.threads.net/@acmecoffee/post/DPq8aBcDeFg",
      "status": "unavailable",
      "metrics": null,
      "updated_at": null,
      "reason": "Threads does not provide post analytics"
    }
  ]
}

Metrics

A metric the network doesn’t report is null, never a made-up 0. Which ones are filled depends on the network.

Post metrics
FieldDescription
impressionsnumber | nullTimes the post was shown.
reachnumber | nullUnique people who saw it.
viewsnumber | nullVideo views.
likesnumber | nullLikes or reactions.
commentsnumber | nullComments and replies.
sharesnumber | nullShares, reposts or retweets.
savesnumber | nullSaves or bookmarks.
clicksnumber | nullLink clicks.
engagement_ratenumber | nullA percentage: 2.78 means 2.78%.

Account analytics

GET/v1/accounts/{id}/analytics

The follower count now, its change over the range, and a daily series. Pass from and to as YYYY-MM-DD; the default is the last 30 days, and the range can be at most 366 days.

curl https://api.postpeg.com/v1/accounts/acc_mfz20b5n1s8f4j7xv2p9r6hu1c/analytics?from=2026-09-01&to=2026-09-30 \
  -H "Authorization: Bearer $POSTPEG_KEY"
Response · 200 OK
{
  "account_id": "acc_mfz20b5n1s8f4j7xv2p9r6hu1c",
  "platform": "instagram",
  "followers": 12480,
  "follower_growth": 312,
  "follower_growth_percent": 2.56,
  "series": [
    {
      "date": "2026-09-01",
      "followers": 12168
    },
    {
      "date": "2026-09-02",
      "followers": 12181
    },
    {
      "date": "2026-09-03",
      "followers": 12203
    }
  ],
  "from": "2026-09-01",
  "to": "2026-09-30"
}

The series above is cut to three days for space. Asking for an account on a network without analytics returns a 400:

Response · 400 Bad Request
{
  "type": "https://postpeg.com/errors/invalid_request",
  "title": "Invalid request",
  "status": 400,
  "detail": "Analytics is not available for Threads",
  "code": "invalid_request",
  "request_id": "8f14e45f-ceea-467a-9575-1f2a5c3e6b0d"
}