X / Twitter Replies API
Fetch the replies to any X (Twitter) post URL as structured records: author, text, and engagement. An empty result is valid and does not assert whether the target post exists.
$0.45/1k req, pay per request, no subscription.
{"id": "1846991234567890111","url": "https://x.com/marswatcher/status/1846991234567890111","text": "This never gets old. Godspeed to the next crew.","authorName": "Mars Watcher","authorHandle": "marswatcher","replyCount": 4,"repostCount": 12,"likeCount": 340,... 5 more fields}
Pricing and providers
X / Twitter Replies API pricing: one API, 4 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
capped at $0.0037 per request1 result$0.000218 results$0.001936 results$0.0037 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.4OctopusBackup 3100.00% uptime10294ms p500.1% of calls0.1%48 calls$0.345/1k resultsup to $0.0138 / requestMetered per result returned$0.00275 base + $0.00028 per result
capped at $0.0138 per request1 result$0.0030320 results$0.0083540 results$0.0138 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 replies in one request
This sample shows 21 of 23 fields. See every field
{
"found": true,
"data": {
"items": [
{
"id": "1846991234567890111",
"url": "https://x.com/marswatcher/status/1846991234567890111",
"text": "This never gets old. Godspeed to the next crew.",
"authorName": "Mars Watcher",
"authorHandle": "marswatcher",
"replyCount": 4,
"repostCount": 12,
"likeCount": 340,
"quoteCount": 1,
"viewCount": 18400,
"createdUtc": 1729526400,
"conversationId": "1846987139428634858",
"media": []
},
{
"id": "1846991234567890112",
"url": "https://x.com/rocketrhea/status/1846991234567890112",
"text": "Watched the launch live from the causeway, the ground shakes more than you would think",
"authorName": "Rhea Ibarra",
"authorHandle": "rocketrhea",
"replyCount": 2,
"repostCount": 5,
"likeCount": 96,
"quoteCount": 0,
"viewCount": 5200,
"createdUtc": 1729526460,
"conversationId": "1846987139428634858",
"media": [
{
"type": "photo",
"url": "https://pbs.twimg.com/media/GZreplyLaunchpad.jpg",
"width": 1200,
"height": 800
}
]
},
{
"id": "1846991234567890113",
"url": "https://x.com/coldcoffeeorbit/status/1846991234567890113",
"text": "",
"authorName": "Cold Coffee Orbit",
"authorHandle": "coldcoffeeorbit",
"replyCount": 0,
"repostCount": 1,
"likeCount": 22,
"quoteCount": 0,
"viewCount": 1100,
"createdUtc": 1729526520,
"conversationId": "1846987139428634858",
"media": [
{
"type": "video",
"url": "https://pbs.twimg.com/amplify_video_thumb/1846991234567890113/img/reply_video_poster.jpg",
"videoUrl": "https://video.twimg.com/amplify_video/1846991234567890113/vid/720x1280/reply_video.mp4",
"width": 640,
"height": 360
}
]
}
]
}
}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-31 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- urlstring
https://x.com/nasa/status/1846987139428634858
Full URL of the X (Twitter) post to fetch replies for (e.g. https://x.com/nasa/status/1846987139428634858).
- cursorstring
Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it to fetch the next page of replies.
- limitinteger
Maximum number of results to return (1-40, default 40). Per-result lanes cost less at lower limits; a backup that bills its native page may cost up to the advertised request price.
- 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 `nextCursor`, 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. 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.
Response
JSON, one example value per field.
Reply records for the requested post. Populated whenever the provider has data for the entity.
- authorHandlestring
marswatcher
Screen name / handle of the reply's author, without the @ prefix.
- authorNamestring
Mars Watcher
Display name of the reply's author. Empty when the upstream omits it.
- conversationIdstring
1846987139428634858
Id of the conversation the reply belongs to, as a string.
- createdUtcnumber
1729526400
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
- idstring
1846991234567890111
The reply's numeric tweet ID, as a string. Populated whenever the provider has data for the entity.
- likeCountinteger
340
Number of likes on this reply.
- quoteCountinteger
1
Number of quote tweets of this reply.
- replyCountinteger
4
Number of replies to this reply.
- repostCountinteger
12
Number of reposts/retweets of this reply.
- textstring
This never gets old. Godspeed to the next crew.
The reply's text. Empty for media-only replies with no text.
- urlstring
https://x.com/marswatcher/status/1846991234567890111
Canonical x.com URL of the reply, with tracking query params stripped. Populated whenever the provider has data for the entity.
- viewCountinteger
18400
Number of views of this reply. Null when the source does not report it, as for posts older than X view counts.
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.
- nextCursorstringcan require
Opaque cursor for the next page of replies, or null when there are no more. Pass it back as cursor to continue.
- foundboolean
true
Whether the provider returned a reply result. An empty items array is valid and may mean the post has no replies or the target could not be resolved.
- 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.
Selling this API? See the full schema your endpoint must return.
FAQ
About the X / Twitter Replies API
The AnyAPI X / Twitter Replies API returns X / Twitter replies data as normalized JSON from one POST call to /v1/run/twitter.replies. Fetch the replies to any X (Twitter) post URL as structured records: author, text, and engagement. An empty result is valid and does not assert whether the target post exists. AnyAPI routes each request across 4 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, 98.6% of X / Twitter replies calls through AnyAPI succeeded, with a median response time of 1.4 seconds across 130,063 measured calls.