TikTok Audience Demographics

TikTok audience demographics API for raw analytics data

Access raw TikTok audience data including age splits, gender distribution, city and country reach, and video watch-time metrics. Build custom dashboards with the same data TikTok exposes through its native analytics.

Last updated: May 2026

API key authScheduled publishing14 platforms
Quick start
API request
1// Raw TikTok account analytics: GET /api/v1/analytics/social-account/raw2// Query: teamId, platformType (one connected account per team per platform)3const res = await fetch(4  "https://api.bundle.social/api/v1/analytics/social-account/raw?teamId=team_123&platformType=TIKTOK",5  { headers: { "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY } }6);7const { socialAccount, items } = await res.json();8// Newest first. items[0].raw matches what we store from TikTok (see API reference):9// { accountInfo: { followers_count, following_count, videos_count, total_likes, metrics, ... } }

Accessing TikTok analytics natively

TikTok's native analytics API requires separate app credentials and its own query patterns.
Audience demographic data lives behind a different API surface than post-level metrics.
Building a custom reporting dashboard means stitching together multiple TikTok API endpoints.

What bundle.social handles

Pull raw TikTok audience demographics through the bundle.social analytics API without managing TikTok credentials separately.
Get age splits, gender breakdown, top cities, country reach, and watch-time data in one response.
Use the raw data to build your own dashboards, client reports, or audience analysis tools.

Raw TikTok audience data, yours to use

bundle.social collects TikTok audience demographics on your behalf from connected accounts and makes the raw data available via API. Age groups, gender splits, city reach, and watch time. No aggregation that hides the real numbers.

Workflow

How it works

Connect a TikTok account, then GET raw social account analytics for team and platform to read the stored TikTok profile payload.

01

Connect a TikTok account

Connect a TikTok creator or business account via the OAuth connect URL flow.

02

Pull raw account analytics

GET /api/v1/analytics/social-account/raw with teamId and platformType=TIKTOK. The response items array contains raw payloads from TikTok, newest first.

03

Build your dashboards

Read items[0].raw.accountInfo and any nested metrics. Shape matches the TikTok Research API / Display API data we store for your account.

Capabilities

TikTok demographic data for reporting and audience analysis

Age groups, gender, cities, countries, and watch time. Raw data from TikTok through one API.

Watch time and video metrics

Access average watch duration, total watch time, and video retention data for published TikTok content.

Top cities and countries

See which cities and countries your TikTok audience is concentrated in to guide geo-specific campaigns.

Age group splits

See what percentage of your TikTok audience falls into each age bracket, from 13-17 through 55+.

Gender distribution

Understand the gender breakdown of your TikTok audience to inform creative direction and targeting.

Raw data for custom dashboards

The response returns raw JSON data so you can pipe it directly into Looker, Tableau, Notion, or your own reporting frontend.

No TikTok API credentials required

bundle.social handles TikTok auth and data collection. Your product just needs the bundle.social API key.

Developer example

Fetch raw TikTok social account analytics

Examples use bundle.social's public API shape: API key authentication, a post date, selected social account types, and platform-specific data.

TypeScript
API request
1// GET /api/v1/analytics/social-account/raw?teamId=...&platformType=TIKTOK2// Response: { socialAccount, items: SocialAccountAnalyticsRaw[] }3// Each item has: id, socialAccountId, analyticsId, raw, forced, createdAt, updatedAt4// TikTok item.raw (stored by bundle.social) is shaped like:5// { accountInfo: { followers_count, following_count, videos_count, total_likes, metrics, ... } }67const res = await fetch(8  "https://api.bundle.social/api/v1/analytics/social-account/raw?teamId=team_123&platformType=TIKTOK",9  { headers: { "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY } }10);11const { socialAccount, items } = await res.json();12const latest = items[0];13const tiktok = latest?.raw as { accountInfo?: Record<string, unknown> };14// Example: const followers = tiktok?.accountInfo?.followers_count;

Supported content

Age group splitsGender distributionTop citiesTop countriesWatch time by dayVideo-level metrics

Honest limitations

  • Audience demographic data availability depends on the connected TikTok account type and granted permissions.
  • Some data points require a minimum follower count or account age before TikTok exposes them.

Guarantees

Developer-first infrastructure

2% error rate

We handle the platform edge cases, media processing, and rate limits so your requests succeed.

Verbose errors

When native APIs fail, we return human-readable error messages and actionable recovery steps.

Flat pricing

No per-post counting. Predictable pricing for teams managing many users, workspaces, and connected accounts.

Same-day support

Direct access to the engineers building the API. We respond to technical issues the same day. Sometimes the same hour. Test us c;

FAQ

Questions developers ask before building

What TikTok demographic data is available?

bundle.social provides raw audience demographics including age group splits, gender distribution, top cities, top countries, and watch-time metrics for connected TikTok accounts.

Do I need TikTok API credentials?

No. bundle.social handles TikTok authentication and data collection. You only need a bundle.social API key.

Can I use this data in my own dashboards?

Yes. The raw JSON response can be piped into any reporting tool, dashboard builder, or data warehouse.

How often is the data refreshed?

Data refresh frequency depends on TikTok's API polling limits for the connected account type. Check the bundle.social docs for current refresh intervals.