Most TikTok analytics work happens at two altitudes: the single video (views, likes, completion) and the creator account (follower count, total hearts, post cadence). Between those two layers sits an organizational stratum that almost nobody mines: playlists (TikTok internally calls them "mixes") and collections (the user's saved-video folders). These are the closest thing TikTok ships to explicit, human-authored taxonomy. A creator who groups twelve videos under "Studio Build Diary" or saves forty clips into a collection called "Espresso Setups" has done labelling work that no embedding model will reproduce for free.
The TikLiveAPI service exposes four endpoints that turn this curation layer into queryable data: /user-playlists/, /playlist-posts/, /user-collections/, and /collection-posts/. This article is written for two audiences in parallel: content strategists who want to find topical white space, and recommendation engineers who want stronger candidate-generation signals than raw watch logs. We will cover the response shapes, seven concrete recipes, the limits you will hit in practice, and a focused FAQ.
If you are new to the platform, you can grab 100 free credits by registering and verifying your email on the pricing page, then try the calls live in the playground. Full reference is at the documentation root, and the user-scoped endpoints are grouped under documentation/users/.
All four endpoints take an X-Api-Key header. Two of them are seeded by a TikTok numeric user id (which you can resolve from a handle via /userid/), and two are seeded by a playlist or collection id you obtained from the first pair. The base URL is https://api.tikliveapi.com.
GET https://api.tikliveapi.com/user-playlists/?userid=107955&count=20&cursor=0
X-Api-Key: YOUR_KEY
The top key is mix_list (because TikTok still calls playlists "mixes" internally). Each entry carries a mix id, a title, a cover image, and a count of how many videos the playlist contains. Pagination is cursor-based.
GET https://api.tikliveapi.com/playlist-posts/?playlist_id=7012345678901234567&count=30&cursor=0
X-Api-Key: YOUR_KEY
Maximum 30 items per page in the playlist category (35 in the posts category alias). Returns the standard video objects with aweme_id, video_id, play_count, digg_count, and the author block. Pair with /post-detail/ when you need watermark-free play/hdplay links for any single item.
GET https://api.tikliveapi.com/user-collections/?userid=107955&count=20&cursor=0
X-Api-Key: YOUR_KEY
The top key is collection_list. Each entry has a collection id, a name, an item count, and a cover. Collections are the user's saved-video folders, not their own uploads, so this surface is fundamentally different from playlists: it reflects taste, not output.
GET https://api.tikliveapi.com/collection-posts/?collection_id=7100000000000000000&count=30&cursor=0
X-Api-Key: YOUR_KEY
Returns the saved videos with the standard fields. Authorship across the returned items will be heterogeneous (different creators), which is what makes collections so valuable as a similarity-graph signal.
Playlists are self-authored curation of own uploads: a creator slicing their own catalog into themed runs. Collections are cross-creator taste signals: the user saved videos from across TikTok into a named bucket. These two streams answer different questions. Confusing them is the most common mistake in this corner of the API.
A curation profile compresses a creator's entire playlist surface into a small object you can store, diff, and compare. The pipeline:
/userid/./user-playlists/ until hasMore is false, collecting every mix_list entry./playlist-posts/ and capture aweme_id, play_count, digg_count, and the post timestamp.play_count.import requests
H = {"X-Api-Key": "YOUR_KEY"}
BASE = "https://api.tikliveapi.com"
def all_playlists(userid):
out, cursor = [], 0
while True:
r = requests.get(f"{BASE}/user-playlists/",
params={"userid": userid, "count": 20, "cursor": cursor},
headers=H, timeout=20).json()
out.extend(r.get("mix_list", []))
if not r.get("hasMore"): break
cursor = r.get("cursor", 0)
return out
The most actionable number this surfaces is the playlist lift ratio: median views of videos that appear in a playlist divided by median views of videos that do not. Creators with a lift ratio above 1.5 are getting real distribution benefit from grouping their work and should keep building playlists. A ratio near 1.0 means the playlist apparatus is decorative for them and other strategies should be prioritized.
Collections are the closest thing TikTok has to a user-declared interest history. Because /user-collections/ returns names and item counts, you can snapshot a target account weekly and watch which buckets grow.
Schema for a single snapshot row:
{
"userid": "107955",
"snapshot_at": "2026-05-29",
"collections": [
{"id": "7100...", "name": "Espresso Setups", "count": 47},
{"id": "7101...", "name": "Knife Sharpening", "count": 12}
]
}
Week over week, compute three quantities per collection: delta in item count (velocity), share-of-total (focus), and rank change (priority shift). A creator whose "Knife Sharpening" collection jumps from 12 to 31 items in three weeks while "Espresso Setups" stays flat is signalling a topical pivot weeks before it shows up in their public uploads. For audience-research firms tracking influencers, this is a leading indicator nobody else is consuming.
Most niche discovery starts from hashtags or search keywords. Both are noisy: a single trending tag drags in unrelated content, and search is biased toward the algorithm's current obsessions. Collections cut through this. A collection named "POV Kitchen Storytelling" is a hand-curated cluster of videos that one human believes belong together. The intersection of many such collections is a niche map.
Pipeline: pick a seed creator in your target vertical, pull their collections via /user-collections/, then for every video in those collections expand the author. Now run /user-collections/ on those authors. After two or three hops you have a graph where edges are "this author appears inside that author's collection." Run a community-detection pass (Louvain works fine) and the dense clusters that are not labelled by any obvious hashtag are your hidden niches.
This recipe is especially powerful in non-English markets where hashtag conventions are weaker but collection naming remains descriptive.
For recommendation engineers, playlists are a gift: they are human-defined positive sets. Treat each playlist as a transaction in a market-basket model, where the items are aweme_id values pulled from /playlist-posts/. Two videos that co-occur in many playlists across many creators are similar in a way that watch-time co-occurrence cannot capture, because playlist co-occurrence is intentional.
Concrete metric: compute Jaccard similarity between any two videos based on the set of playlists they appear in. A weighted variant uses inverse playlist size (large playlists carry less signal per pair) and inverse creator overlap (penalize pairs that only co-occur because the same creator put them together). Feed the resulting item-item similarity matrix into your candidate generator alongside your existing embedding-based recall. In our internal tests on a 50,000-playlist sample this lifted recall@50 by 6 to 9 percent for tail items.
from collections import defaultdict
video_to_playlists = defaultdict(set)
for pl in playlists:
for v in pl["videos"]:
video_to_playlists[v["aweme_id"]].add(pl["id"])
def jaccard(a, b):
A, B = video_to_playlists[a], video_to_playlists[b]
if not A or not B: return 0.0
return len(A & B) / len(A | B)
If you are building a TikTok-style "More like this" surface inside your own product, collections give you ready-made positive bags. For a target user, fetch their /user-collections/, take the top-K most recently updated collections, expand each via /collection-posts/, and use the resulting video set as the positive seed for nearest-neighbour retrieval against your full catalog.
Why this works better than "videos the user liked": likes on TikTok are noisy and reactive, while saving to a named collection is deliberate. The intent signal is several times stronger. Engineers we have spoken to report that mixing collection-seeded retrieval with like-seeded retrieval at a 70/30 weight beats either signal alone.
One caveat: collections are sparse. Most users have either zero collections or fewer than five. Build your retrieval to fall back gracefully when a user has no collection signal.
Creative agencies and in-house brand teams routinely assemble mood boards before pitching campaigns. The traditional process is one researcher scrolling TikTok for half a day and screenshotting. A playlist-driven pipeline replaces that with a reproducible job.
/user-playlists/ then /playlist-posts/./post-detail/ to get the watermark-free play link and the cover frame.The output looks like a mood board but with provenance: every tile traces back to a named playlist on a named creator, which makes the document defensible in client review meetings in a way that a screenshot grid never is.
Both mix_list and collection_list are stable enough to checkpoint. Store a hash per playlist or collection (concatenate sorted aweme_ids, hash with SHA-1, truncate). When the hash changes between snapshots, you have a drift event. The interesting drift dimensions:
Drift detection at the collection level on an audience of, say, a hundred fashion influencers gives a brand intelligence team a daily feed of "what these tastemakers are paying attention to right now," which is exactly the input a forecasting team needs.
The curation endpoints are powerful but they are not magic. The honest list:
/playlist-posts/ returns at most 30 items per page in the playlist category (35 in posts). Long playlists need cursor iteration; budget the credit cost up front./user-liked/ instead. Likes and collections live in different surfaces and answer different questions.aweme_id whose underlying video has since been deleted. Always check the /post-detail/ response shape before assuming the item is alive.For a content strategist building a quarterly competitive report, the end-to-end flow looks like this:
For a recommendation engineer integrating playlist signal into an existing model:
A playlist (returned by /user-playlists/ under the mix_list key) groups a creator's own uploads into a themed run. A collection (returned by /user-collections/ under the collection_list key) is the user's private-style folder of saved videos from across TikTok. Playlists describe output; collections describe taste.
TikTok's internal name for the playlist feature is "mixes." The endpoint preserves that naming so it stays compatible with TikTok's wire format. Treat mix_list and "playlist list" as synonymous in your data model.
/playlist-posts/ returns up to 30 items per page in the playlist category (35 in the posts category alias). Use the cursor field returned in the response to fetch the next page until hasMore is false.
Not directly. /playlist-posts/ takes a playlist_id. You typically discover playlist ids by calling /user-playlists/ on the owning creator first. If you have a video URL, you can call /post-detail/ and the response will include the parent mix id when one exists.
They can, but in practice they overwhelmingly contain videos saved from other creators. This is exactly what makes collections a strong cross-creator taste signal.
One credit per request, with no per-endpoint surcharge. Pagination costs one credit per page. There are no monthly commitments and credits do not expire. See pricing for current rates.
Send your API key in the X-Api-Key request header. The proxy will also accept Authorization: Bearer YOUR_KEY, but X-Api-Key is the canonical header.
The user-scoped endpoints (including playlists and collections) are documented under documentation/users/, and you can run each one against your account in the playground before committing them to code.
No. The service is strictly read-only by design. All four curation endpoints return data; none of them mutate state on TikTok.
For most teams, longitudinal collection tracking (recipe 2) returns more strategic value per credit than any other recipe. It surfaces taste shifts before they are visible in uploads, which is exactly the kind of leading indicator that justifies an analytics budget.
Ready to put what you read into code? Try our endpoints live or grab the full reference.