/v1/search"platform": "x"X 搜索接口
按关键词找帖子。
按关键词搜 X 帖子,拿回正文、作者、点赞数、评论数、播放或阅读数和发布时间:用 HTTP 取 JSON,或在 AI 客户端里通过 MCP 调用。X 搜索 API(数据接口)每次调用 2 积分(约 $0.004–$0.0067),失败不扣,返回格式和其他调用相同。最近实测:2026-11-05。
最近更新:
limit: 100,一次调用自动翻页,最多 5 页、10 积分。够数或没有下一页就停,用不上的页不扣,失败的页也不扣。读 1,000 条约 100 积分,约 ¥2.4($0.33)。每日监控:对你的 AI 说“每天帮我盯着”,这个调用每天自己跑,只把新内容发给你,一个月最多 62 积分,约 ¥1.5($0.21)。 看怎么设
调用 X 搜索,你会拿到什么。
取自一次录制的返回。
录制的一次调用返回了 20 条,下面是第一条的每个字段。名称和正文在示例里去掉了,数字是录制时的真实值。
近 7 天真实调用 156 次,成功 100%,中位 2.1 秒,通常 6 条(数据截至 2026-11-05)。
给 AI 读更省:同一份录制数据(20 条),平台原始 JSON 约 36,372 token,这个接口返回约 10,818 token,少 70%(2026-11-06 实测)。 测量方法
| 字段 | 录制时的值 |
|---|---|
| url | 示例里已去掉 |
| format | video |
| title | null:X 给不了 |
| text | 示例里已去掉 |
| published_at | 2026-10-12T00:44:12.000Z |
| author.id | 示例里已去掉 |
| author.username | 示例里已去掉 |
| author.name | 示例里已去掉 |
| author.verified | true |
| author.followers | 7,425 |
| metrics.likes | 238 |
| metrics.comments | 37 |
| metrics.shares | null:X 给不了 |
| metrics.collects | 145 |
| metrics.views | 8,357 |
| metrics.reposts | 121 |
| images | 空列表 |
| hashtags | 空列表 |
| is_pinned | null:X 给不了 |
每次 2 积分(≈ $0.004–$0.0067),$10 约够 1,500 次。
X 搜索的请求与返回
curl https://api.socialtoai.com/v1/search \ -H "Authorization: Bearer $SOCIALTOAI_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "platform": "x", "query": "weather forecast" }'import osimport uuidimport requestsresponse = requests.post( "https://api.socialtoai.com/v1/search", headers={ "Authorization": f"Bearer {os.environ['SOCIALTOAI_API_KEY']}", # A new key for each request; the same one again retries it without paying twice. "Idempotency-Key": str(uuid.uuid4()), }, json={ "platform": "x", "query": "weather forecast", },)print(response.json())# 已经通过 MCP 接好了?直接用大白话问。在 X 上搜和“weather forecast”有关的帖子。# 你的 AI 会调用 search 工具,参数是:{ "platform": "x", "query": "weather forecast"}取值sort{ "platform": "x", "status": "ok", "items": [ { "platform": "x", "id": "…", "ref": "…", "approx": [], "type": "content", "url": "https://example.com/…", "format": "video", "title": null, "text": "…", "published_at": "2026-10-12T00:44:12.000Z", "author": { "id": "…", "username": "…", "name": "…", "verified": true, "followers": 7425 }, "metrics": { "likes": 238, "comments": 37, "shares": null, "collects": 145, "views": 8357, "reposts": 121 }, "images": [], "hashtags": [], "is_pinned": null } ], "unavailable": ["title", "metrics.shares", "is_pinned"], "page": { "has_more": true, "cursor": "cur_…", "cursor_expires_at": "2026-10-12T19:40:39.000Z" }, "cost_credits": 2}nullcollects 145views 8,357reposts 121示例里的名称和正文已去掉,数字是录制时的真实值。
X 搜索的参数。
5 个,2 个必填。
用 POST 发一个 JSON 请求体。Key 放在 Authorization 请求头里,不要放进网址。
| 名称 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| platform | string | 必填 | — | 这一页固定填 "x"。 |
| query | string | 必填 | — | 搜索词 |
| sort | string | 选填 | "popular" | 按热门排,或按最新排。"latest":按最新排序(2 积分)。"popular""latest" |
| type | string | 选填 | — | "user":搜账号(5 积分)。"user" |
| cursor | string | 选填 | — | 填上一次返回的 page.cursor,取下一页。 |
X 搜索返回的字段。
X 给不了的标出来了。
| 字段 | 类型 | 含义 |
|---|---|---|
| items[].url | string | 能直接打开的链接。 |
| items[].format | string | video、image、text 或 article。 |
| items[].title | string始终 null | 标题。 |
| items[].text | string | 正文或文案。 |
| items[].published_at | string | 发布时间,ISO 8601(UTC)。 |
| items[].author.id | string | 作者的账号编号。 |
| items[].author.username | string | 作者的账号名。 |
| items[].author.name | string | 作者的显示名。 |
| items[].author.verified | boolean | 作者是否认证。 |
| items[].author.followers | integer | 作者的粉丝数。 |
| items[].metrics.likes | integer | 点赞数。 |
| items[].metrics.comments | integer | 评论数。 |
| items[].metrics.shares | integer始终 null | 分享数。 |
| items[].metrics.collects | integer | 收藏数。 |
| items[].metrics.views | integer | 播放或阅读数。 |
| items[].metrics.reposts | integer | 转发数。 |
| items[].images | string[] | 图片地址。 |
| items[].hashtags | string[] | 话题标签,不带 #。 |
| items[].is_pinned | boolean始终 null | 是否被作者置顶。 |
nullX 给不了的字段null 的意思是“X 没给这个值”,不要当成 0。这些字段在这个调用里始终是 null:
title标题。metrics.shares分享数。is_pinned是否被作者置顶。
请求里带上对应的参数,就换成另一种返回:
sort=latest按最新排序2 积分type=user搜账号5 积分和 Reddit 搜索比,这个调用多给作者粉丝数、收藏、转发、播放或浏览和话题标签,少给标题。
每一条另有 platform、id、ref、approx、type;items 外面的部分每个调用都一样。 返回格式
X 搜索的翻页与计费。
每把 Key 每秒 5 次,购买后 20 次;超出不扣费。 频率限制
失败的调用 0 积分,不会自动重试。 错误码
首屏的“最近实测”是最近一次真实调用成功的日子。每次调用从平台读取,返回里的 fetched_at 是读取时间;同一把 Key 5 分钟内重发完全相同的请求算重放(replayed: true),0 积分,返回第一次读到的结果。
这些数字只来自真实调用,每天算一次,不含我们自己的账户:同一账户当天重复发同一请求只按最后一次算,对象不存在、参数不对不算失败,不足 20 次的接口不显示。
接好 MCP 后,这样问就会用到 X 搜索。
在 X 上搜和“weather forecast”有关的帖子。
2 积分search {"platform":"x","query":"weather forecast"}在 X 上搜和“weather forecast”有关的帖子,按最新排序。
2 积分search {"platform":"x","query":"weather forecast","sort":"latest"}
交给你的 AI。
复制给 Claude 或 ChatGPT。
怎么接用 SocialToAI 的 MCP 服务(https://mcp.socialtoai.com/mcp)完成这件事:在 X 上搜和“weather forecast”有关的帖子。调用 search 工具,参数是 {"platform":"x","query":"weather forecast"}。必填:query;可选:sort(popular、latest)。要多条就传 limit(比如 limit=100,最多 5 页),一次调用自动翻页,不用自己一页页取;每页 2 积分,用不上的页不扣。开跑前先算出总共要多少积分,问我同意了再调用。拿到结果后,可以接着调:detail(详情)、comments(评论),用返回的 ref 或 username。如果还没接上 SocialToAI,告诉我怎么接,不要让我把 Key 贴进对话。回答时附上你用到的每一条的链接,最后告诉我花了多少积分。接好 MCP 后把这段话贴进对话。里面没有 Key:在 Claude 和 ChatGPT 里登录授权,其他客户端把 Key 放在请求头里。
这些工具运行时会调用它。
用到它的工作场景。
同一个调用,换个平台。
全部平台和价格/v1/search{ "platform": "x", "query": "weather forecast" }2 积分每次调用接着看。
官方能做什么、谁能申请、多少钱,带来源。
X 官方价格(带来源),以及改为按次读 X
since 和 until 的两种写法,附实测,以及读一个月要多少钱
每天盯 X 的关键词或账号,每次 2 积分,和 X 官方价格对比的月成本
每天盯品牌口碑:态度占比和背后的原帖,每次 16 积分起
让你的 AI 直接读 X。