TikTok Profile Videos API reference
Your first 10 calls are free, no card needed. Pricing and FAQ
Get a free API keycurl "https://api.insightsocial.app/v1/tiktok/profile/videos?handle=charlidamelio" \ -H "x-api-key: $INSIGHTSOCIAL_API_KEY"
Returns a page of an account's recent public videos, each with caption, view, like, comment and share counts, and a thumbnail URL. Handle lookup covers login or age-walled profiles.
Use it to list what one account has posted and page through it. Results come back in the source order, so sort_by does not reorder them. To find videos from many accounts by keyword, use search.
10 credits per call.
Paginates by cursor: see Pagination.
Authorization
apiKey Your key from the dashboard. It starts with isk_.
In: header
Query Parameters
TikTok username without the @ symbol. Provide at least one of: handle, user_id.
TikTok user id. Use this for faster responses. Provide at least one of: handle, user_id.
Only videos published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older videos are left off the page, and the page that reaches one ends the walk: next_cursor is not returned and pagination.stopped_at is since. Pinned videos sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.
The id (post.id) or URL (post.url) of the newest video you already hold. The page stops just before it: that video and everything after it are left off, next_cursor is not returned, and pagination.stopped_at is known_id. A pinned video never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. pagination.stopped_at is end when the list ran out first and null while there is more to walk.
Accepted for compatibility and ignored on this endpoint: neither latest nor popular reorders the page. Videos come back in the source's own order, described above. To rank a creator's videos by views or likes, page through with max_cursor and sort the collected rows yourself.
Value in
- "latest"
- "popular"
Region (Country) you want the proxy in. Defaults to US. It does not filter the videos. The country TikTok registers each video to is post.ext.region.
Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.
Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.
Value in
- "1"
The pagination.next_cursor from the previous page, sent back unchanged. Omit it for the first page.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.insightsocial.app/v1/tiktok/profile/videos"{ "success": true, "platform": "string", "endpoint": "string", "schema_version": "2", "pagination": { "next_cursor": "string", "has_more": true, "page_size": 0, "stopped_at": "since" }, "unavailable": [ "string" ], "credits_used": 0, "credits_remaining": 0, "request_id": "string", "cached": true, "idempotent_replay": true, "charge_reason": "string", "free_call": true, "data": { "items": [ { "post": { "id": "string", "url": "http://example.com", "kind": "string", "content": { "text": "string", "media_urls": [ "http://example.com" ], "thumbnail_url": "http://example.com", "duration_seconds": 0 }, "author": { "id": "string", "username": "string", "display_name": "string", "avatar_url": "http://example.com", "verified": true }, "engagement": { "views": 0, "likes": 0, "comments": 0, "shares": 0, "saves": 0 }, "flags": { "nsfw": true, "spoiler": true, "pinned": true, "deleted": true, "likes_hidden": true, "comments_hidden": true, "shares_hidden": true, "views_hidden": true, "saves_hidden": true }, "published_at": "2019-08-24T14:15:22Z", "language": "string", "ext": { "property1": null, "property2": null } } } ], "total": 0, "truncated": true, "ext": { "property1": null, "property2": null } }}