InsightSocial API
How-to

Get the videos a TikTok user has liked

List the videos a TikTok account has liked, with each video's author, views, likes and caption, by handle. 10 credits per page of 30 videos.

To list the videos a TikTok account has liked, call GET /v1/tiktok/user/liked with the account's handle (or its numeric user_id). Each page returns 30 videos, newest first, each with its own author, view, like, comment, share and save counts, caption and a playable video URL. It costs 10 credits a page. Most accounts hide this list; a hidden list comes back as a not-found and costs nothing. TikTok's official API only offers liked-videos data through its Research API, which is limited to approved academic researchers.

Cost

10 credits per page of 30 videos. Walking 10 pages (300 videos) costs 100 credits. Asking for the same page again within 6 hours is answered from the shared cache for 2 credits. Failed calls, empty results and hidden lists are free.

Why do most accounts return not found?

Most TikTok accounts hide the videos they have liked. When the list is hidden, the endpoint answers with a 404 not found and the call is refunded, so it costs 0 credits. Retrying the same account returns the same answer, so record it and move on.

A 404 does not tell you whether the list is hidden or the account does not exist. If you need to know which, look the account up with GET /v1/tiktok/profile (10 credits).

How do I find the handle?

The handle is the name after the @ in the profile URL: https://www.tiktok.com/@chipotle has the handle chipotle. Send it without the @.

If you already have the account's numeric ID, send it as user_id instead, which gives faster responses. GET /v1/tiktok/profile returns the ID for a handle.

Make the request

cURL
curl "https://api.insightsocial.app/v1/tiktok/user/liked?handle=chipotle" \
  -H "x-api-key: $INSIGHTSOCIAL_API_KEY"

What comes back

A real response from 2026-10-14 for @chipotle, shortened: one video instead of 30, long URLs cut, and the video's creator replaced with a placeholder.

Response (shortened)
{
  "success": true,
  "endpoint": "/v1/tiktok/user/liked",
  "schema_version": "2",
  "data": {
    "items": [
      {
        "post": {
          "id": "7694937734091263262",
          "url": "https://www.tiktok.com/@example_creator/video/7694937734091263262",
          "kind": "short",
          "content": {
            "text": "whew I truly love you… #chipotle #margarita #newyork",
            "media_urls": ["https://v45.tiktokcdn-eu.com/…"],
            "thumbnail_url": "https://p19-common-sign.tiktokcdn-eu.com/…",
            "duration_seconds": 13.281
          },
          "author": { "id": "…", "username": "example_creator", "display_name": "Example Creator", "verified": false },
          "engagement": { "views": 7822, "likes": 260, "comments": 9, "shares": 58, "saves": 8 },
          "published_at": "2026-10-10T07:29:21.000Z",
          "ext": {
            "music_id": "7602834704501508112",
            "download_count": 0,
            "region": "US",
            "on_screen_texts": ["trying the chipotle margarita 😍"]
          }
        }
      }
    ],
    "total": null,
    "truncated": null
  },
  "pagination": { "next_cursor": "v2c.Frx-WnqEJaeYmKVE…", "has_more": true, "page_size": 30 },
  "unavailable": [],
  "credits_used": 10
}
FieldWhat it holds
data.items[].postOne liked video in the shared post shape: caption, video and thumbnail URLs, duration, views, likes, comments, shares, saves.
data.items[].post.authorThe account that posted the video, not the account whose likes you asked for.
data.items[].post.published_atWhen the video was posted, not when it was liked.
data.items[].post.ext.on_screen_textsText the creator typed onto the video with TikTok's text tool. Present on 16 of the 30 videos in this sample.
data.items[].post.ext.music_idThe sound the video uses.
data.totalnull: TikTok does not say how many videos the account has liked.

How do I get more than 30 videos?

Send pagination.next_cursor back as cursor, with the same handle, and stop when pagination.has_more is false. Each page is 10 credits.

Python: walk the first 5 pages
import os
import requests

BASE = "https://api.insightsocial.app/v1"
HEADERS = {"x-api-key": os.environ["INSIGHTSOCIAL_API_KEY"]}

params = {"handle": "chipotle"}
liked = []
for _ in range(5):
    body = requests.get(f"{BASE}/tiktok/user/liked", params=params, headers=HEADERS, timeout=120).json()
    liked += body["data"]["items"]
    if not body["pagination"]["has_more"]:
        break
    params["cursor"] = body["pagination"]["next_cursor"]

See Pagination for the full rules.

What are the limits?

  • Hidden lists. Most accounts hide their liked videos. A hidden list is a 404 not-found and is refunded.
  • One direction only. This is what one account liked. TikTok has no list of who liked a given video, so the API cannot return one.
  • Order. The list comes newest first, but published_at is the video's post date, so publish dates on a page are not in order: one page mixed videos posted between October 4 and October 12.
  • No total. data.total is null; you find the end of the list when has_more is false.
  • Other people's videos. Every item is a video by another creator, with that creator's own counts.

What can I build with it?

  • Brand affinity. A brand's liked list shows which creator videos it engages with. All 30 videos on the first page of Chipotle's list mention Chipotle in the caption or on-screen text.
  • Creator research. What a creator likes shows the niches and peers they follow, which helps when you pitch them.
  • UGC sourcing. Videos a brand already liked are a short list of user content to ask permission to reuse.

On this page