Social Media Metrics API
Metrics for the accounts the agency manages for you: followers, views, reach, posts and audience. Pull the data into your own analytics, spreadsheets or dashboards as JSON or CSV.
API key and access
Your API key is issued by the Buzz agency. It starts with buzz_ck_ and is sent in the Authorization: Bearer buzz_ck_… header. Keys in the query string are not accepted — URLs end up in logs and browser history.
curl https://api.buzzmybrand.co/v1/accounts \
-H "Authorization: Bearer buzz_ck_your_key"The key grants read-only access to the metrics of your own accounts and nothing else. Keep it on your server: never call the API directly from a browser or a public website — anyone could read the key from the page.
Unknown, revoked and expired keys all return the same 401 invalid_key. If you think a key has leaked, contact your account manager — we will revoke it and issue a new one.
For security, every request is logged: time, method, path, response code, IP address and user agent. The log is kept for 90 days and is used only to investigate suspicious activity.
Format and periods
Responses are JSON in UTF-8. Most endpoints also return CSV — add ?format=csv. CSV works well with Looker Studio and with Google Sheets via Apps Script (UrlFetchApp.fetch with the key in the request headers; the built-in IMPORTDATA formula cannot send headers).
Periods are set with from and to in YYYY-MM-DD format, both inclusive. Without them you get the last 30 days. The maximum period is 400 days. Dates follow Moscow time (UTC+3); timestamps such as publishedAt are in UTC.
Rate limits: 60 requests per minute per key and 300 per minute per IP address. Above them you get 429 rate_limited — retry after a minute. Data is refreshed twice a day (08:00 and 20:00 Moscow time), so polling more often gives nothing new.
Metrics
Metric keys: followers, views, reach, likes, comments, shares, saves, watch_time_min, avg_view_sec, avg_view_pct, subscribers_gained, subscribers_lost, profile_views, website_clicks, total_interactions, skip_rate and others. The set depends on the platform: a metric the platform does not provide is simply absent from the response — absent is not zero.
- YouTube — analytics arrives with a delay of about two days. For channels above 1,000 subscribers the platform rounds the subscriber count to three significant digits; the exact growth is
subscribers_gained − subscribers_lost.dislikesmay be negative on some days — YouTube counts removed dislikes as a negative value. - Instagram — follows and unfollows are only available as weekly windows, so they are not part of the daily series. Use the period summary to get their total.
- TikTok — the platform only exposes cumulative counters. Daily series are computed by us as the difference between snapshots and start from the day the account was connected.
History starts from the day an account was connected to the agency platform — earlier data is not available.
Errors
An error is a JSON object: {"error": "message", "code": "bad_range"}.
400 bad_range,bad_metrics— invalid parameters.401 unauthorized,invalid_key— the key is missing or not valid.404 not_found— the account is not among yours.429 rate_limited— too many requests.500 internal— a failure on our side. Retry later; if it persists, contact your account manager.
Endpoints
Base URL — https://api.buzzmybrand.co/v1. All endpoints are read-only.
List accounts
/v1/accountsclient keyAll connected accounts with their current follower count. The account id is used by the other endpoints.
| Parameter | Type | Description |
|---|---|---|
format | json | csv | Response format. |
curl https://api.buzzmybrand.co/v1/accounts -H "Authorization: Bearer buzz_ck_…"{
"client": "Example Brand",
"accounts": [
{
"id": "cm1abc…",
"platform": "youtube",
"platformLabel": "YouTube",
"handle": "@examplebrand",
"name": "Example Brand",
"avatarUrl": "https://…",
"followers": 125000,
"followersDate": "2026-09-23"
}
]
}Daily metrics
/v1/accounts/{id}/dailyclient keyDaily series of account metrics for a period — one row per day.
| Parameter | Type | Description |
|---|---|---|
from | YYYY-MM-DD | Period start, inclusive. Defaults to 30 days before the end date. |
to | YYYY-MM-DD | Period end, inclusive. Defaults to today. |
format | json | csv | Response format, json by default. |
metrics | string | Comma-separated metric keys, e.g. views,reach. All metrics by default. |
curl "https://api.buzzmybrand.co/v1/accounts/cm1abc…/daily?from=2026-09-01&to=2026-09-07&metrics=views,followers" \
-H "Authorization: Bearer buzz_ck_…"{
"account": { "id": "cm1abc…", "platform": "youtube", "handle": "@examplebrand" },
"from": "2026-09-01",
"to": "2026-09-07",
"metrics": ["followers", "views"],
"days": [
{ "date": "2026-09-01", "followers": 124100, "views": 18420 },
{ "date": "2026-09-02", "followers": 124300, "views": 21007 }
]
}Posts
/v1/accounts/{id}/postsclient keyPosts published within the period with their latest metrics. Newest first, paginated.
| Parameter | Type | Description |
|---|---|---|
from | YYYY-MM-DD | Period start, inclusive. Defaults to 30 days before the end date. |
to | YYYY-MM-DD | Period end, inclusive. Defaults to today. |
format | json | csv | Response format, json by default. |
limit | 1–200 | Posts per page, 50 by default. |
offset | number | How many posts to skip — for the next pages. |
curl "https://api.buzzmybrand.co/v1/accounts/cm1abc…/posts?from=2026-09-01&limit=20" \
-H "Authorization: Bearer buzz_ck_…"{
"account": { "id": "cm1abc…", "platform": "instagram", "handle": "@examplebrand" },
"from": "2026-09-01",
"to": "2026-09-23",
"total": 34,
"limit": 20,
"offset": 0,
"posts": [
{
"id": "cm9xyz…",
"url": "https://www.instagram.com/reel/…",
"title": "Post caption…",
"type": "reel",
"durationSec": null,
"publishedAt": "2026-09-20T15:04:00.000Z",
"thumbnailUrl": "https://…",
"metrics": { "views": 48200, "reach": 39100, "likes": 2140, "comments": 88, "shares": 190, "saves": 305 },
"metricsDate": "2026-09-23"
}
]
}metricsDate): views keep growing after the period ends. Metrics are refreshed for recent posts — roughly the last 50 on Instagram and the last 200 videos on YouTube and TikTok; older posts keep their last known values. type is the platform's own media type (for example video, reel, carousel_album, image). Thumbnail links are signed by the platform and may expire.Audience
/v1/accounts/{id}/audienceclient keyFollower demographics — gender, age, countries, cities — as provided by the platform; for YouTube also traffic sources and content formats. Latest snapshot.
curl https://api.buzzmybrand.co/v1/accounts/cm1abc…/audience -H "Authorization: Bearer buzz_ck_…"{
"account": { "id": "cm1abc…", "platform": "instagram", "handle": "@examplebrand" },
"dimensions": [
{
"dimension": "age",
"updatedAt": "2026-09-23T05:02:11.000Z",
"buckets": [{ "label": "25-34", "value": 12305 }, { "label": "18-24", "value": 5443 }]
}
]
}Period summary
/v1/reportclient keyTotals per platform for a period: followers, growth, summed account metrics and totals for content published within the period.
| Parameter | Type | Description |
|---|---|---|
from | YYYY-MM-DD | Period start, inclusive. Defaults to 30 days before the end date. |
to | YYYY-MM-DD | Period end, inclusive. Defaults to today. |
format | json | csv | Response format, json by default. |
curl "https://api.buzzmybrand.co/v1/report?from=2026-08-08&to=2026-09-07" -H "Authorization: Bearer buzz_ck_…"{
"client": "Example Brand",
"from": "2026-08-08",
"to": "2026-09-07",
"platforms": [
{
"platform": "instagram",
"accounts": [{ "id": "cm1abc…", "name": "examplebrand", "handle": "@examplebrand" }],
"followers": 54300,
"followersDelta": 1020,
"netGrowth": 998,
"account": { "reach": 812000, "views": 1402000, "subscribers_gained": 2410, "subscribers_lost": 1412 },
"avgViewSec": null,
"avgViewPct": null,
"engagementPct": 4.8,
"content": {
"published": 18,
"byType": [{ "type": "short_video", "count": 12 }, { "type": "carousel", "count": 6 }],
"views": 960000, "likes": 41000, "comments": 1300, "shares": 3900, "saves": 5200, "medianViews": 38000
}
}
]
}account is what the platform reports for the account over the days of the period (including views of older posts); content sums up posts published within the period. Content types: video, short_video (Shorts, Reels), carousel, post, live.