Douyin User Video Feed (by sec_user_id)
omnial/douyin-app-fetch-user-post-videos
Given a Douyin user's sec_user_id, returns a page of that user's posted videos: caption, publish time, duration, hashtags, engagement counts (likes, comments, shares, collects), the video's own technical shape (resolution, watermark flag), the credited sound/music, and the user's own public profile fields on each video. Paginate with the returned max_cursor. A sec_user_id that does not resolve to a real account returns an empty video list rather than an error.
Price
Up to $0.00205 per call; you pay what the call used
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.00.
Data source
Data from Douyin.
Use it
Your AI assistant does the work: it finds this tool, shows you the price first, runs it, and you are charged when the run finishes. There is nothing to set up for this tool in particular.
Connect once and your AI can find and run this tool, and any other it needs.
For developers: the calls your assistant makes
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/douyin-app-fetch-user-post-videos" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/douyin-app-fetch-user-post-videos" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/douyin-app-fetch-user-post-videos", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/douyin-app-fetch-user-post-videos", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.00205 |
- Updated
- Nov 6, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"sec_user_id"
],
"properties": {
"count": {
"type": "integer",
"default": 20,
"description": "Number per page"
},
"channel": {
"type": "string",
"default": "normal",
"description": "抖音渠道版本/Douyin channel: normal(正常版-默认), lite(极速版)"
},
"sort_type": {
"type": "integer",
"default": 0,
"description": "Sort type"
},
"max_cursor": {
"type": "integer",
"default": 0,
"description": "Maximum cursor"
},
"sec_user_id": {
"type": "string",
"examples": [
"MS4wLjABAAAANXSltcLCzDGmdNFI2Q_QixVTr67NiYzjKOIP5s03CAE"
],
"description": "User sec_user_id"
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"uid": {
"type": "string",
"description": "The queried user's own numeric id, echoed back."
},
"sec_uid": {
"type": "string",
"description": "The queried sec_user_id, echoed back."
},
"has_more": {
"type": "number",
"description": "Non-zero when a further page exists at the returned max_cursor."
},
"aweme_list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"desc": {
"type": "string",
"description": "The video's caption text."
},
"music": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"title": {
"type": "string"
},
"author": {
"type": "string",
"description": "The credited artist/creator name for this sound."
},
"id_str": {
"type": "string"
},
"duration": {
"type": "number",
"description": "Seconds."
},
"play_url": {
"type": "object",
"properties": {
"url_list": {
"type": [
"array",
"null"
],
"description": "Withheld -- only whether a playable URL exists is observable."
}
},
"description": "The sound's own playable URL. Value withheld (stripped to `null`) in this tool's output.",
"additionalProperties": true
},
"is_original": {
"type": "boolean"
}
},
"description": "The sound/music used in this video.",
"additionalProperties": true
},
"video": {
"type": "object",
"properties": {
"cover": {
"type": "object",
"properties": {
"url_list": {
"type": [
"array",
"null"
],
"description": "Withheld -- only whether a cover exists is observable."
}
},
"description": "The video's cover thumbnail. Value withheld (stripped to `null`) in this tool's output.",
"additionalProperties": true
},
"ratio": {
"type": "string",
"description": "e.g. \"default\"."
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"duration": {
"type": "number",
"description": "Milliseconds. Matches the top-level `duration`."
},
"play_addr": {
"type": "object",
"properties": {
"url_list": {
"type": [
"array",
"null"
],
"description": "Withheld -- only whether a playable URL exists is observable."
}
},
"description": "The playable video URL. Value withheld (stripped to `null`) in this tool's output.",
"additionalProperties": true
},
"has_watermark": {
"type": "boolean"
}
},
"description": "The video file's own technical shape.",
"additionalProperties": true
},
"author": {
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"region": {
"type": "string"
},
"sec_uid": {
"type": "string"
},
"nickname": {
"type": "string",
"description": "The user's own display name."
},
"short_id": {
"type": "string"
},
"signature": {
"type": "string",
"description": "The user's own bio text."
},
"unique_id": {
"type": "string",
"description": "The user's own @handle. Can be an empty string when unset."
},
"is_verified": {
"type": "boolean"
},
"avatar_thumb": {
"type": "object",
"properties": {
"url_list": {
"type": [
"array",
"null"
],
"description": "Withheld -- only whether an avatar is set is observable."
}
},
"description": "The user's own avatar. Value withheld (stripped to `null`) in this tool's output.",
"additionalProperties": true
},
"custom_verify": {
"type": "string",
"description": "Verification label text. Empty string when not verified."
},
"verification_type": {
"type": "number"
},
"enterprise_verify_reason": {
"type": "string",
"description": "Business verification label text. Empty string when not set."
}
},
"description": "The queried user's own public profile fields, repeated on every video in the feed.",
"additionalProperties": true
},
"region": {
"type": "string",
"description": "Two-letter-style region code, e.g. \"CN\"."
},
"aweme_id": {
"type": "string",
"description": "The video's own id."
},
"cha_list": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"cid": {
"type": "string",
"description": "The hashtag's own id."
},
"cha_name": {
"type": "string",
"description": "The hashtag's own text, e.g. \"le\"."
}
},
"additionalProperties": true
},
"description": "Hashtags ('challenges') attached to this video, when any; `null` when none."
},
"duration": {
"type": "number",
"description": "Milliseconds."
},
"video_tag": {
"type": "array",
"items": {
"type": "object",
"properties": {
"level": {
"type": "number",
"description": "Tag hierarchy depth, e.g. 1-3."
},
"tag_id": {
"type": "number"
},
"tag_name": {
"type": "string"
}
},
"additionalProperties": true
},
"description": "Platform-assigned topic tags for this video, when any."
},
"item_title": {
"type": "string",
"description": "A separate short title field, typically an empty string."
},
"statistics": {
"type": "object",
"properties": {
"digg_count": {
"type": "number",
"description": "Likes."
},
"play_count": {
"type": "number",
"description": "Typically 0."
},
"share_count": {
"type": "number"
},
"collect_count": {
"type": "number"
},
"comment_count": {
"type": "number"
},
"forward_count": {
"type": "number",
"description": "Typically 0."
},
"download_count": {
"type": "number",
"description": "Typically 0."
}
},
"description": "Engagement counters for this video.",
"additionalProperties": true
},
"text_extra": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"end": {
"type": "number"
},
"type": {
"type": "number"
},
"start": {
"type": "number",
"description": "Character offset into `desc`."
},
"hashtag_id": {
"type": "string"
},
"hashtag_name": {
"type": "string",
"description": "The mentioned hashtag's own text."
}
},
"additionalProperties": true
},
"description": "Hashtag mentions parsed out of `desc`'s own text, when any; `null` when none."
},
"create_time": {
"type": "number",
"description": "Unix seconds."
}
},
"additionalProperties": true
},
"description": "One entry per posted video on this page. Empty when the user has none."
},
"max_cursor": {
"type": "number",
"description": "Pass this back as the `max_cursor` input to fetch the next page."
},
"min_cursor": {
"type": "number",
"description": "The newest video's own cursor position."
},
"status_msg": {
"type": "string",
"description": "Empty string on a normal call."
},
"status_code": {
"type": "number",
"description": "0 on a normal call."
}
},
"description": "A page of a Douyin user's posted videos. `aweme_list` is an empty array (with the other top-level fields still populated) when the given `sec_user_id` does not resolve to a real account.",
"additionalProperties": true
}