X / Twitter Thread API
Resolve the linear self-thread containing an X (Twitter) post, from its root through the author's linked continuations. This excludes replies from other users.
$2.69/1k req, pay per request, no subscription.
{"id": "1842093771280384512","url": "https://x.com/buildwithjonah/status/1842093771280384512","text": "Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.","conversationId": "1842093771280384512","inReplyToId": null,"authorId": "1401882093771280384","authorHandle": "buildwithjonah","authorName": "Jonah Ruiz",... 11 more fields}
Pricing
X / Twitter Thread API pricing
Try it
Get X / Twitter thread in one request
This sample shows 43 of 45 fields. See every field
{
"found": true,
"data": {
"conversationId": "1842093771280384512",
"threadLength": 3,
"complete": true,
"author": {
"id": "1401882093771280384",
"handle": "buildwithjonah",
"name": "Jonah Ruiz",
"url": "https://x.com/buildwithjonah",
"verified": true,
"blueVerified": true,
"avatarUrl": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg",
"coverUrl": "https://pbs.twimg.com/profile_banners/1401882093771280384/1700000000",
"bio": "Building data infra. Previously eng @Segment. Writing about pipelines and APIs.",
"location": "Denver, CO",
"followers": 41200,
"following": 512,
"createdUtc": 1517443200
},
"tweets": [
{
"id": "1842093771280384512",
"url": "https://x.com/buildwithjonah/status/1842093771280384512",
"text": "Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.",
"conversationId": "1842093771280384512",
"inReplyToId": null,
"authorId": "1401882093771280384",
"authorHandle": "buildwithjonah",
"authorName": "Jonah Ruiz",
"media": [],
"createdUtc": 1727366400,
"likeCount": 3820,
"replyCount": 96,
"repostCount": 412,
"quoteCount": 28,
"viewCount": 284000,
"bookmarkCount": 1540,
"lang": "en",
"isReply": false,
"source": "Twitter Web App"
},
{
"id": "1842093771280450048",
"url": "https://x.com/buildwithjonah/status/1842093771280450048",
"text": "First lesson: every provider's error format is different. We ended up writing a translation layer just to know whether a failure meant retry, or never retry.",
"conversationId": "1842093771280384512",
"inReplyToId": "1842093771280384512",
"authorId": "1401882093771280384",
"authorHandle": "buildwithjonah",
"authorName": "Jonah Ruiz",
"media": [
{
"type": "photo",
"url": "https://pbs.twimg.com/media/F9k2QoQWkAA_error_flow.jpg",
"width": 1600,
"height": 900
}
],
"createdUtc": 1727366460,
"likeCount": 1240,
"replyCount": 31,
"repostCount": 88,
"quoteCount": 5,
"viewCount": 91000,
"bookmarkCount": 512,
"lang": "en",
"isReply": true,
"source": "Twitter Web App"
},
{
"id": "1842093771280516096",
"url": "https://x.com/buildwithjonah/status/1842093771280516096",
"text": "Second lesson: pagination cursors are never portable across providers. We had to build our own cursor abstraction to keep client code simple.",
"conversationId": "1842093771280384512",
"inReplyToId": "1842093771280450048",
"authorId": "1401882093771280384",
"authorHandle": "buildwithjonah",
"authorName": "Jonah Ruiz",
"media": [],
"createdUtc": 1727366520,
"likeCount": 980,
"replyCount": 22,
"repostCount": 64,
"quoteCount": 3,
"viewCount": 68000,
"bookmarkCount": 401,
"lang": "en",
"isReply": true,
"source": "Twitter Web App"
}
]
}
}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-11-05 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- urlstring
https://x.com/buildwithjonah/status/1842093771280384512
Canonical x.com or twitter.com status URL with a numeric tweet ID. Any tweet in the self-thread can be supplied; the provider resolves the thread root.
Response
JSON, one example value per field.
- avatarUrlstring
https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg
Avatar image URL of the author.
- biostring
Building data infra. Previously eng @Segment. Writing about pipelines and APIs.
Bio text on the author's profile.
- blueVerifiedboolean
true
Whether the author carries an X blue verification badge.
- coverUrlstring
https://pbs.twimg.com/profile_banners/1401882093771280384/1700000000
Profile banner image URL of the author.
- createdUtcnumber
1517443200
UTC epoch timestamp in seconds (Unix time) the author's account was created. Multiply by 1000 for a JS Date in milliseconds.
- followersinteger
41200
Follower count of the author.
- followinginteger
512
Number of accounts the author follows.
- handlestring
buildwithjonah
Populated whenever the provider has data for the entity.
- idstring
1401882093771280384
Populated whenever the provider has data for the entity.
- locationstring
Denver, CO
Location text on the author's profile.
- namestring
Jonah Ruiz
Populated whenever the provider has data for the entity.
- urlstring
https://x.com/buildwithjonah
Canonical X profile URL of the thread's author.
- verifiedboolean
true
Whether the author carries a legacy X verification badge.
- completeboolean
true
Whether the provider reached the end of the self-thread without hitting its internal cap.
- conversationIdstring
1842093771280384512
Conversation ID shared by the self-thread tweets. Populated whenever the provider has data for the entity.
- threadLengthinteger
3
Number of tweets returned in the self-thread.
Ordered self-thread tweets. Replies from other users are excluded. Populated whenever the provider has data for the entity.
- authorHandlestring
buildwithjonah
Populated whenever the provider has data for the entity.
- authorIdstring
1401882093771280384
Populated whenever the provider has data for the entity.
- authorNamestring
Jonah Ruiz
Populated whenever the provider has data for the entity.
- bookmarkCountinteger
1540
Bookmark count of the post.
- conversationIdstring
1842093771280384512
- createdUtcnumber
1727366400
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
- idstring
1842093771280384512
Populated whenever the provider has data for the entity.
- inReplyToIdstring
null
- isReplyboolean
false
Whether the post is a reply to another post.
- langstring
en
Two-letter language code X detected for the post.
- likeCountinteger
3820
Like count of the post.
- quoteCountinteger
28
Quote count of the post.
- replyCountinteger
96
Reply count of the post.
- repostCountinteger
412
Repost count of the post.
- sourcestring
Twitter Web App
Client the post was sent from, e.g. "Twitter Web App".
- textstring
Spent the last 6 months building a data pipeline that normalizes 40 scraper APIs into one schema. Here is what broke, and what I would do differently. A thread.
Populated whenever the provider has data for the entity.
- urlstring
https://x.com/buildwithjonah/status/1842093771280384512
Populated whenever the provider has data for the entity.
- viewCountinteger
284000
View count of the post.
Photo, video, and GIF attachments on the post. Empty when the post has none.
- heightinteger
Pixel height of the media item, when the lane reports it.
- 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
Pixel width of the media item, when the lane reports it.
- foundboolean
true
Whether the provider returned a tweet thread result.
- 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 Thread API
The AnyAPI X / Twitter Thread API returns X / Twitter thread data as normalized JSON from one POST call to /v1/run/twitter.thread. Resolve the linear self-thread containing an X (Twitter) post, from its root through the author's linked continuations. This excludes replies from other users. AnyAPI returns one normalized schema whichever source serves it. It costs from $2.69 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 99.1% of X / Twitter thread calls through AnyAPI succeeded, with a median response time of 2.8 seconds across 4,637 measured calls.