reddit_ search
搜索 Reddit 帖子和评论,或读取完整评论串——完全不触碰会拦截爬虫的 reddit.com。读取 Arctic Shift 社区存档:免费、近实时,且无需 Reddit API 凭据。
使用场景
品牌与产品监控
找到您的产品或公司在 Reddit 上的每一次提及,可限定相关 subreddit 或覆盖全站
市场与舆情研究
挖掘真实用户在其讨论社区中对某个品类、竞争对手或痛点的看法
面向 AI Agent 的讨论串读取
一次调用即可获取帖子及其完整的嵌套评论树——可直接用于摘要或分析
社区趋势追踪
使用 after/before 过滤器观察某个 subreddit 在一段日期范围内的讨论话题
用户研究
获取特定作者的帖子或评论,以理解专家观点和反复出现的主题
Endpoint
/api/v1/tools/reddit_searchParameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Optional | - | 关键词搜索。posts 模式匹配标题 + 正文(selftext);comments 模式匹配评论内容。支持 "引号短语"、OR 以及 - 排除语法 Example: best mechanical keyboard |
subreddit | string | Optional | - | 将结果限定在一个 subreddit(可带或不带 r/ 前缀) Example: MechanicalKeyboards |
author | string | Optional | - | 将结果限定为一位作者(可带或不带 u/ 前缀) Example: spez |
mode | string | Optional | posts | 搜索目标:"posts"(默认)、"comments",或 "thread"(帖子及其嵌套评论树——需要 link_id) Example: thread |
link_id | string | Optional | - | 帖子 ID(例如 "1twm1zh" 或 "t3_1twm1zh")——thread 模式必填,comments 模式可作为可选过滤器 Example: 1twm1zh |
after | string | Optional | - | 仅返回此日期之后发布的内容——支持 ISO 8601、epoch 秒,或 "7d" 这样的偏移量 Example: 7d |
before | string | Optional | - | 仅返回此日期之前发布的内容——格式与 after 相同 Example: 2026-08-01 |
limit | number | Optional | 25 | 最大结果数,1-100(thread 模式:返回的最大评论数) Example: 10 |
sort | string | Optional | desc | 按发帖日期排序:"desc"(最新在前)或 "asc" Example: desc |
source | string | Optional | auto | 强制指定后端:"auto"(先 Arctic Shift,后 PullPush;未限定范围的关键词搜索先经过 web_discovery)、"arctic_shift"(限定范围的搜索与讨论串)、"web_discovery"(覆盖全 Reddit 的关键词搜索)或 "pullpush"(自动的第二来源;自 2026 年 8 月起拒绝自动化客户端) Example: auto |
reddit.com 会拦截直接抓取,因此 reddit_search 完全不会访问它。限定 subreddit 或作者的搜索以及 thread 模式读取 Arctic Shift 存档(近实时)。覆盖全 Reddit 的关键词搜索 Arctic Shift 无法直接完成——它要求限定范围——因此先路由到 web_discovery:先用限定站点的网页搜索找到匹配的帖子,再按这些帖子 ID 从 Arctic Shift 读出。该路线返回的是真实的存档记录,但每次调用最多 10 个帖子,按网页搜索的相关性而非分数或日期排序,并且无法应用 after/before;响应会在它的 notes 中说明这一点。每当 Arctic Shift 或 web_discovery 在 posts 或 comments 搜索中失败时,会第二个尝试 PullPush,响应会在 fallback_used 中说明;PullPush 自 2026 年 8 月起拒绝自动化客户端,因此该回退通常也会报告这一拒绝。每次搜索必须至少包含 query、subreddit 或 author 之一。发布不足约 36 小时的内容,其分数和评论数可能显示为 0/1——存档在内容发布的瞬间即将其捕获。
有一个后端仅在 MCP 上可用。自托管的 crawlforge-mcp-server 包还可以读取 Reddit 官方 Data API(source: "reddit_api")——只要你把 REDDIT_CLIENT_ID 和 REDDIT_CLIENT_SECRET 设为你自己 Reddit 应用的凭据:它会用你自己的配额返回实时分数和完整的评论树,并在失败时回退到存档。本 REST 端点有意不提供该能力:服务端共享一把 Reddit 密钥,按 Reddit API 条款属于商业用途。另请注意,Reddit 已于 2025 年 11 月关闭 API 自助注册,因此新凭据需要走审批流程。评论全文搜索以及 after/before 筛选始终使用存档,因为 Reddit 官方 API 两者都不支持。
请求示例
curl -X POST https://crawlforge.dev/api/v1/tools/reddit_search \
-H "X-API-Key: cf_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "best mechanical keyboard",
"subreddit": "MechanicalKeyboards",
"mode": "posts",
"limit": 10
}'响应示例
{ "success": true, "data": { "source": "arctic_shift", "mode": "posts", "query": "best mechanical keyboard", "subreddit": "MechanicalKeyboards", "author": null, "count": 2, "results": [ { "id": "1x2y3z4", "title": "What's the best mechanical keyboard for programming in 2026?", "author": "keeb_enthusiast", "subreddit": "MechanicalKeyboards", "created_utc": 1755993600, "created_iso": "2026-08-24T00:00:00.000Z", "score": 142, "num_comments": 87, "upvote_ratio": 0.96, "flair": "Discussion", "over_18": false, "selftext": "After five years on membrane boards I finally want to switch...", "selftext_truncated": false, "url": "https://www.reddit.com/r/MechanicalKeyboards/comments/1x2y3z4/", "permalink": "https://www.reddit.com/r/MechanicalKeyboards/comments/1x2y3z4/whats_the_best_mechanical_keyboard/" } ], "notes": [ "Data from the Arctic Shift community archive (arctic-shift.photon-reddit.com), not reddit.com (which blocks scrapers).", "Scores and comment counts of content less than ~36h old may read 0/1 — the archive captures content the moment it is posted." ], "checkedAt": "2026-08-24T14:30:00.000Z" }, "credits_used": 5, "credits_remaining": 995, "processing_time": 850}data.source由哪个后端响应:arctic_shift(限定范围、更及时)、web_discovery(未限定范围的全 Reddit 关键词搜索)或 pullpush(自动的第二来源,或显式指定时使用)data.results规范化的帖子或评论,附完整 reddit.com 永久链接和 ISO 日期data.results.selftext_truncated帖子/评论文本上限为 2,000 字符;被截断时为 truedata.notes响应存档的来源与时效性说明data.commentsthread 模式:嵌套评论树。折叠的分支是一个 {more_count, more_ids} 占位节点:more_count 是它隐藏的评论数(含回复);more_ids 只列出被隐藏的直接回复,因此可能比 more_count 短data.comment_countthread 模式:data.comments 中所有层级的评论数,不含占位节点——最多为 limitdata.comments_collapsedthread 模式:所有占位节点 more_count 之和——存档中保存但本次响应未包含的该讨论串评论数。comment_count + comments_collapsed 即存档保存的评论数;post.num_comments 是存档读取该帖子时 Reddit 自己的总数,因此可能更高(已删除、被移除或尚未存档的评论)或更低(那次读取之后发布的评论)credits_used每次搜索或讨论串读取固定消耗 5 creditsprocessing_time存档搜索通常在 2 秒内完成错误处理
缺少搜索范围(400 Bad Request)
posts 和 comments 模式至少需要 query、subreddit 或 author 之一。thread 模式需要 link_id。
未限定范围的 Arctic Shift 搜索(400 Bad Request)
Arctic Shift 无法对全 Reddit 进行关键词搜索。请添加 subreddit 或 author 限定,或者去掉 source,让 auto 把该查询路由到 web_discovery。
在非 Arctic 后端上使用 thread 模式(400 Bad Request)
thread 模式仅支持 Arctic Shift。source: "pullpush" 只支持 posts 和 comments 搜索,而 source: "web_discovery" 只服务未限定范围的关键词搜索。
日期过滤器无效(400 Bad Request)
after/before 必须为 ISO 8601、epoch 秒,或 "7d" 这样的偏移量。
存档不可用(502 Bad Gateway)
两个社区存档均失败或正在限流。错误消息会包含每个存档的具体原因。不会扣除 credits——请稍后重试。
尽可能将搜索限定到某个 subreddit 或作者。限定范围的查询会直接走 Arctic Shift,那里的 limit 可到 100 且 after/before 有效;未限定范围的查询则执行 web_discovery,最多返回 10 个帖子并忽略日期筛选。要完整读取一场讨论,请从搜索结果中取出帖子的 id,将其作为 link_id 并配合 mode: "thread" 传入。
Credit 费用
包含内容:
posts、comments 和完整讨论串(thread)模式
subreddit、作者和日期范围过滤器
带 reddit 风格折叠标记的嵌套评论树
每条结果均附完整 reddit.com 永久链接和 ISO 日期
无需 Reddit API 凭据
套餐推荐:
Free 套餐: 1,000 个一次性试用 credits = 200 次搜索
Hobby 套餐: 5,000 credits = 1,000 次搜索($19/mo)
Professional 套餐: 100,000 credits = 20,000 次搜索($99/mo)
相关工具
准备好试用 reddit_search 了吗?免费注册,获取 1,000 credits,开始挖掘 Reddit 讨论。