X / Twitter User tweets API
Get up to the requested limit of tweets and replies authored by an X (Twitter) account, with engagement, views, language, and cursor pagination where available.
Pricing and providers
X / Twitter User tweets API pricing: one API, 3 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
capped at $0.0101 per request1 result$0.000250 results$0.0051100 results$0.0101 capYou are charged for what comes back. Lower the limit to pay less - and no single request can cost more than the cap, however much comes back.
Try it
Get X / Twitter user tweets in one request
{
"data": {
"nextCursor": "example",
"tweets": [
{
"authorHandle": "alex_rivera",
"authorId": "Alex Rivera",
"authorImage": "https://example.com/image.jpg",
"authorName": "Alex Rivera",
"bookmarks": 42,
"conversationId": "a1b2c3d4",
"createdUtc": 12.5,
"id": "a1b2c3d4",
"isPinned": true,
"isReply": true,
"lang": "en",
"likes": 12500,
"media": [
{
"height": 42,
"type": "general",
"url": "https://example.com/page",
"videoUrl": "https://example.com/page",
"width": 1024
}
],
"quotes": 42,
"replies": 42,
"retweets": 42,
"source": "https://example.com/page",
"text": "A short example description of this item.",
"url": "https://example.com/page",
"views": 12500
}
]
},
"found": true,
"reason": "not_found"
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
One request, one response shape.
Every field you send and every field you get back, each with a real example.
Last verified 2026-10-06 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- handlestring
levelsio
Twitter/X handle without the leading @.
- cursorstring
Opaque pagination cursor from a previous response's nextCursor. Omit for the first page.
- limitinteger
20
Maximum number of authored tweets and replies to return in THIS page (1-100). Sources return fewer - most cap at 20 - so read `nextCursor` and pass it back as `cursor` to walk further rather than asking for one large page.
- requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isPinned`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted.
- requireSinglePageboolean
Require a lane that can return the requested limit in one response.
Response
JSON, one example value per field.
- nextCursorstring
Opaque cursor for the next page when the selected lane supports pagination, otherwise null.
Populated whenever the provider has data for the entity.
- authorHandlestring
Handle of the account that posted.
- authorIdstring
Numeric X user id of the account that posted, as a string.
- authorImagestring
Avatar image URL of the account that posted.
- authorNamestring
Display name of the account that posted.
- bookmarksinteger
- conversationIdstring
Id of the conversation the post belongs to, as a string.
- createdUtcnumber
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.
- idstring
Populated whenever the provider has data for the entity.
- isPinnedbooleancan require
Whether X marks the post as pinned on the profile, or null when the serving source does not publish it.
- isReplyboolean
- langstring
- likesinteger
- quotesinteger
- repliesinteger
- retweetsinteger
- sourcestring
Client the post was sent from, e.g. "Twitter Web App".
- textstring
Populated whenever the provider has data for the entity.
- urlstring
Populated whenever the provider has data for the entity.
- viewsinteger
Photo, video, and GIF attachments on the post. Empty when the post has none.
- heightinteger
- typestring
One of photo, video, or gif.
- urlstring
Image URL. For a video or GIF this is the poster/thumbnail frame. X media URLs on pbs.twimg.com are publicly fetchable without authentication; append ?name=orig for the full-resolution original.
- videoUrlstring
Playable video file URL. Present only for video and gif items.
- widthinteger
- foundboolean
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
FAQ
About the X / Twitter User tweets API
The AnyAPI X / Twitter User tweets API returns X / Twitter user tweets data as normalized JSON from one POST call to /v1/run/twitter.user_tweets. Get up to the requested limit of tweets and replies authored by an X (Twitter) account, with engagement, views, language, and cursor pagination where available. AnyAPI routes each request across 3 sources and falls back automatically when one fails. It costs from $0.45 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 99.9% of X / Twitter user tweets calls through AnyAPI succeeded, with a median response time of 1.4 seconds across 80,850 measured calls.