Reddit Scraper
Inspect public subreddits, posts, search, comments, and Reddit-hosted video transcripts through official JSON and VTT surfaces.
Workspace
Configure
Inputs stay here while results become exportable artifacts.
Start from an example
Results
Preview, inspect, copy, or export the complete output.
Your result will become an artifact
Run the tool to inspect structured rows, raw JSON, execution details, and downloadable JSON, CSV, and Markdown files.
Overview
Reddit Scraper gives agents structured access to public Reddit without an account. It reads Reddit's official JSON views through the Better Fetch stealth engine, normalizes submissions and comment trees, and returns clean fields — titles, authors, scores, upvote ratios, comment counts, permalinks, and flattened comment threads — that are easy to store, rank, or summarize in an LLM workflow.
Last validated: Jul 15, 2026
Input
mode"subreddit_details" | "posts" | "search" | "comments" | "transcript"subreddit_details = community metadata; posts = a subreddit feed; search = keyword search; comments = one submission's thread; transcript = public Reddit video captions.
sortstringposts mode: hot, new, top, or rising. search mode: relevance, hot, top, new, or comments.
time"hour" | "day" | "week" | "month" | "year" | "all"Time window applied when sort is top.
querystringKeyword query for search mode.
languagestringCaption language code for transcript mode. Defaults to en.
post_urlstringSubmission URL or ID for comments/transcript mode, or a direct v.redd.it URL for transcript mode.
subredditstringSubreddit name, r/name, or subreddit URL. Required for subreddit_details and posts modes; optional in search mode to restrict the search.
max_resultsintegerdefault: 10Maximum posts to return in posts and search modes.
max_commentsintegerdefault: 20Maximum comments to return in comments mode.
Output
modestringrequiredResolved run mode
postobjectThe submission in comments mode
post.idstringReddit submission id
post.scoreintegerNet upvotes
post.titlestringSubmission title
post.authorstringAuthor username
post.selftextstringTruncated self-post body
post.permalinkstringFull Reddit permalink
post.subredditstringSubreddit name
post.num_commentsintegerComment count
countintegerrequiredNumber of posts or comments returned
postsobject[]Submissions (posts and search modes)
querystringSearch query, when applicable
detailsobjectNormalized community metadata in subreddit_details mode
details.idstringReddit community id
details.urlstringCanonical subreddit URL
details.iconstringCommunity icon URL
details.namestringSubreddit display name
details.titlestringVisible community title
details.bannerstringCommunity banner URL
details.over_18booleanNSFW community flag
details.languagestringCommunity language code
details.created_utcnumberCreation time in unix seconds
details.descriptionstringCommunity description
details.subscribersintegerVisible subscriber count
details.active_usersintegerVisible active user count when exposed
details.public_descriptionstringShort public description
post_idstringReddit post id in transcript mode
raw_vttstringRaw public WebVTT captions
commentsobject[]Flattened comment thread (comments mode)
languagestringResolved caption language
video_idstringv.redd.it media id
subredditstringResolved subreddit, when applicable
source_urlstringrequiredReddit JSON URL fetched
transcriptstringPlain-text transcript with rolling caption overlap removed
caption_urlstringResolved public Reddit VTT URL
transcript_not_availablebooleanTrue when the public post has no caption track for the requested language
Examples
subreddit-details
{
"mode": "subreddit_details",
"subreddit": "programming"
}subreddit-hot
{
"mode": "posts",
"sort": "hot",
"subreddit": "programming",
"max_results": 3
}search-subreddit
{
"mode": "search",
"query": "typescript",
"subreddit": "webdev",
"max_results": 3
}search-reddit
{
"mode": "search",
"query": "OpenAI",
"max_results": 3
}post-comments
{
"mode": "comments",
"post_url": "1nlqi0c",
"max_comments": 3
}post-transcript
{
"mode": "transcript",
"language": "en",
"post_url": "https://www.reddit.com/r/youseeingthisshit/comments/1oiu9xm/football_nostalgiasaints_punter_head_coach_cant/"
}Use cases
FAQ
Does Reddit Scraper require a Reddit login or API key?
No. It reads Reddit's public JSON views through the Better Fetch engine, so it only returns data any logged-out visitor can see and never touches private or account-only content.
Can it read a submission's comments?
Yes. In comments mode, pass a post URL or ID and the tool returns the submission plus a flattened, depth-tagged slice of its comment thread up to your requested limit.
Why might a request come back empty or rate-limited?
Reddit rate-limits aggressively. The tool escalates through a residential proxy automatically when the direct path is blocked, but a busy moment can still return no data — retry shortly.
Use it anywhere
MCP (Claude, ChatGPT, Codex)
# After connecting https://betterfetch.co/api/mcp, ask your AI to:
1. Call search_tools for "Reddit Scraper"
2. Call run_tool with:
name: "reddit_scraper"
input: {"mode":"subreddit_details","subreddit":"programming"}REST
curl -sS -X POST "https://betterfetch.co/api/tools/reddit_scraper/run" \
-H "Authorization: Bearer bf_your_key_here" \
-H "Content-Type: application/json" \
-d '{"input": {"mode":"subreddit_details","subreddit":"programming"}}'Run locally
git clone https://github.com/better-fetch/tools/tree/main/tools/reddit-scraper && cd reddit-scraper && npm i
BETTER_FETCH_API_KEY=bf_your_key_here npx bf-tool run --input '{"mode":"subreddit_details","subreddit":"programming"}'