360 Secure SkillHub
360 安全技能中心

Scavio Reddit API

这是Scavio的Reddit API工具,含12个端点,核心功能包括搜索内容、获取单帖及嵌套评论、社区/用户详情、热门/趋势数据。适用于话题调研、品牌监控、情感分析、构建RAG管道等场景。需配置Scavio API密钥(有免费额度),通过带参数的POST请求调用,返回统一格式的结构化JSON,请求耗时5-15秒。

scavio-ai
scavio-ai
热度 14.77
最近更新 2026-07-26 20:18:35
分类:搜索依赖:第三方 API应用场景:社交媒体 / 研究 / brand-monitoring / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add scavio-reddit-api
Metadata
name
scavio-reddit-api
description
Search Reddit, read posts and threaded comments, and pull subreddit, user, popular, and trending data as structured JSON. 12 endpoints for discussion research, brand monitoring, sentiment analysis, and RAG.
version
2.0.0
tags
reddit, social, sentiment, brand-monitoring, agents, langchain, crewai, autogen, structured-data, json, ai-agents, rag, research
metadata
{"openclaw":{"requires":{"env":["SCAVIO_API_KEY"]},"primaryEnv":"SCAVIO_API_KEY","timeout":90,"throttle":1,"emoji":"💬","homepage":"https://scavio.dev/docs/reddit-api"}}

Reddit via Scavio

Search Reddit, read a post with its threaded comment tree, expand comment replies, and pull subreddit metadata and feeds, redditor profiles with their posts and comments, the site-wide popular feed, and trending search queries. All endpoints return structured JSON.

When to trigger

Use this skill when the user asks to:

  • Search Reddit for opinions, discussions, or public sentiment on a topic
  • Fetch the full text and comments of a Reddit post by id or URL
  • Expand the reply tree under a specific comment
  • Look up a subreddit's metadata or browse its post feed
  • Look up a redditor and read their submitted posts or comments
  • Browse the site-wide popular feed or current trending searches
  • Research how developers or communities talk about a product, library, or issue
  • Build RAG pipelines that need discussion-sourced context
  • Monitor brand or competitor mentions across Reddit

Note: Reddit requests take 5-15 seconds. Set a client timeout of at least 30 seconds.

Setup

Get a free API key at https://scavio.dev (50 free credits to get started, no card required):

export SCAVIO_API_KEY=sk_live_your_key

Every request is a POST with a JSON body and:

Authorization: Bearer $SCAVIO_API_KEY

Endpoints

Base URL: https://api.scavio.dev. All paths are under /api/v1/reddit. Every endpoint costs 1 credit.

Endpoint Credits Description
POST /api/v1/reddit/search 1 Search Reddit posts by query
POST /api/v1/reddit/search/suggestions 1 Autocomplete suggestions for a query
POST /api/v1/reddit/post 1 Full details for a single post
POST /api/v1/reddit/post/comments 1 Top-level comments for a post
POST /api/v1/reddit/post/comments/replies 1 Replies to a specific comment
POST /api/v1/reddit/subreddit 1 Metadata for a subreddit
POST /api/v1/reddit/subreddit/posts 1 A subreddit's post feed
POST /api/v1/reddit/user 1 A redditor's profile
POST /api/v1/reddit/user/posts 1 A redditor's submitted posts
POST /api/v1/reddit/user/comments 1 A redditor's comments
POST /api/v1/reddit/popular 1 The site-wide popular feed
POST /api/v1/reddit/trending 1 Current trending search queries

Workflow

  1. Find discussions: call /reddit/search with query. Read results[].post_id.
  2. Autocomplete: call /reddit/search/suggestions with query for typeahead strings.
  3. Read a post: call /reddit/post with post_id (a t3_... fullname or bare id) or a full Reddit url.
  4. Comments: call /reddit/post/comments with post_id. Each comment carries a reply_cursor; pass it to /reddit/post/comments/replies as cursor (with the same post_id) to expand that thread.
  5. Subreddits: call /reddit/subreddit for metadata, /reddit/subreddit/posts for the feed.
  6. Redditors: call /reddit/user for the profile, /reddit/user/posts and /reddit/user/comments for their activity.
  7. Discovery: call /reddit/popular for the front-page feed and /reddit/trending for trending search queries.

Paginated endpoints return next_cursor; pass it back as cursor for the next page. Stop when next_cursor is null.

Parameters

Search (/search)

Parameter Type Default Description
query string required Search query (1-500 chars)
cursor string -- Pagination cursor from a prior next_cursor

Search suggestions (/search/suggestions)

query* (1-500 chars).

Post (/post)

Parameter Type Default Description
post_id string one of Post fullname (t3_...) or bare id
url string one of Full Reddit post URL

Provide post_id or url (at least one is required).

Post comments (/post/comments)

Parameter Type Default Description
post_id string required Post fullname (t3_...)
sort string TOP HOT, NEW, TOP, BEST, CONTROVERSIAL
cursor string -- Pagination cursor from a prior next_cursor

Comment replies (/post/comments/replies)

Parameter Type Default Description
post_id string required Post fullname (t3_...)
cursor string required A comment's reply_cursor from the comments endpoint
sort string TOP HOT, NEW, TOP, BEST, CONTROVERSIAL

Subreddit (/subreddit)

subreddit* — a subreddit name (1-100 chars), e.g. AskReddit.

Subreddit posts (/subreddit/posts)

Parameter Type Default Description
subreddit string required Subreddit name
sort string HOT BEST, HOT, NEW, TOP, CONTROVERSIAL, RISING
cursor string -- Pagination cursor

User (/user)

username* — a redditor username (1-100 chars), without u/.

User posts / comments (/user/posts, /user/comments)

Parameter Type Default Description
username string required Redditor username
sort string NEW HOT, NEW, TOP, BEST, CONTROVERSIAL
cursor string -- Pagination cursor

Popular (/popular)

cursor (optional) — pagination cursor.

Trending (/trending)

No parameters.

Examples

import os, requests

BASE = "https://api.scavio.dev"
HEADERS = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}"}

# 1. Search Reddit
results = requests.post(f"{BASE}/api/v1/reddit/search", headers=HEADERS,
    json={"query": "serpapi alternative"}).json()

post_id = results["data"]["results"][0]["post_id"]

# 2. Full post detail
post = requests.post(f"{BASE}/api/v1/reddit/post", headers=HEADERS,
    json={"post_id": post_id}).json()

# 3. Top comments, then expand one thread
comments = requests.post(f"{BASE}/api/v1/reddit/post/comments", headers=HEADERS,
    json={"post_id": post_id, "sort": "TOP"}).json()

reply_cursor = comments["data"]["comments"][0]["reply_cursor"]
replies = requests.post(f"{BASE}/api/v1/reddit/post/comments/replies", headers=HEADERS,
    json={"post_id": post_id, "cursor": reply_cursor}).json()

# 4. Subreddit feed
feed = requests.post(f"{BASE}/api/v1/reddit/subreddit/posts", headers=HEADERS,
    json={"subreddit": "Python", "sort": "TOP"}).json()

Response shapes

Every response uses the envelope { data, response_time, credits_used, credits_remaining }. Key data fields per endpoint:

  • search — results[] (post_id, title, url, text, subreddit, author, score, num_comments, created_at, is_nsfw), next_cursor.
  • search/suggestions — suggestions[] (strings).
  • post — post_id, title, text, url, subreddit, author, score, upvote_ratio, num_comments, created_at, is_nsfw, is_video, thumbnail, media.
  • post/comments — comments[] (comment_id, text, author, score, created_at, reply_cursor), next_cursor.
  • post/comments/replies — replies[] (same item shape as a comment), next_cursor.
  • subreddit — id, name, title, description, subscribers, type, is_nsfw, icon, banner, created_at, primary_color.
  • subreddit/posts — posts[] (post_id, title, url, subreddit, author, score, num_comments, created_at, is_nsfw), next_cursor.
  • user — id, name, is_employee, is_verified, account_type, is_accepting_pms.
  • user/posts — posts[] (same item shape as a feed post), next_cursor.
  • user/comments — comments[] (comment_id, text, author, post{id,title}, score, created_at), next_cursor.
  • popular — posts[] (post_id, title, subreddit, author, score, num_comments, url, created_at), next_cursor.
  • trending — trending[] (query, raw_query).
{
  "data": {
    "results": [
      {
        "post_id": "t3_1v6ngaf",
        "title": "Best SerpAPI alternative for an agent pipeline in 2026?",
        "url": "https://www.reddit.com/r/webscraping/comments/1v6ngaf/best_serpapi_alternative/",
        "text": "We outgrew our current provider and need something cheaper...",
        "subreddit": "webscraping",
        "author": "data_plumber",
        "score": 128,
        "num_comments": 43,
        "created_at": "2026-05-11T14:22:07+0000",
        "is_nsfw": false
      }
    ],
    "next_cursor": "eyJjYW5kaWRhdGVzX3JldH..."
  },
  "credits_used": 1,
  "credits_remaining": 999
}

Guardrails

  • Every Reddit endpoint costs 1 credit (this changed from 2 in an earlier version — all Reddit calls are now 1 credit each).
  • Never fabricate post titles, authors, scores, or comment content. Only return API data.
  • Requests take 5-15 seconds. If the user's UX is time-sensitive, recommend async or streaming patterns.
  • Do not filter out NSFW posts silently — surface the is_nsfw flag so the user can decide.
  • When summarizing comment threads, preserve the author attribution.
  • To expand a comment thread, the replies endpoint needs both the post_id and that comment's reply_cursor (passed as cursor).

Failure handling

  • 400 means an invalid or missing parameter (e.g. no post_id/url) — fix and retry.
  • 401 means the API key is invalid or missing. Check SCAVIO_API_KEY.
  • 429 means rate or usage limit exceeded. Wait before retrying. See https://scavio.dev/docs/rate-limits.
  • 502 / 503 mean upstream is temporarily unavailable. Wait a few seconds before retrying.
  • If search returns no results, suggest different keywords.
  • If SCAVIO_API_KEY is not set, prompt the user to export it before continuing.

LangChain

pip install langchain-scavio
from langchain_scavio import ScavioSearchTool
tool = ScavioSearchTool(engine="reddit")