Read TikTok results

TikTok analytics API: choose the right data

For a TikTok analytics API integration, first choose whose data you need: an authorized user's public videos, advertising reports, or public data for approved research. Postdom offers a separate path for reading performance snapshots of posts in your workspace. Those snapshots are not a complete copy of TikTok's native analytics.

Start with TikTok's scope reference or jump to the Postdom read path.

Choose the data source

Which TikTok analytics API path fits your task?

Match the request to the account, video or report you can access. A publishing permission is not a substitute for a read permission.

Advertising reports

Start with API for Business reporting. TikTok's official reporting SDK reference lists report requests, metrics, dimensions and advertiser inputs. Choose the report supported by your business access; this is not Postdom's post snapshot.

Public data for research

The Research API needs an approved research project. Its getting-started guide explains the research client, client access token and public-video query. It is a separate application path, not a shortcut to private creator analytics.

Posts in your Postdom workspace

Use get_performance for stored snapshots of a Postdom post or connected account. Supply a Postdom ID and Postdom authentication. A TikTok username alone cannot identify this read.

Read a Postdom snapshot →

Query a known video through TikTok

For the Display API route, send the authorized user's video ID with video.list access. TikTok checks that the video belongs to that user.

The outline requests native counter names. These are not the field names in Postdom's normalized model below. Read data.videos and the returned error object.

Open TikTok's Query Videos request and response reference →

Request outline · not executed here

POST https://open.tiktokapis.com/v2/video/query/
  ?fields=id,view_count,like_count,comment_count,share_count
Authorization: Bearer <TIKTOK_USER_ACCESS_TOKEN>
Content-Type: application/json

{
  "filters": {
    "video_ids": ["<TIKTOK_VIDEO_ID>"]
  }
}

Replace the placeholders in your own client and join the URL onto one line. Keep tokens out of this page and out of public source code.

Postdom's normalized fields

What can Postdom return for a TikTok post?

4 of 9 fields have available coverage. A coverage label describes the integration, not whether your latest response contains a measurement.

The table applies only to Postdom's TikTok model. In particular, never does not mean a metric is absent from every native TikTok API.

On a narrow screen, scroll the table sideways. Keyboard users can focus the table and use the arrow keys.

Postdom coverage, with a separate verification date for each field
FieldPostdom coverageWhat to do with it
ViewsviewsThe view count in a normalized TikTok performance snapshot.AvailableavailablePostdom verification: .

Postdom supports this field when a usable snapshot exists. Available coverage does not guarantee a value in every response.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

LikeslikesThe like count in a normalized TikTok performance snapshot.AvailableavailablePostdom verification: .

Postdom supports this field when a usable snapshot exists. Available coverage does not guarantee a value in every response.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

CommentscommentsThe comment count in a normalized TikTok performance snapshot.AvailableavailablePostdom verification: .

Postdom supports this field when a usable snapshot exists. Available coverage does not guarantee a value in every response.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

SharessharesThe share count in a normalized TikTok performance snapshot.AvailableavailablePostdom verification: .

Postdom supports this field when a usable snapshot exists. Available coverage does not guarantee a value in every response.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

SavessavesA nullable field; an aggregate saves key does not verify TikTok saves.UnverifiedunverifiedPostdom verification: Not verified.

Postdom has not verified this field's TikTok coverage. Keep it null, not zero.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

Watch timewatch_time_sPostdom's total watch-time field, in seconds.NeverneverPostdom verification: .

Not available in Postdom's normalized TikTok model; this field stays null. This is not a claim about every native TikTok API.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

Average watch percentageavg_watch_pctPostdom's average percentage-watched field.NeverneverPostdom verification: .

Not available in Postdom's normalized TikTok model; this field stays null. This is not a claim about every native TikTok API.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

Completion percentagecompletion_pctPostdom's completed-view percentage field.NeverneverPostdom verification: .

Not available in Postdom's normalized TikTok model; this field stays null. This is not a claim about every native TikTok API.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

Follower deltafollower_deltaAn account-level follower change field, not exact per-post attribution.EstimableestimablePostdom verification: .

Postdom classifies this field as estimable with suitable inputs. The label alone does not mean an estimate has been computed.

Coverage record

Postdom's internal evidence record: docs/verification/metric-availability.md. This records the integration's coverage, not all native TikTok products.

Fields without a verification date: Saves. They are excluded from the latest recorded verification date. A verification date is not the snapshot's capture time.

Saves: Unverified

Postdom has not verified TikTok saves. A saves number in an aggregate response does not establish a TikTok-specific measurement. Keep saves null and leave it out of numeric rankings.

Watch and completion metrics

Watch time, Average watch percentage, and Completion percentage: Never. Not available in Postdom's normalized TikTok model; this field stays null. This is not a claim about every native TikTok API. See what completion rate means and why null is not zero.

Follower delta: Estimable

Consecutive account snapshots can support a change estimate. That would be account growth over a period, not proof that one video caused it. The current post normalizer leaves this field null; it does not compute an estimate.

How these coverage labels are maintained

Coverage of Postdom's normalized TikTok model: 4 Available, 1 Estimable, 3 Never, 1 Unverified. These states do not describe every native TikTok API. The modification date summarizes dated records; it does not verify unverified rows or report a new live API check.

Latest dated coverage record: . This is not the page build time or a new live API check.

available
4
estimable
1
never
3
unverified
1

Read an existing post

Get the stored result through Postdom

In a configured Postdom MCP client, call get_performance with your Postdom post ID. Use one scope identifier: post_id or account_id, not both.

MCP tool: get_performance · argument outline

{
  "post_id": "<POSTDOM_POST_ID>"
}

The post-scoped tool calls GET /v1/posts/<POSTDOM_POST_ID>/performance. This reads stored snapshots; it does not force an on-demand native TikTok report.

Open the tool inputs and full response reference →
  1. Find the TikTok rows

    Inspect performance[] and select rows with platform: "tiktok". Use publish_id to identify the destination publish. One Postdom post can have more than one destination.

  2. Keep the value beside its context

    Read each field with its availability record and captured_at. Compare snapshots from the same publish. Do not mistake a coverage verification date for recent performance.

  3. Check an empty result before retrying

    If performance is empty, inspect eligibility. An ineligible result with publish_failed has no measurable platform post. Even an eligible result does not promise a future snapshot.

Before you rank posts

Null is not zero

A zero is a recorded value. A null field is missing. No snapshot means there is no usable record to compare. Treating all of them as zero can put an unmeasured post at the bottom of a report.

The required counters are all zero

These are recorded zeros, so a snapshot can exist. Keep zero in a numeric comparison; it does not mean the field is missing.

Invented normalization input

{
  "views": 0,
  "likes": 0,
  "comments": 0,
  "shares": 0
}

Computed snapshot output

{
  "views": 0,
  "likes": 0,
  "comments": 0,
  "shares": 0,
  "saves": null,
  "watch_time_s": null,
  "avg_watch_pct": null,
  "completion_pct": null,
  "follower_delta": null,
  "captured_at": "2026-08-22T00:00:00.000Z",
  "platform": "tiktok",
  "source": "poll"
}

Illustrative data, computed locally with Postdom's normalizer. The input is an analytics fragment, not a native TikTok response. The output is a snapshot, not the full API envelope; publish ID and availability records are omitted. Its date is invented, not a verification claim.

Shares is missing from the input

The normalizer creates no snapshot when a required counter is missing or unusable. It does not invent shares: 0. A real empty performance array needs its own eligibility check.

Invented normalization input

{
  "views": 125,
  "likes": 8,
  "comments": 0
}

Computed snapshot output

null

Illustrative data, computed locally with Postdom's normalizer. The input is an analytics fragment, not a native TikTok response. The output is a snapshot, not the full API envelope; publish ID and availability records are omitted. Its date is invented, not a verification claim.

Optional inputs contain numbers

Read the output, not just the input keys. Postdom applies its coverage rules to optional values; the follower field is not computed by this path. The table explains the individual states.

Invented normalization input

{
  "views": 125,
  "likes": 8,
  "comments": 0,
  "shares": 2,
  "saves": 12,
  "watch_time_s": 90,
  "avg_watch_pct": 50,
  "completion_pct": 25,
  "follower_delta": 3
}

Computed snapshot output

{
  "views": 125,
  "likes": 8,
  "comments": 0,
  "shares": 2,
  "saves": null,
  "watch_time_s": null,
  "avg_watch_pct": null,
  "completion_pct": null,
  "follower_delta": null,
  "captured_at": "2026-08-22T00:00:00.000Z",
  "platform": "tiktok",
  "source": "poll"
}

Illustrative data, computed locally with Postdom's normalizer. The input is an analytics fragment, not a native TikTok response. The output is a snapshot, not the full API envelope; publish ID and availability records are omitted. Its date is invented, not a verification claim.

For a numeric ranking, exclude null observations and retain recorded zeros. If a result is surprising, check the field's coverage before increasing polling. No TikTok rate-limit figure or guaranteed reporting interval is specified here.

Common questions

Access and missing metrics

Does TikTok have an analytics API?

TikTok offers different data APIs for different tasks. Display API video queries use an authorized user's videos; API for Business has reporting endpoints; Research API access requires an approved research project. Choose the product and its access requirements before choosing metric names. Postdom's snapshots are a separate integration path.

Can I retrieve analytics for any TikTok username through Postdom?

No. Postdom's performance tool reads stored snapshots for a Postdom post or connected account in your workspace. A public username or TikTok video ID is not a Postdom post ID and does not grant access to private analytics.

Why are saves missing in Postdom?

Postdom has not verified TikTok saves. A saves number in an aggregate response does not establish a TikTok-specific measurement. Keep saves null and leave it out of numeric rankings.

Can I read watch time and completion through Postdom?

Watch time, Average watch percentage, and Completion percentage: Never. Not available in Postdom's normalized TikTok model; this field stays null. This is not a claim about every native TikTok API. These are Postdom coverage states, not an inventory of all native TikTok analytics products.

Does follower delta tell me which video gained followers?

Consecutive account snapshots can support a change estimate. That would be account growth over a period, not proof that one video caused it. The current post normalizer leaves this field null. It does not calculate a follower estimate or attribute growth to a video.

When will a missing metric appear?

No fixed reporting interval or API quota is specified here. An available field still needs a usable snapshot; a pending response does not establish a fixed delay. Check captured_at and the per-field availability record. Re-reading stored snapshots does not force a fresh TikTok report.

Your next step

Read a post, or publish the video you already have

If your post is in Postdom, start with the read-only performance tool. If it is not published yet, follow the TikTok publishing guide with an accepted existing video URL or stored media handle. Postdom publishes supplied videos to TikTok, Instagram Reels, YouTube Shorts, LinkedIn, Facebook Reels, X, Snapchat Spotlight, Threads and Bluesky; it does not generate the video.