Douyin Fan List Lookup (by Account ID)
omnial/douyin-web-fetch-user-fans-list
Given a Douyin account's sec_user_id, returns that account's public follower list: each fan's display name, numeric account id, handle (unique_id), verified flag, and region/language, plus the list total, a next-page cursor, and the real follower count. An unrecognized account id returns an error envelope with a status_code and status message rather than an empty list.
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-web-fetch-user-fans-list" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/douyin-web-fetch-user-fans-list" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/douyin-web-fetch-user-fans-list", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/douyin-web-fetch-user-fans-list", 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 of followers to return in this page."
},
"max_time": {
"type": "string",
"default": "0",
"description": "Pagination cursor from a previous page's max_time; \"0\" for the first page."
},
"sec_user_id": {
"type": "string",
"examples": [
"MS4wLjABAAAA9y04iBlVdeMQqTJbqsQZKb-tqWqWW29jPVJqideHT70"
],
"description": "The Douyin account's public sec_user_id (the opaque id used on the web profile URL -- not its @handle). Determines whose follower list this call returns."
},
"source_type": {
"type": "integer",
"default": 1,
"description": "Source type (leave at the default)."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Total fan count for this account across all pages."
},
"has_more": {
"type": "boolean",
"description": "True when more fans exist past this page."
},
"max_time": {
"type": "number",
"description": "Cursor to pass back as `max_time` for the next page when has_more is true."
},
"followers": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"uid": {
"type": "string",
"description": "The follower's public numeric Douyin account id."
},
"language": {
"type": "string",
"description": "Account UI language, e.g. 'zh-Hans' on the fans observed."
},
"nickname": {
"type": "string",
"description": "The follower's public display name."
},
"unique_id": {
"type": "string",
"description": "The follower's public Douyin handle (@handle). Observed as an empty string on some fans."
},
"create_time": {
"type": "number",
"description": "Account creation Unix seconds. Usually 0 (unknown)."
},
"is_verified": {
"type": "boolean",
"description": "Platform-verified badge present."
},
"account_region": {
"type": "string",
"description": "Region code where the follower's account was registered. Usually an empty string."
},
"iso_country_code": {
"type": [
"string",
"null"
],
"description": "ISO country code. Usually `null`; a populated value has not been observed."
}
},
"additionalProperties": true
},
"description": "This page's follower records, one object per follower, in the account's own ordering. Absent (rather than empty-or-null) on the unrecognized-account error envelope."
},
"status_msg": {
"type": "string",
"description": "Human-readable error text, present on the unrecognized-account error case (observed value is the platform's '参数不合法'); absent on a normal response."
},
"status_code": {
"type": "number",
"description": "0 on a normal response; 5 on the unrecognized-account error."
},
"real_fans_count": {
"type": "number",
"description": "The platform's verified 'real fans' count; observed as 0 in testing."
}
},
"description": "The follower-list record. For an unrecognized sec_user_id this is `{ status_code, status_msg }` with no follower list at all.",
"additionalProperties": true
}