Better Fetch

Reddit Scraper

Inspect public subreddits, posts, search, comments, and Reddit-hosted video transcripts through official JSON and VTT surfaces.

Socialv0.3.1~1 credit/runSource on GitHub

Workspace

Configure

Inputs stay here while results become exportable artifacts.

Start from an example

subreddit_details = community metadata; posts = a subreddit feed; search = keyword search; comments = one submission's thread; transcript = public Reddit video captions.

posts mode: hot, new, top, or rising. search mode: relevance, hot, top, new, or comments.

Time window applied when sort is top.

Keyword query for search mode.

Caption language code for transcript mode. Defaults to en.

Submission URL or ID for comments/transcript mode, or a direct v.redd.it URL for transcript mode.

Subreddit name, r/name, or subreddit URL. Required for subreddit_details and posts modes; optional in search mode to restrict the search.

Maximum posts to return in posts and search modes.

Maximum comments to return in comments mode.

Sign in and run
~1 base credit/run10 runs/minute

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.

modepostcountpostsquerydetailspost_idraw_vtt

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.

sortstring

posts 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.

querystring

Keyword query for search mode.

languagestring

Caption language code for transcript mode. Defaults to en.

post_urlstring

Submission URL or ID for comments/transcript mode, or a direct v.redd.it URL for transcript mode.

subredditstring

Subreddit name, r/name, or subreddit URL. Required for subreddit_details and posts modes; optional in search mode to restrict the search.

max_resultsintegerdefault: 10

Maximum posts to return in posts and search modes.

max_commentsintegerdefault: 20

Maximum comments to return in comments mode.

Output

modestringrequired

Resolved run mode

postobject

The submission in comments mode

post.idstring

Reddit submission id

post.scoreinteger

Net upvotes

post.titlestring

Submission title

post.authorstring

Author username

post.selftextstring

Truncated self-post body

post.permalinkstring

Full Reddit permalink

post.subredditstring

Subreddit name

post.num_commentsinteger

Comment count

countintegerrequired

Number of posts or comments returned

postsobject[]

Submissions (posts and search modes)

querystring

Search query, when applicable

detailsobject

Normalized community metadata in subreddit_details mode

details.idstring

Reddit community id

details.urlstring

Canonical subreddit URL

details.iconstring

Community icon URL

details.namestring

Subreddit display name

details.titlestring

Visible community title

details.bannerstring

Community banner URL

details.over_18boolean

NSFW community flag

details.languagestring

Community language code

details.created_utcnumber

Creation time in unix seconds

details.descriptionstring

Community description

details.subscribersinteger

Visible subscriber count

details.active_usersinteger

Visible active user count when exposed

details.public_descriptionstring

Short public description

post_idstring

Reddit post id in transcript mode

raw_vttstring

Raw public WebVTT captions

commentsobject[]

Flattened comment thread (comments mode)

languagestring

Resolved caption language

video_idstring

v.redd.it media id

subredditstring

Resolved subreddit, when applicable

source_urlstringrequired

Reddit JSON URL fetched

transcriptstring

Plain-text transcript with rolling caption overlap removed

caption_urlstring

Resolved public Reddit VTT URL

transcript_not_availableboolean

True 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

Community monitoring

Track a subreddit's hot, new, top, or rising posts to watch product mentions, sentiment, and emerging discussion for a brand or topic.

Voice-of-customer research

Search Reddit for a keyword and collect the highest-signal submissions and their comment threads for market and product research.

Agent context gathering

Let an agent pull a submission's comments before summarizing the debate, extracting answers, or deciding what to read next.

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"}'