如何用 TwexAPI 搜索 X 上的 Cashtag 讨论
Cashtag 会把市场讨论变成可搜索的标签。当用户发布 $TSLA、$NVDA 或 $BTC 相关内容时,你可以用 POST https://api.twexapi.io/twitter/cashtags 拉取相关 X 帖子,并围绕这些帖子搭建监控流程。
这篇文章只解决一个明确任务:请求帖子、整理关键字段,并把结果送进复核队列。该端点提供的是社交讨论上下文,不应被单独当作投资建议或交易信号。
什么时候适合用这个端点
当你需要持续查看一个或多个市场符号被如何讨论时,可以使用 Search Cashtags。它适合:
- 追踪哪些帖子正在推动某个 ticker 的讨论。
- 采集指定语言样本,用于情绪或话题分析。
- 找出高互动帖子,交给人工复核。
- 当某个符号的关注度异常升高时,触发内部提醒。
金融场景里要把边界讲清楚。Cashtag 活跃度能说明大家在聊什么,但不能证明信息准确、重要,或尚未反映在价格中。
请求模型
向 POST /twitter/cashtags 发送 JSON body,并使用 Authorization: Bearer <token> 认证。
| 字段 | 类型 | 说明 |
|---|---|---|
cashtags | 字符串数组 | 要搜索的符号,可带或不带 $。示例:["AAPL", "TSLA"]。 |
startTime / endTime | string 或 null | 用 UNIX 时间戳字符串限定搜索窗口。 |
sortBy | "Latest" 或 "Top" | 监控用 Latest,复盘高互动内容可用 Top。 |
maxItems | integer | 返回帖子数量,范围 1 到 1000。 |
mininumLikes / mininumRetweets / mininumReplies | integer | 互动过滤字段。请按文档字段名传参,包括 mininum 这个拼写。 |
blueVerified / verified | boolean | 可选的账号认证过滤。 |
language | string | 语言代码,例如 en、ja 或 zh。 |
onlyImage / onlyVideo / onlyQuote / onlyReply | boolean | 可选的内容类型过滤。如果想要更完整样本,先不要设置这些字段。 |
基础请求
下面的请求会拉取提及三个符号的英文帖子,并按最新发布时间排序。
1curl --request POST \
2 --url https://api.twexapi.io/twitter/cashtags \
3 --header 'Authorization: Bearer <token>' \
4 --header 'Content-Type: application/json' \
5 --data '{
6 "cashtags": ["TSLA", "NVDA", "BTC"],
7 "startTime": "1775726400",
8 "endTime": "1775727300",
9 "sortBy": "Latest",
10 "maxItems": 50,
11 "language": "en",
12 "mininumLikes": 5
13 }'成功响应包含 code、msg 和 data。data 中的每一项都是 tweet 对象,常用字段包括 tweet_id、text、full_text、created_at、created_at_datetime、favorite_count、retweet_count、reply_count、quote_count、cashtags、hashtags、media 和用户信息。
1{
2 "code": 200,
3 "msg": "success",
4 "data": [
5 {
6 "tweet_id": "1803006263529541838",
7 "text": "Example post mentioning $TSLA",
8 "created_at_datetime": "2024-06-17T03:51:48.000Z",
9 "favorite_count": 123,
10 "retweet_count": 45,
11 "reply_count": 8,
12 "cashtags": ["$TSLA"]
13 }
14 ]
15}Python 客户端
先把 API 调用写得小而明确。下面这个客户端只返回原始 data 数组,后续由你的应用决定如何存储、排序或复核。
1import os
2from typing import Any
3
4import requests
5
6API_URL = "https://api.twexapi.io/twitter/cashtags"
7TOKEN = os.environ["TWEXAPI_BEARER_TOKEN"]
8
9def search_cashtags(
10 cashtags: list[str],
11 *,
12 start_time: str | None = None,
13 end_time: str | None = None,
14 sort_by: str = "Latest",
15 max_items: int = 50,
16 language: str | None = "en",
17 min_likes: int = 0,
18) -> list[dict[str, Any]]:
19 payload: dict[str, Any] = {
20 "cashtags": cashtags,
21 "sortBy": sort_by,
22 "maxItems": max_items,
23 "mininumLikes": min_likes,
24 }
25
26 if start_time:
27 payload["startTime"] = start_time
28 if end_time:
29 payload["endTime"] = end_time
30 if language:
31 payload["language"] = language
32
33 response = requests.post(
34 API_URL,
35 headers={
36 "Authorization": f"Bearer {TOKEN}",
37 "Content-Type": "application/json",
38 },
39 json=payload,
40 timeout=30,
41 )
42 response.raise_for_status()
43 return response.json().get("data", [])
44
45if __name__ == "__main__":
46 tweets = search_cashtags(["TSLA", "NVDA", "BTC"], max_items=25, min_likes=5)
47 for tweet in tweets[:5]:
48 text = tweet.get("full_text") or tweet.get("text") or ""
49 print(tweet.get("tweet_id"), tweet.get("cashtags"), text[:140])构建复核队列
第一版最有价值的通常不是情绪分析大屏,而是一张干净的复核队列,告诉分析人员下一步该看哪些帖子。
1def review_row(tweet: dict[str, Any]) -> dict[str, Any]:
2 favorite_count = tweet.get("favorite_count") or 0
3 retweet_count = tweet.get("retweet_count") or 0
4 reply_count = tweet.get("reply_count") or 0
5 quote_count = tweet.get("quote_count") or 0
6 engagement = favorite_count + retweet_count + reply_count + quote_count
7
8 return {
9 "tweet_id": tweet.get("tweet_id"),
10 "created_at": tweet.get("created_at_datetime") or tweet.get("created_at"),
11 "cashtags": ", ".join(tweet.get("cashtags") or []),
12 "language": tweet.get("lang"),
13 "engagement": engagement,
14 "text": tweet.get("full_text") or tweet.get("text") or "",
15 "url": f"https://x.com/i/status/{tweet.get('tweet_id')}",
16 }
17
18tweets = search_cashtags(["TSLA", "NVDA"], sort_by="Latest", max_items=100)
19rows = sorted((review_row(tweet) for tweet in tweets), key=lambda row: row["engagement"], reverse=True)
20
21for row in rows[:10]:
22 print(row["engagement"], row["cashtags"], row["url"])接下来可以把这些 rows 写入数据库、表格或内部审核工具。建议把 tweet_id 作为唯一键,避免定时任务重复写入同一条帖子。
监控流程
一个实用的监控循环通常包含五步:
- 对关注的符号执行
sortBy: "Latest"查询。 - 按
tweet_id保存每条新帖子的原始响应。 - 根据回复、转发、点赞、引用和发布时间计算简单复核分。
- 只把优先级最高的结果送给人工或下游分析。
- 将价格数据、新闻验证和合规复核放在独立系统里处理。
这样可以避免把嘈杂的社交帖子包装成虚假的精确结论。API 给你讨论内容,真正决定哪些内容值得关注的是你的工作流。
常见坑
- 互动过滤字段请使用文档里的
mininumLikes、mininumRetweets和mininumReplies。 startTime和endTime要传 UNIX 时间戳字符串,不是普通日期字符串。- 除非你确实想把结果收得很窄,否则不要同时设置
onlyImage、onlyVideo、onlyQuote和onlyReply。 - 调过滤条件时先用较小的
maxItems,确认结果有用后再提高。 - 把 cashtag 帖子当作社交数据处理。里面可能包含玩笑、垃圾内容、传言或协同行为。
小结
POST /twitter/cashtags 是一个用于采集股票和加密货币符号相关 X 帖子的聚焦端点。更稳的做法是:搜索正确的 cashtag,按时间和语言过滤,整理响应字段,用 tweet_id 去重,再把帖子交给复核流程。
用它来监控讨论,而不是替代金融研究。