TikTok Public Data API: Profiles, Videos, Ads & Shop | SandBase
Read public TikTok profiles, videos, comments, Creative Center trends, and shop product data with one REST API. No SDK — one SandBase key, built for agents.

Pulling public TikTok data into an agent usually starts with a scavenger hunt: which mobile endpoint returns the follower count, why the field is secUid here and uniqueId there, and how paging cursors differ between the web and app surfaces. The data is public in the app, but wiring it into a workflow reliably is a project of its own.
The SandBase TikTok public data API removes that setup tax. It reads public TikTok profiles, videos, comments, search, Creative Center trend signals, and shop product data through plain REST endpoints — one SandBase API key, synchronous JSON, no SDK. The endpoint reference only guarantees the envelope (id, status, model, and outputs[0].data); the business fields shown below are an illustrative structure, not a guaranteed schema, so confirm the exact fields against a live response.
This is not TikTok’s official developer platform. Use TikTok for Developers for Login Kit and the Content Posting API, and TikTok API for Business to manage an authorized Ads Manager account. Use SandBase when your workflow needs public, read-only discovery, monitoring, or research data. Ready to try it? Get a SandBase API key and browse the TikTok endpoints.
Key takeaway
- One API reads public TikTok profiles, videos, comments, search, live signals, Creative Center trends, and shop product data.
- The Model API endpoints in this guide are called with
POST /v1/api/tiktok/<path>— pass only that endpoint’s params, no SDK, oneSANDBASE_API_KEY.- Endpoints span the
web,app-v3,ads, andshop-websurfaces; parameter names, paging, and response shapes vary by surface, so read each endpoint’s schema.- It returns public, read-only data only. There is no posting, no TikTok OAuth login, and no access to private accounts; authenticate with a SandBase API key.
Which TikTok API do you need?
| Your need | Choose | Why |
|---|---|---|
| Login, content posting, or authorized creator actions | TikTok for Developers | Official Login Kit and Content Posting API. |
| Create, manage, or report on an authorized Ads Manager account | TikTok API for Business | Official Marketing API for campaign management. |
| Read public profiles, videos, Creative Center trends, or shop product data | SandBase TikTok public-data API | Plain REST, one SandBase key, structured JSON for read-only discovery and monitoring. |
| Access private accounts, DMs, or login-only data | Neither public workflow | Those data types are out of scope for this public-data guide. |
What you can get from the TikTok API
The catalog is organized by surface, matching how TikTok itself exposes data. Grouped by job:
- Profiles & users — public user profiles and stats, follower and following lists, reposts, similar-user recommendations, account country by username.
- Videos & content — a user’s posts, single video detail, hashtag video lists, video search, and video/aweme ID extraction from a link.
- Comments — video comments and comment replies.
- Live — live room info and gift lists, live search, and live ranking lists.
- Creative Center trends — public trend and creative-research signals such as trending hashtags and top ad examples.
- Shop product data — public product detail and reviews, category and hot-selling lists, seller product lists, and shop resolution by share link.
- Bulk — a
bulkgroup covering comments, video metadata, and profile history; confirm the available endpoints against the live catalog before you build on them.
The catalog on SandBase lists TikTok’s endpoints across these surfaces; not every listed capability is enabled for direct calls yet, and some (such as certain creator-analytics endpoints) require a TikTok user cookie and are therefore outside this workflow, which reads public data with a SandBase key and no TikTok login. Treat each endpoint’s live API reference as the source of truth before you build.
The TikTok API page on SandBase — a tagged overview and the endpoint list, each with a path and description.
What TikTok provides vs. what SandBase adds
Public data comes from TikTok. SandBase does not own or operate TikTok; it provides a uniform API layer for eligible public-data workflows. Each capability becomes one stable endpoint, auth collapses to a single key, and responses come back as predictable JSON — so an agent can chain “resolve a handle → read the profile stats → pull recent videos → read comments” along one convention instead of reverse-engineering a different auth and shape for every surface.
Quick start: your first call
SandBase exposes more than one API surface. The catalog may show GET paths under /apis/v1/...; this guide uses the vendor-qualified Model API path shown on each endpoint’s API reference. Do not swap the HTTP method or URL — follow the reference for the endpoint you choose.
Each capability has its own Model API endpoint called with POST /v1/api/tiktok/<path>. There is no SandBase SDK — these are plain HTTP calls. Read a public profile by handle (note the camelCase uniqueId — TikTok parameter names follow the upstream API, so check each endpoint’s schema):
import os
import requests
resp = requests.post(
"https://api.sandbase.ai/v1/api/tiktok/web/user-profile",
headers={
"Authorization": f"Bearer {os.environ['SANDBASE_API_KEY']}",
"Content-Type": "application/json",
},
json={"uniqueId": "tiktok"}, # the handle, without the @
)
resp.raise_for_status()
body = resp.json()
if body.get("status") != "completed":
error = body.get("error", {})
raise RuntimeError(error.get("message", "TikTok request did not complete"))
# Business fields are an illustrative shape, not a guaranteed schema — read defensively.
stats = body["outputs"][0]["data"].get("userInfo", {}).get("stats", {})
print(stats.get("followerCount"), stats.get("videoCount"))
curl -X POST https://api.sandbase.ai/v1/api/tiktok/web/user-profile \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uniqueId": "tiktok"}'
Data endpoints run in sync mode, so the JSON body is the answer — no task ID and no polling loop. Every response uses the same envelope: an id, a status (completed on success), the model name, and an outputs array whose single item carries the payload under data. Below is an illustrative response shape for user-profile — the business fields are an example structure, not a guaranteed schema, and live counts change over time; confirm the exact fields against a live response:
{
"id": "edce0391-a8a8-4bbd-9434-ae94d94db123",
"status": "completed",
"model": "tiktok/web/user-profile",
"outputs": [
{
"data": {
"userInfo": {
"user": { "uniqueId": "tiktok", "nickname": "TikTok" },
"stats": {
"followerCount": 95913544,
"followingCount": 1,
"heartCount": 464600000,
"videoCount": 1506
}
}
}
}
]
}
A failed or timeout run carries error (with type and a sanitized message) and never outputs, so branch on status before reading outputs[0].data. Response shapes differ by endpoint — the profile sits at outputs[0].data.userInfo, while a link-to-ID call like tiktok/web/aweme-id returns the ID string directly in data. Inspect one real response and map the exact path per endpoint.
The API reference spells out the pattern: call the vendor-qualified URL and put only operation-specific fields in the body.
Capability map
| Capability cluster | Representative endpoint | Typical use |
|---|---|---|
| Profile & stats | tiktok/web/user-profile | Resolve a handle to profile and follower/like counts |
| Followers / following | tiktok/app-v3/user-follower-list | Audience and network analysis (paginated) |
| Videos & detail | tiktok/web/user-post, tiktok/web/post-detail | Content monitoring, engagement tracking |
| Comments | tiktok/app-v3/video-comments | Sentiment and comment analysis |
| Search | tiktok/app-v3/video-search-result | Find videos by keyword |
| Creative Center trends | tiktok/ads/* cluster | Creative and trend research (verify each endpoint) |
| Shop | tiktok/shop-web/product-detail | Product and review data |
| ID utilities | tiktok/web/aweme-id | Extract a video ID from a link |
Some list endpoints on the app-v3 surface page with page_token and min_time (not a max_id cursor), and cap count at 20 — check each endpoint’s schema, since paging conventions differ between the web and app-v3 surfaces.
A slice of the TikTok endpoint list across the web, app, ads, and shop surfaces.
Common use cases
TikTok profile API for creator discovery
Resolve a handle with tiktok/web/user-profile, then read stats.followerCount, stats.heartCount, and video count to shortlist creators by size and engagement. Input: a handle or a list of candidates. Output: a comparable profile record per creator. Endpoints: user-profile, optionally tiktok/app-v3/video-search-result to find candidates first.
TikTok video API for competitor monitoring
Poll a competitor’s recent posts and specific video details on a schedule and diff engagement over time. Input: a handle or video link. Output: a time series of videos with counts. Endpoints: tiktok/web/user-post and tiktok/web/post-detail.
TikTok Creative Center API for trend research
Pull public trend and creative-research signals — trending hashtags and top ad examples — by market, industry, and time range to inform creative research. Input: a market, optional industry, and time range. Output: ranked trend or ad-example lists. Endpoints: the tiktok/ads/* cluster; confirm the exact endpoint and its parameters against its live API reference before you build, since availability varies.
Limitations and boundaries
- Public, read-only data only. These endpoints read public profiles and content. There is no posting, following, or messaging, and private accounts are not accessible.
- Rate and volume. Treat responses as best-effort reads. Handle empty results and HTTP 429 with backoff; control concurrency and pacing, and confirm the available endpoints against the live catalog before wiring in higher-volume jobs.
- Parameters and shapes follow the upstream surface. Names are often camelCase (
uniqueId,secUid), paging differs betweenwebandapp-v3, and response fields vary by endpoint and version. Inspect a real response and read the endpoint schema before coding. - Not every listed endpoint is callable yet. The catalog reflects TikTok’s surface; some entries are not enabled for direct calls. Verify against the live API reference before building on a specific endpoint.
- This is not an official TikTok partnership. SandBase provides uniform access to public data; respect TikTok’s terms and applicable privacy rules for your use case.
FAQ
Do I need a TikTok developer app or Login Kit?
No. You authenticate to SandBase with your SANDBASE_API_KEY. You do not register a TikTok app or manage OAuth for these read endpoints.
Why are some parameters camelCase like uniqueId?
TikTok parameter names follow the upstream API surface. The web surface commonly uses uniqueId and secUid; always check the endpoint schema rather than assuming snake_case.
How does pagination work?
It depends on the surface. Several app-v3 list endpoints use page_token plus min_time and cap count at 20; omit the token on the first request and pass the value returned by the previous response. Read each endpoint’s schema.
Can I read private accounts or login-only data? No. The API returns public data only. Private accounts, direct messages, and any action requiring a logged-in user are out of scope.
Which endpoint should I call for a given task?
Match the task to the capability cluster above, then read the endpoint schema. For example, use tiktok/web/user-profile for profile stats, tiktok/web/user-post for a video feed, and tiktok/app-v3/video-comments for comments.
Can I get Creative Center trends and shop data too?
Yes. The tiktok/ads/* cluster covers public creative and trend research (such as trending hashtags and top ad examples), and the tiktok/shop-web/* cluster covers public product detail, reviews, category and seller lists. Availability varies by endpoint, so confirm the exact path against its live API reference before building.
What happens if I hit a rate limit? Expect an HTTP 429 under heavy load. Retry with bounded exponential backoff, and control concurrency and pacing rather than looping single-item calls at full speed.
Start with one profile request
Create a SandBase API key, run tiktok/web/user-profile against a public handle, and inspect the returned schema before you expand to videos, comments, ads, or shop data. When you are ready: