Videos recommended alongside a video
The videos Douyin recommends alongside a video, about 10, in the same shape as video-detail. 1 credit.
/related-videos Videos https://api.fetchlayer.dev/douyin/related-videos Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
video string required A video or image post: its id (7665908051974704410), a douyin.com or iesdouyin.com link, a v.douyin.com share link, or pasted share text containing one.
limit integer optional Maximum videos, up to 20, or -1. Left out, all Douyin suggests (about 10).
format string optional json or markdown, lowercase; any other value is a 400. Over MCP, markdown returns the result rendered as text; the REST API accepts it and returns JSON. (default: json)
timeoutMs integer optional Time limit for the whole request, in milliseconds (1000–120000); a value outside that range is a 400. Where possible a partial answer comes back with a note; a request with nothing to return yet fails with a 503 you can retry, marked with the response header X-Timeout-Source: caller.
Response Fields
related-videos
Videos recommended alongside a video
transport string The data source: always the platform id, "douyin".
fetchedAt string When the data was read (ISO 8601).
notes string[] Caveats you can act on, such as older videos existing beyond the list. Empty when there are none.
videoId string The video the recommendations are for.
videos object[] The recommended videos.
videos[].id string The video id, which every route that takes a video accepts.
videos[].url string Link to the video on douyin.com.
videos[].kind string "video", or "images" for an image post.
videos[].description string The caption.
videos[].createdAt string When it was posted (ISO 8601); createTime is the same moment in unix seconds.
videos[].durationMs number | null Length of a video, in milliseconds.
videos[].hashtags object[] { name, id } for each hashtag; the id works with hashtag-detail.
videos[].stats object likes, comments, shares and saves — exact integers. plays is always null: Douyin does not publish play counts.
videos[].author object uid, secUid, uniqueId (抖音号), nickname, avatarUrl, followerCount, verification and profileUrl. followerCount is null on this list, which means not on this answer, never zero; user-profile has it.
videos[].music object | null { id, title, author } of the sound.
videos[].coverUrl string | null Cover image. Douyin’s media links expire after a while.
videos[].playUrl string | null The video stream. Expires after a while.
videos[].imageUrls string[] The images of an image post; empty for a video.
videos[].isAd boolean Whether Douyin marks it as an ad.
videos[].pinned boolean Whether the author pinned it to their profile.
videos[].collection object | null The collection (合集) it belongs to: { id, name, episode }, or null. The id works with collection-videos.
videos[].shareUrl string | null Douyin’s share link for it.
videoCount number How many videos are in this response.
skippedRecords object[] Items Douyin listed that could not be returned whole, each as { id, reason, fieldsPresent }; id may be null. Normally empty.
Request
curl -X POST "https://api.fetchlayer.dev/douyin/related-videos" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"video":"7665908051974704410","limit":10}'Response
{
"transport": "douyin",
"fetchedAt": "2026-10-15T15:54:03.000Z",
"notes": [
"Douyin does not publish play counts, so stats.plays is always null."
],
"videoId": "7665908051974704410",
"videos": [
{
"id": "7665908051974704410",
"url": "https://www.douyin.com/video/7665908051974704410",
"kind": "video",
"description": "1-8合集《这是我的世界》第一季|异世界篇 …",
"createdAt": "2026-07-24T01:58:31.000Z",
"createTime": 1784858311,
"durationMs": 2574891,
"hashtags": [
{
"name": "这是我的世界",
"id": "1587906243760205"
}
],
"stats": {
"likes": 356766,
"comments": 6899,
"shares": 90087,
"saves": 176104,
"plays": null
},
"author": {
"uid": "593384953094045",
"secUid": "MS4wLjABAAAAYOEVkUXnngwqKUvaFEGdZWxDxUD6cEbk7zYTJGMrqPA",
"uniqueId": "Mom2024017",
"nickname": "林杉导演AIGC",
"followerCount": null,
"verification": null,
"profileUrl": "https://www.douyin.com/user/MS4wLjABAAAAYOEVkUXnngwqKUvaFEGdZWxDxUD6cEbk7zYTJGMrqPA"
},
"music": {
"id": "7665909117738830598",
"title": "@林杉导演AIGC创作的原声",
"author": "林杉导演AIGC"
},
"width": 2208,
"height": 936,
"imageUrls": [],
"isAd": false,
"pinned": false,
"collection": {
"id": "7640462496620349491",
"name": "原创AI《这是我的世界》第一季|异世界篇",
"episode": 11
}
}
],
"videoCount": 10
}