Back to APIs

Social Media Data API

Updated

When you evaluate a social media data API, the useful questions are concrete. What exactly comes back? How do you know how old a value is? What happens when an account does not exist, or a number cannot be read? This page answers those for Metrika, field by field.

The response, dissected

Every resource you request returns with its platform, type, identifier, and a status. Once collected, its datapoints hang off two groups: metrics for numbers and attributes for flags such as verified status.

json
{
  "data": [
    {
      "platform": "tiktok",
      "type": "account",
      "identifier": "nba",
      "status": "available",
      "metrics": {
        "followers": {
          "value": 24100000,
          "status": "available",
          "collected_at": "2026-08-08T00:00:00.000Z",
          "semantic": "followers"
        },
        "posts": {
          "value": 8900,
          "status": "available",
          "collected_at": "2026-08-08T00:00:00.000Z",
          "semantic": "videos"
        }
      },
      "attributes": {
        "verified": {
          "value": true,
          "status": "available",
          "collected_at": "2026-08-08T00:00:00.000Z",
          "semantic": "verified"
        }
      }
    }
  ]
}

The names are normalised across platforms: YouTube subscribers and Bluesky followers both arrive as followers, videos and threads both count as posts, so your parsing code is written once.

The platform's own word is not lost in that normalisation: the semantic field on each datapoint carries it, videos for TikTok output above, subscribers for a YouTube audience. Key your code on the normalised names and label your UI with semantic.

Post lookups follow the same shape. Request type: "post" on Bluesky, Threads, X, or YouTube and the metrics are view, like, and repost counts, each with the same status, collected_at, and semantic fields.

Data that admits how fresh it is

Every datapoint carries its own collected_at timestamp and its own status rather than pretending to be live. Values for known accounts are refreshed daily. If a particular datapoint is not available for a platform, its status says unavailable instead of the field quietly missing, and a datapoint still being collected reports pending.

Statuses instead of surprises

The resource-level status tells you where an account stands: pending while first collection runs in the background, available once data flows, not_found when the account does not exist on the platform, stale when previously collected data exists but refreshes are currently failing, and unavailable when collection keeps failing and will be retried. Your integration can branch on five known strings rather than parsing error prose.

The latest value, not a series

Metrika returns the current snapshot of each datapoint, not a history. There is no endpoint for past values. If you want growth over time, call on a schedule and store the values; the daily refresh cadence makes one call per day per set of accounts the natural rhythm.

Getting started

The free tier includes 500 requests per month, no credit card required. Create an account, then see the docs for the full schema reference and the per-platform availability matrix. For the wider picture, start with the Social Media API overview.

Get started with Metrika

Create a free account and start pulling social media datapoints in minutes. The free tier includes 500 requests per month, no credit card required.