X / Twitter 用户帖子 API
按用户名获取 X (Twitter) 账号主页“帖子”标签页的时间线。结果按主页顺序排列:置顶帖子可能排在最前,其后按时间倒序排列本人发布的帖子、转帖、引用和作者自发帖子串的后续帖子。
US$0.45/千次请求,按请求付费,无需订阅。
@buildwithjonah
@buildwithjonah
Pinned
@buildwithjonah· Sep 26, 2024
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.
{"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.","createdUtc": 1727366400,"lang": "en","likes": 3820,"retweets": 412,"replies": 96,... 还有 12 个字段}
价格与服务商
X / Twitter 用户帖子 API 价格:一个 API,3 个可互换的服务商
最便宜的服务商优先响应。如果它失败,下一个会在同一次调用中接手。
每次请求封顶 US$0.00211 条结果US$0.000210 条结果US$0.001120 条结果US$0.0021(封顶)按实际返回的内容计费。调低返回数量上限即可少付,而且无论返回多少,单次请求都不会超过封顶价。
试一试
一个请求获取 X / Twitter 用户帖子
这个示例展示了 30 个字段中的 28 个。查看全部字段
{
"found": true,
"data": {
"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.",
"createdUtc": 1727366400,
"lang": "en",
"likes": 3820,
"retweets": 412,
"replies": 96,
"quotes": 28,
"views": 284000,
"bookmarks": 1540,
"isReply": false,
"isPinned": true,
"media": [],
"conversationId": "1842093771280384512",
"source": "Twitter Web App",
"authorId": "1401882093771280384",
"authorName": "Jonah Ruiz",
"authorHandle": "buildwithjonah",
"authorImage": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg"
},
{
"id": "1841002881044099072",
"url": "https://x.com/buildwithjonah/status/1841002881044099072",
"text": "Shipped a small tool today that diffs API response schemas across versions. Saved me from a nasty silent break last week.",
"createdUtc": 1727280000,
"lang": "en",
"likes": 640,
"retweets": 52,
"replies": 18,
"quotes": 2,
"views": 41200,
"bookmarks": 210,
"isReply": false,
"isPinned": false,
"media": [
{
"type": "photo",
"url": "https://pbs.twimg.com/media/F9j1QoQWkAA_diff_tool.jpg",
"width": 1600,
"height": 1000
}
],
"conversationId": "1841002881044099072",
"source": "Twitter for iPhone",
"authorId": "1401882093771280384",
"authorName": "Jonah Ruiz",
"authorHandle": "buildwithjonah",
"authorImage": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg"
},
{
"id": "1839881220337844224",
"url": "https://x.com/buildwithjonah/status/1839881220337844224",
"text": "@dataeng_marta Totally agree, cursor pagination beats offset once you get past a few hundred thousand rows.",
"createdUtc": 1727107200,
"lang": "en",
"likes": 88,
"retweets": 4,
"replies": 6,
"quotes": 0,
"views": 6200,
"bookmarks": 12,
"isReply": true,
"isPinned": false,
"media": [],
"conversationId": "1839880002114899968",
"source": "Twitter Web App",
"authorId": "1401882093771280384",
"authorName": "Jonah Ruiz",
"authorHandle": "buildwithjonah",
"authorImage": "https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg"
}
],
"nextCursor": "DAABCgABGZ3xw5A2xVIKAAIY__posts_page2"
}
}完整的参数与响应参考:这个接口的每个字段、类型和示例。
参考
一个请求,一种响应结构。
你发送的每个字段和收到的每个字段,都附有真实示例。
最近验证于 2026-11-14 · 可用率和延迟按 30d 统计
请求体
JSON,POST 到这个接口。
- handlestring
buildwithjonah
Twitter/X 用户名,不带开头的 @。
- cursorstring
来自上一次响应 nextCursor 的不透明分页游标。获取第一页时省略。
- 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 tweet 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.
响应
JSON,每个字段一个示例值。
The Posts-tab timeline page, or null when the account was not found.
- nextCursorstring
DAABCgABGZ3xw5A2xVIKAAIY__posts_page2
Opaque cursor for the next native Posts-tab page, or null when no more pages are available.
Posts in profile order. A pinned post may appear before otherwise reverse-chronological results. Populated whenever the provider has data for the entity.
- authorHandlestring
buildwithjonah
Handle of the account that posted.
- authorIdstring
1401882093771280384
Numeric X user id of the account that posted, as a string.
- authorImagestring
https://pbs.twimg.com/profile_images/1401882093771280384/jonah_400x400.jpg
Avatar image URL of the account that posted.
- authorNamestring
Jonah Ruiz
Display name of the account that posted.
- bookmarksinteger
1540
Number of bookmarks.
- conversationIdstring
1842093771280384512
Id of the conversation the post belongs to, as a string.
- createdUtcnumber
1727366400
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
1842093771280384512
The post's numeric tweet ID, represented as a string. Populated whenever the provider has data for the entity.
- isPinnedboolean可设为必填
true
Whether X marks the post as pinned on the profile, or null when the serving source does not publish it.
- isReplyboolean
false
Whether X marks the record as a reply. Certified Posts-tab captures use this for self-thread continuations.
- langstring
en
Language code reported for the post, when available.
- likesinteger
3820
Number of likes.
- quotesinteger
28
Number of quote posts.
- repliesinteger
96
Number of replies.
- retweetsinteger
412
Number of reposts or retweets.
- 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.
The post text. Empty for media-only posts. Populated whenever the provider has data for the entity.
- urlstring
https://x.com/buildwithjonah/status/1842093771280384512
Canonical x.com URL of the post. Populated whenever the provider has data for the entity.
- viewsinteger
284000
Number of views.
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
true
Whether the account's Posts-tab timeline was returned.
- reason"not_found" | "suspended"
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. `suspended`: the platform has suspended the account. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
你在出售这个 API?查看你的接口必须返回的完整数据结构。
常见问题
关于 X / Twitter 用户帖子 API
AnyAPI 的 X / Twitter 用户帖子 API 只需一次 POST 请求 /v1/run/twitter.user_posts,就以统一格式的 JSON 返回 X / Twitter 数据。按用户名获取 X (Twitter) 账号主页“帖子”标签页的时间线。结果按主页顺序排列:置顶帖子可能排在最前,其后按时间倒序排列本人发布的帖子、转帖、引用和作者自发帖子串的后续帖子。AnyAPI 会在 3 个数据源之间路由每个请求,某个数据源失败时自动切换。费用:每千次请求 US$0.45 起,以美元计价,无需订阅,也没有每月最低消费。过去 30 天,通过 AnyAPI 发起的 X / Twitter 用户帖子 API 调用中有 100.0% 成功,响应时间中位数为 1.6 秒,共测量 338,831 次调用。