---
title: "TikTok"
description: "New TikTok videos whose caption, hashtags or speech name your keyword, with views, likes and the creator's reach."
canonical: https://docs.mentio.dev/platforms/tiktok
markdown: https://docs.mentio.dev/platforms/tiktok.mdx
---

# TikTok

New TikTok videos whose caption, hashtags or speech name your keyword, with views, likes and the creator's reach.

Mentio finds new TikTok videos whose caption or hashtags contain your keyword, or that **say it out loud**, read from their subtitles. TikTok's search is loose, so every result is checked against the keyword.

| `platform`                    | `tiktok`                                                       |
| ----------------------------- | -------------------------------------------------------------- |
| What is found                 | Captions, hashtags and speech (subtitles) of new videos        |
| Freshness                     | About every 3 hours; a quiet keyword slows down to twice a day |
| Last 30 days on a new keyword | Yes, the newest 10                                             |

## Track it [#track-it]

Create a keyword limited to TikTok. Leave `platforms` out to search every platform.

TypeScript:

```ts
const response = await fetch('https://api.mentio.dev/v1/keywords', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.MENTIO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "term": "Acme",
    "kind": "brand",
    "platforms": [
      "tiktok"
    ]
  }),
});

const data = await response.json();
console.log(data);
```

Python:

```python
import os
import requests

response = requests.post(
    "https://api.mentio.dev/v1/keywords",
    headers={"Authorization": f"Bearer {os.environ['MENTIO_API_KEY']}"},
    json={
      "term": "Acme",
      "kind": "brand",
      "platforms": [
        "tiktok"
      ]
    },
)
print(response.json())
```

cURL:

```bash
curl -X POST "https://api.mentio.dev/v1/keywords" \
  -H "Authorization: Bearer $MENTIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "term": "Acme",
  "kind": "brand",
  "platforms": [
    "tiktok"
  ]
}'
```

## Read its mentions [#read-its-mentions]

Filter the mentions list to TikTok. `minViews=1000` keeps the videos with at least a thousand plays.

TypeScript:

```ts
const response = await fetch('https://api.mentio.dev/v1/mentions?platforms=tiktok&minViews=1000', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.MENTIO_API_KEY}`,
  },
});

const data = await response.json();
console.log(data);
```

Python:

```python
import os
import requests

response = requests.get(
    "https://api.mentio.dev/v1/mentions?platforms=tiktok&minViews=1000",
    headers={"Authorization": f"Bearer {os.environ['MENTIO_API_KEY']}"},
)
print(response.json())
```

cURL:

```bash
curl -X GET "https://api.mentio.dev/v1/mentions?platforms=tiktok&minViews=1000" \
  -H "Authorization: Bearer $MENTIO_API_KEY"
```

Response (trimmed):

```json
{
  "data": [
    {
      "id": "mm_8f2k1x9q",
      "status": "open",
      "relevant": true,
      "keyword": {
        "id": "kw_123",
        "term": "Acme"
      },
      "post": {
        "publishedAt": "2026-11-07T14:32:10.000Z",
        "platform": "tiktok",
        "kind": "post",
        "url": "https://www.tiktok.com/@buildwithlea/video/7432109876543210987",
        "text": "5 tools I use every day as a founder #startup #acme\n\n🎙 and the last one is Acme, it reads every review for me",
        "engagement": {
          "likes": 3100,
          "reposts": 210,
          "replies": 88,
          "views": 74000,
          "bookmarks": 410
        }
      },
      "author": {
        "name": "Lea builds",
        "handle": "buildwithlea",
        "url": "https://www.tiktok.com/@buildwithlea",
        "followers": 22000
      },
      "classification": {
        "relevance": 82,
        "sentiment": "positive",
        "intents": [
          "praise"
        ],
        "note": "A user recommends Acme by name."
      }
    }
  ],
  "nextCursor": "eyJ0IjoxNzMxMDAwMDAwfQ"
}
```

## What a mention carries [#what-a-mention-carries]

* `post.text`: the caption, plus any hashtag the caption does not already spell out. A video found by what it says adds its transcript after a `🎙` mark (around the keyword when it is long).
* `keyword.matchedIn`: `speech` when the keyword is only in what the video says, `text` when it is in the caption or hashtags.
* `post.engagement`: views, likes, comments (as replies), shares (as reposts) and saves (as bookmarks).
* `author`: name, profile link, avatar, followers, following and video count.

The rest is the same on every platform: relevance, sentiment and intent from the classifier, your triage, and the keyword it matched. See the [mention shape](/api).

## Mute an author [#mute-an-author]

`tiktok.com/@name`, a video link (it names its creator), or `@name`. Short share links (`vm.tiktok.com`) are refused: open them and paste the full link. See [Mute authors](/alerts#mute-authors).

## Limits [#limits]

* Speech is read only for videos that have subtitles (the creator's, or TikTok's automatic ones), about one in four. A video without them is found by its caption and hashtags alone.
* Keywords created before TikTok was added (September 2026) keep the platforms they had: turn TikTok on per keyword.
