SocialHolmes

API reference

TikTok API

Creator profiles, video feeds, single videos, comments, followers, search, sounds and hashtags.

POST

/api/public/v1/scrape/tiktok/profile

Creator profile details.

Returns profile_api

Parameters

Name Required Description Example
username required Handle, with or without the @. nasa

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/profile \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"username":"nasa"}}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "profile",
  "target": "nasa",
  "url": "https://www.tiktok.com/@nasa",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/posts

A creator's video feed. Use `limit` to say how many you want.

Returns video_feed_api

Parameters

Name Required Description Example
username required Handle, with or without the @. nasa

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/posts \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"username":"nasa"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "posts",
  "target": "nasa",
  "url": "https://www.tiktok.com/@nasa",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/liked

Videos a creator has liked. Use `limit` to say how many you want.

Returns video_feed_api

Parameters

Name Required Description Example
username required Handle, with or without the @. The account's liked list must be public. nasa

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/liked \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"username":"nasa"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "liked",
  "target": "nasa",
  "url": "https://www.tiktok.com/@nasa",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/reposts

Videos a creator has reposted. Use `limit` to say how many you want.

Returns video_feed_api

Parameters

Name Required Description Example
username required Handle, with or without the @. nasa

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/reposts \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"username":"nasa"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "reposts",
  "target": "nasa",
  "url": "https://www.tiktok.com/@nasa",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/stories

A creator's active stories. Use `limit` to say how many you want.

Returns video_feed_api

Parameters

Name Required Description Example
username required Handle, with or without the @. Stories are gone 24 hours after posting. nasa

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/stories \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"username":"nasa"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "stories",
  "target": "nasa",
  "url": "https://www.tiktok.com/@nasa",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/followers

Accounts that follow this creator. Use `limit` to say how many you want.

Returns user_feed_api

Parameters

Name Required Description Example
username required Handle, with or without the @. nasa

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/followers \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"username":"nasa"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "followers",
  "target": "nasa",
  "url": "https://www.tiktok.com/@nasa",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/following

Accounts this creator follows. Use `limit` to say how many you want.

Returns user_feed_api

Parameters

Name Required Description Example
username required Handle, with or without the @. nasa

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/following \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"username":"nasa"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "following",
  "target": "nasa",
  "url": "https://www.tiktok.com/@nasa",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/video

A single video and its comments.

Returns video_detail_api

Parameters

Name Required Description Example
video_id required Numeric id from the video URL. 7212345678901234567

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/video \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"video_id":"7212345678901234567"}}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "video",
  "target": "7212345678901234567",
  "url": "https://www.tiktok.com/video/7212345678901234567",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/comments

Comments on a video. Use `limit` to say how many you want.

Returns comment_api

Parameters

Name Required Description Example
video_id required Numeric id from the video URL. 7212345678901234567

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/comments \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"video_id":"7212345678901234567"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "comments",
  "target": "7212345678901234567",
  "url": "https://www.tiktok.com/video/7212345678901234567",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/replies

Replies to one comment. Use `limit` to say how many you want.

Returns comment_reply_api

Parameters

Name Required Description Example
video_id required Numeric id from the video URL. 7212345678901234567
comment_id required Numeric id of the comment, from a `comments` run. 7213456789012345678

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/replies \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"video_id":"7212345678901234567","comment_id":"7213456789012345678"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "replies",
  "target": "7212345678901234567",
  "url": "https://www.tiktok.com/video/7212345678901234567?comment_id=7213456789012345678",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/hashtag

Videos under a hashtag. Use `limit` to say how many you want.

Returns video_feed_api

Parameters

Name Required Description Example
tag required Tag, with or without the spacex

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/hashtag \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"tag":"spacex"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "hashtag",
  "target": "spacex",
  "url": "https://www.tiktok.com/tag/spacex",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/search_users

Creators matching a search. Use `limit` to say how many you want.

Returns user_feed_api

Parameters

Name Required Description Example
query required A name or handle fragment to search for. nasa

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/search_users \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"query":"nasa"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "search_users",
  "target": "nasa",
  "url": "https://www.tiktok.com/search/user?q=nasa",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/search_hashtags

Hashtags matching a search, with their view counts. Use `limit` to say how many you want.

Returns hashtag_api

Parameters

Name Required Description Example
query required A keyword to find hashtags for. The leading space

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/search_hashtags \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"query":"space"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "search_hashtags",
  "target": "space",
  "url": "https://www.tiktok.com/search?q=space",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/sound

One sound — its title, artist and how many videos use it.

Returns sound_api

Parameters

Name Required Description Example
music_id required Numeric sound id, from the `music.id` of any video result. 7678067441229990670

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/sound \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"music_id":"7678067441229990670"}}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "sound",
  "target": "7678067441229990670",
  "url": "https://www.tiktok.com/music/x-7678067441229990670",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.

POST

/api/public/v1/scrape/tiktok/sound_videos

Videos using a sound. Use `limit` to say how many you want.

Returns video_feed_api

Parameters

Name Required Description Example
music_id required Numeric sound id, from the `music.id` of any video result. 7678067441229990670

Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.

Request

curl -X POST https://socialholmes.com/api/public/v1/scrape/tiktok/sound_videos \
  -H "Authorization: Bearer $SOCIALHOLMES_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameters":{"music_id":"7678067441229990670"},"limit":25}'

Response 202 Accepted

{
  "id": "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21",
  "status": "queued",
  "platform": "tiktok",
  "endpoint": "sound_videos",
  "target": "7678067441229990670",
  "url": "https://www.tiktok.com/music/x-7678067441229990670",
  "result_count": 0,
  "created_at": "2026-08-26T19:08:00Z"
}

This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.