Twitter List Timeline (Posts by List ID)
omnial/twitter-web-fetch-list-timeline
Given a Twitter/X list ID, returns that list's public timeline: each post's engagement counts (favorites, retweets, replies, quotes, bookmarks, views), author (name, handle, follower count, verification badge), language, timestamp, media attachments, and -- when the post is a quote or a retweet -- the full quoted or retweeted post underneath it, plus a cursor for fetching the next page.
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 $0.50.
Data source
Data from X (Twitter).
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/twitter-web-fetch-list-timeline" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/twitter-web-fetch-list-timeline" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/twitter-web-fetch-list-timeline", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/twitter-web-fetch-list-timeline", 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
- Oct 25, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"list_id"
],
"properties": {
"cursor": {
"type": "string",
"description": "Cursor"
},
"list_id": {
"type": "string",
"examples": [
"84839422"
],
"description": "List ID"
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"cursor": {
"type": "string",
"description": "Opaque pagination token for the next page; pass it back as `cursor`."
},
"timeline": {
"type": "array",
"items": {
"type": "object",
"properties": {
"lang": {
"type": "string",
"description": "BCP-47-ish language code, e.g. 'en', 'fr'."
},
"text": {
"type": "null",
"description": "Always `null`: the raw post text is a URL leak in at least one captured post and is stripped (value replaced with null, field name kept) rather than shipped."
},
"media": {
"type": "object",
"properties": {
"photo": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"media_url_https": {
"type": "null",
"description": "Always `null`: the real photo URL is stripped (field name kept, value replaced with null) because it is a URL leaf."
}
},
"additionalProperties": false
}
},
"video": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"duration": {
"type": [
"number",
"null"
],
"description": "Milliseconds. Observed null for at least one short looping video clip with a single, bitrate-0 variant."
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "null",
"description": "Always `null`: the real video/manifest URL is stripped (field name kept, value replaced with null) because it is a URL leaf."
},
"bitrate": {
"type": "number",
"description": "Absent on the streaming-manifest (.m3u8) variant; present (sometimes 0) on direct .mp4 variants."
},
"content_type": {
"type": "string"
}
},
"additionalProperties": false
}
},
"aspect_ratio": {
"type": "array",
"items": {
"type": "number"
}
},
"original_info": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"focus_rects": {
"type": "array",
"description": "Observed empty on every real call; item shape unconfirmed."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
}
},
"description": "Absent or `{}` when the post has no attached media.",
"additionalProperties": false
},
"views": {
"type": "string",
"description": "View count as a decimal STRING (e.g. '41959'), never a number."
},
"author": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"avatar": {
"type": "null",
"description": "Always `null`: the account's real avatar URL is stripped (field name kept, value replaced with null) because it is a URL leaf."
},
"rest_id": {
"type": "string",
"description": "The account's internal numeric id."
},
"followers": {
"type": "number"
},
"screen_name": {
"type": "string"
},
"blue_verified": {
"type": "boolean"
}
},
"additionalProperties": false
},
"quoted": {
"type": "object",
"properties": {
"lang": {
"type": "string"
},
"text": {
"type": "string"
},
"media": {
"type": "object",
"properties": {
"photo": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"media_url_https": {
"type": "null",
"description": "Always `null`: the real photo URL is stripped (field name kept, value replaced with null) because it is a URL leaf."
}
},
"additionalProperties": false
}
},
"video": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"duration": {
"type": [
"number",
"null"
]
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "null",
"description": "Always `null`: the real video/manifest URL is stripped (field name kept, value replaced with null) because it is a URL leaf."
},
"bitrate": {
"type": "number"
},
"content_type": {
"type": "string"
}
},
"additionalProperties": false
}
},
"aspect_ratio": {
"type": "array",
"items": {
"type": "number"
}
},
"original_info": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"focus_rects": {
"type": "array"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"views": {
"type": [
"string",
"null"
],
"description": "Observed null once (an old, since-quoted post); otherwise a decimal string."
},
"author": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"avatar": {
"type": "null",
"description": "Always `null`: the real avatar URL is stripped (field name kept, value replaced with null) because it is a URL leaf."
},
"rest_id": {
"type": "string"
},
"screen_name": {
"type": "string"
},
"blue_verified": {
"type": "boolean"
}
},
"additionalProperties": false
},
"quotes": {
"type": "number"
},
"replies": {
"type": "number"
},
"retweets": {
"type": "number"
},
"tweet_id": {
"type": "string"
},
"bookmarks": {
"type": "number"
},
"favorites": {
"type": "number"
},
"created_at": {
"type": "string"
},
"conversation_id": {
"type": "string"
}
},
"description": "The quoted post, present only when this post quotes another.",
"additionalProperties": false
},
"quotes": {
"type": "number"
},
"source": {
"type": "string",
"description": "An HTML anchor naming the client used to post, e.g. '<a ...>Twitter Web App</a>'."
},
"replies": {
"type": "number"
},
"retweets": {
"type": "number"
},
"tweet_id": {
"type": "string"
},
"bookmarks": {
"type": "number"
},
"favorites": {
"type": "number"
},
"retweeted": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"description": "Present only on a retweet; carries just the original post's id.",
"additionalProperties": false
},
"created_at": {
"type": "string",
"description": "Raw Twitter timestamp format, e.g. 'Sat Sep 05 04:01:00 +0000 2026'."
},
"screen_name": {
"type": "string",
"description": "The posting account's handle; duplicates author.screen_name."
},
"retweeted_tweet": {
"type": "object",
"properties": {
"lang": {
"type": "string"
},
"text": {
"type": "string"
},
"media": {
"type": "object",
"properties": {
"video": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"duration": {
"type": [
"number",
"null"
]
},
"variants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "null",
"description": "Always `null`: the real video/manifest URL is stripped (field name kept, value replaced with null) because it is a URL leaf."
},
"bitrate": {
"type": "number"
},
"content_type": {
"type": "string"
}
},
"additionalProperties": false
}
},
"aspect_ratio": {
"type": "array",
"items": {
"type": "number"
}
},
"original_info": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"focus_rects": {
"type": "array"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"author": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"avatar": {
"type": "null",
"description": "Always `null`: the real avatar URL is stripped (field name kept, value replaced with null) because it is a URL leaf."
},
"rest_id": {
"type": "string"
},
"screen_name": {
"type": "string"
},
"blue_verified": {
"type": "boolean"
}
},
"additionalProperties": false
},
"quotes": {
"type": "number"
},
"replies": {
"type": "number"
},
"retweets": {
"type": "number"
},
"tweet_id": {
"type": "string"
},
"bookmarks": {
"type": "number"
},
"favorites": {
"type": "number"
},
"created_at": {
"type": "string"
},
"conversation_id": {
"type": "string"
}
},
"description": "The original post, present only when this post is a retweet.",
"additionalProperties": false
}
},
"additionalProperties": false
},
"description": "Posts in the list, newest first on every real call observed."
}
},
"description": "The list timeline. `{}` when the list ID does not resolve.",
"additionalProperties": false
}