Douyin Video API — One Video with Exact Counts
Documentation menu
FetchLayer FetchLayer API

Get one video in full

One Douyin video or image post in full by id, link or share text: caption, exact like, comment, share and save counts, author with exact follower count, music, hashtags, media and the collection it belongs to. 1 credit.

POST /video-detail Videos
https://api.fetchlayer.dev/douyin/video-detail
OpenAPI JSON

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.

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

video-detail

Get one video in full

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.

video object

The video. One that does not exist or is not public is a 404.

video.id string

The video id, which every route that takes a video accepts.

video.url string

Link to the video on douyin.com.

video.kind string

"video", or "images" for an image post.

video.description string

The caption.

video.createdAt string

When it was posted (ISO 8601); createTime is the same moment in unix seconds.

video.durationMs number | null

Length of a video, in milliseconds.

video.hashtags object[]

{ name, id } for each hashtag; the id works with hashtag-detail.

video.stats object

likes, comments, shares and saves — exact integers. plays is always null: Douyin does not publish play counts.

video.author object

uid, secUid, uniqueId (抖音号), nickname, avatarUrl, followerCount, verification and profileUrl. followerCount is exact here.

video.music object | null

{ id, title, author } of the sound.

video.coverUrl string | null

Cover image. Douyin’s media links expire after a while.

video.playUrl string | null

The video stream. Expires after a while.

video.imageUrls string[]

The images of an image post; empty for a video.

video.isAd boolean

Whether Douyin marks it as an ad.

video.pinned boolean

Whether the author pinned it to their profile.

video.collection object | null

The collection (合集) it belongs to: { id, name, episode }, or null. The id works with collection-videos.

video.shareUrl string | null

Douyin’s share link for it.

Request

curl -X POST "https://api.fetchlayer.dev/douyin/video-detail" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"video":"https://www.douyin.com/video/7665908051974704410"}'

Response

{
  "transport": "douyin",
  "fetchedAt": "2026-10-15T15:54:02.000Z",
  "notes": [
    "Douyin does not publish play counts, so stats.plays is always null."
  ],
  "video": {
    "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": 397848,
      "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
    }
  }
}