Twitter List Timeline API | Native X List Feed
Fetch a public List's feed as X itself serves it, using the native List timeline. Includes members' retweets and X's own ordering. Paged only, with no date or reply filters. Cost: $0.0008 per call.
List Timeline returns X's own native feed for a public Twitter/X List, the same ordering the List shows on x.com, including members' retweets. It takes only list_id, count and cursor: no date range and no reply filter exist on it, because a native timeline cannot honour search operators. Each page is one $0.0008 read.
Authorization
bearerAuth Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.
In: header
Query Parameters
Numeric ID of the public List.
Max items to return for this page. Default 20; clamped to 1-100.
Pagination cursor from a previous response.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/list/timeline?list_id=1234567890123456789&count=20"{ "tweets": [ { "id": "1899887766554433222", "text": "Reposting this because it deserves a second look.", "created_at": "2026-08-14T10:03:19.000Z", "author": { "id": "745273", "username": "naval" } } ], "next_cursor": "DAABCgABF..."}{ "error": "bad_request", "message": "Missing or malformed parameter. Fix the request before retrying."}{ "error": "unauthorized", "message": "The API key is missing, malformed, or revoked. Check the Authorization header."}{ "error": "insufficient_credits", "message": "Your balance is exhausted. Top up your credits to continue."}{ "error": "not_found", "message": "The resource does not exist, for example a deleted tweet or a private account."}{ "error": "rate_limited", "message": "Too many requests. Back off and retry with exponential backoff."}{ "error": "server_error", "message": "Something failed on our side. Retry with backoff; if it persists, contact support."}Pricing
| Unit | Price |
|---|---|
| Per call | $0.0008 |
| Per 1,000 calls | $0.80 |
| Per 1,000 records (~20 per call) | ~$0.04 |
Each page is one $0.0008 read, so a deep scroll costs one call per page.
When to use
Use it when you want the List exactly as X presents it, retweets and native ordering included, for example mirroring a curated List into your own reader.
Pagination
This endpoint is cursor-paginated and returns roughly 20 records per call. Pass the next_cursor from each response back as the cursor parameter to read the next page. Stop when the records array comes back empty: follower-graph endpoints return a non-null cursor even on the final page, so the empty array is the only reliable stop signal. See Pagination for the full loop.
Related endpoints
- List Tweets: Read a public List's posts, filterable by date range and replies.
- List Members: Page through the members of a public Twitter/X List.
- User Tweets: Fetch a user's public timeline (original tweets, retweets, and their own replies).
FAQ
Why can I not filter this by date?
It reads X's native ListLatestTweetsTimeline, which exposes no date or reply operators. Those are search-index parameters. Use List Tweets when you need them.
Does it include retweets?
Yes. This is X's own List feed, so members' retweets and X's List ordering are both included, unlike the search-backed List Tweets endpoint.
How do I page through it?
Send next_cursor as the cursor parameter and repeat until the tweets array comes back empty.
List Tweets GET
Fetch posts written by the members of a public List through X's search index. Supports since and until date bounds and an include_replies toggle. Does not include retweets. Cost: $0.0008 per call.
List Followers GET
Fetch a public List's followers by its numeric ID, cursor-paginated. Followers and members are different sets of people: members are the accounts the List owner added to it, followers are the accounts that subscribed to read it. A List with hundreds of members commonly has only a handful of followers, so a small count here is normal and is not a truncated page. next_cursor is null once X marks the roster complete. Cost: $0.0008 per call.