# How do I get the view count of a TikTok video?

TikTok. Checked September 2026.

Call the Openhandle post endpoint with the video ID. The response has `metrics.views`, plus likes, comments, shares, and saves, as integers. You need an API key, not a TikTok login or a Research API application.

If you have the video URL, pass it to the fetch endpoint first. It returns the video with its `id`. Short links from the app are expanded for you.

## GET /v1/tiktok/posts/{id}

```bash
curl "https://api.openhandle.dev/v1/tiktok/posts/920100000000000001" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"
```

```ts
import { OpenHandle } from '@openhandle/sdk';

const openhandle = new OpenHandle({ apiKey: process.env.OPENHANDLE_API_KEY! });
const response = await openhandle.tiktok.post('920100000000000001').get();

console.log(response.data.metrics.views); // 23000
```

200 OK:

```json
{
  "platform": "tiktok",
  "resource": "post",
  "capturedAt": "2026-09-18T09:31:07Z",
  "source": "live",
  "data": {
    "id": "920100000000000001",
    "url": "https://www.tiktok.com/@pixel_orchard_tt_test/video/920100000000000001",
    "caption": "A synthetic orchard loop. #pixelorchard",
    "createdAt": "2026-08-09T15:30:00Z",
    "metrics": {
      "views": 23000,
      "likes": 1200,
      "comments": 24,
      "shares": 73,
      "saves": 88
    }
  }
}
```

Trimmed to the fields this question needs. The full post has the author, media renditions, sound, hashtags, and more. The example is a Test video, so you can run it on a free Test key.

## Why the official TikTok APIs do not do this

The TikTok Research API is for approved academic and non-profit research and needs an application. The Display API only reads the account that logged in. Neither lets a brand or a developer read the view count of a video they do not own.

## What a view means

On TikTok a view is a play. Loops count. A video watched three times in a row by one person adds three. That is the same number the app shows, without the "23K" rounding. See [metric semantics](/docs/concepts/metric-semantics) for how views, likes, and shares differ per platform.

## Payouts and reports

- **Use live for money.** Add `?freshness=live` when the number decides a payout or a contract. The default answers from a capture up to 24 hours old at a lower price.
- **Store the capture time.** Every answer carries `capturedAt`. Store it with the number so a report can be repeated and disputed.
- **Fresh uploads.** A video posted minutes ago can show low or missing metrics for a while. A metric TikTok has not published yet is `null`, never `0`.

## When this does not work

These answers are definitive. Store them, do not retry them.

| Situation | Status | Code |
|---|---|---|
| The video is deleted or never existed | 404 | `POST_NOT_FOUND` |
| The account is private | 403 | `PROFILE_PRIVATE` |
| The identifier is malformed | 400 | `INVALID_IDENTIFIER` |

```json
{
  "error": {
    "code": "POST_NOT_FOUND",
    "message": "This post was not found.",
    "requestId": "req_01j8…",
    "retryable": false
  }
}
```

A region-locked video that is public in one country and hidden in another answers as the platform shows it to a logged-out visitor. Every new workspace starts with 100 free live requests, no card needed.

## Related

- [TikTok without the Research API](https://openhandle.dev/docs/guides/tiktok-data-without-research-api): Commercial use of public TikTok data without the academic program.
- [Get TikTok user videos](https://openhandle.dev/docs/guides/get-tiktok-user-videos): A creator’s videos with views, likes, comments, and shares, one page at a time.
- [Freshness and caching](https://openhandle.dev/docs/concepts/freshness-and-caching): Live, or up to 24 hours, 7 days, or 30 days old. You pick per request.
