/v1/user_posts"platform": "tiktok"TikTok User Posts API
The recent videos of one account.
The TikTok User Posts API returns the recent videos of a public TikTok account: text, author, likes, comment count, views and publish time, in the same response format as every other SocialToAI call. One call costs 2 credits ($0.004 to $0.0067 depending on the pack); failed calls are free. Call it over HTTP or from your AI client over MCP. Last tested 2026-10-17.
Last updated:
Request and response
curl https://api.socialtoai.com/v1/user_posts \ -H "Authorization: Bearer $SOCIALTOAI_KEY" \ -H "Content-Type: application/json" \ -d '{ "platform": "tiktok", "username": "nasa" }'import osimport requestsresponse = requests.post( "https://api.socialtoai.com/v1/user_posts", headers={"Authorization": f"Bearer {os.environ['SOCIALTOAI_KEY']}"}, json={ "platform": "tiktok", "username": "nasa", },)print(response.json())# Connected over MCP? Ask in plain words.What has this TikTok account posted lately: nasa# Your AI calls the user_posts tool with:{ "platform": "tiktok", "username": "nasa"}sort{ "platform": "tiktok", "status": "ok", "items": [ { "platform": "tiktok", "id": "…", "ref": "…", "approx": [], "type": "content", "url": "https://example.com/…", "format": "video", "title": null, "text": "…", "published_at": "2026-07-21T20:09:02.000Z", "author": { "id": "…", "username": "…", "name": "…", "verified": null, "followers": 2060928 }, "metrics": { "likes": 103312, "comments": 3021, "shares": 3253, "collects": 7513, "views": 1592522, "reposts": null }, "images": null, "hashtags": [], "is_pinned": true } ], "unavailable": ["title", "author.verified", "metrics.reposts", "images"], "page": { "has_more": true, "cursor": "cur_…", "cursor_expires_at": "2026-10-12T19:15:11.000Z" }, "cost_credits": 2}Names and text were removed from the sample; the numbers are as recorded.
4 parameters.
2 required.
Send them as a JSON body with POST. Your key goes in the Authorization header, never in the URL.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| platform | string | Required | — | Always "tiktok" on this page. |
| username | string | Required | — | TikTok handle, without the @ |
| sort | string | Optional | "latest" | Newest first, or most popular first"latest""popular" |
| cursor | string | Optional | — | Pass page.cursor from the last response to get the next page. |
Where to get what you send.
usernameTikTok handle, without the @ (e.g. nasa)
Every item these return carries its username; send it as it is:
search · type=userSearchfollowersUser followers
The fields of each item.
What TikTok cannot give is marked.
| Field | Type | Meaning |
|---|---|---|
| items[].url | string | A link that opens the item. |
| items[].format | string | video, image, text or article. |
| items[].title | stringalways null | The title. |
| items[].text | string | The body text or caption. |
| items[].published_at | string | When it was published, ISO 8601 in UTC. |
| items[].author.id | string | The author's account ID. |
| items[].author.username | string | The author's handle. |
| items[].author.name | string | The author's display name. |
| items[].author.verified | booleanalways null | Whether the author is verified. |
| items[].author.followers | integer | The author's follower count. |
| items[].metrics.likes | integer | Likes. |
| items[].metrics.comments | integer | Comments. |
| items[].metrics.shares | integer | Shares. |
| items[].metrics.collects | integer | Saves. |
| items[].metrics.views | integer | Views or plays. |
| items[].metrics.reposts | integeralways null | Reposts. |
| items[].images | string[]always null | Image addresses. |
| items[].hashtags | string[] | Hashtags, without the #. |
| items[].is_pinned | boolean | Whether the author pinned it. |
nullFields TikTok cannot giveRead null as “TikTok did not give this”, not as zero. These are always null on this call:
titleThe title.author.verifiedWhether the author is verified.metrics.repostsReposts.imagesImage addresses.
Every item also has platform, id, ref, approx and type; the response around the items is the same on every call. Response format
What to expect.
1 call per second per key, 5 after a purchase; going over is not charged. Rate limits
A failed call costs 0 credits and is never retried on its own. Error codes
Once connected over MCP, these questions use it.
What has this TikTok account posted lately: nasa
2 creditsuser_posts {"platform":"tiktok","username":"nasa"}What has this TikTok account posted lately: nasa, with sort set to popular.
2 creditsuser_posts {"platform":"tiktok","username":"nasa","sort":"popular"}Find TikTok accounts about "nike", then for the first 3: what has this TikTok account posted lately.
8 creditssearch {"platform":"tiktok","query":"nike","type":"user"}user_posts {"platform":"tiktok","username":"<username>"} × 3
These ready-made tools call it when they run.
account-watchWhat each one posted lately, and which posts beat its usual numbers
find-creatorsCreators who make that content, with their size, recent posts and how well each fits
creator-cardTheir accounts on other platforms, the numbers on each, and how sure the match is
viral-finderPosts that did clearly better than their authors usually do
The same call on other platforms.
All platforms and prices/v1/user_posts{ "platform": "tiktok", "username": "nasa" }2 creditsper call