Better Fetch

Reddit Scraper

Scrape public Reddit through the official JSON views: list a subreddit's hot/new/top/rising posts, run a keyword search across Reddit or one subreddit, or pull a submission's comment thread — returning normalized posts and comments.

Socialv0.1.1~1 credit/runSource on GitHub

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 3, 2026

Playground

posts = a subreddit feed; search = keyword search; comments = one submission's thread. Defaults from the fields you provide.

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.

Submission URL or ID for comments mode.

Subreddit name, r/name, or subreddit URL. Required for posts mode; 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 to run this tool

~1 credit per run · runs against your account

Input

mode"posts" | "search" | "comments"

posts = a subreddit feed; search = keyword search; comments = one submission's thread. Defaults from the fields you provide.

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.

post_urlstring

Submission URL or ID for comments mode.

subredditstring

Subreddit name, r/name, or subreddit URL. Required for posts mode; 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

commentsobject[]

Flattened comment thread (comments mode)

subredditstring

Resolved subreddit, when applicable

source_urlstringrequired

Reddit JSON URL fetched

Examples

subreddit-hot

{
  "mode": "posts",
  "sort": "hot",
  "subreddit": "programming",
  "max_results": 3
}

search-subreddit

{
  "mode": "search",
  "query": "typescript",
  "subreddit": "webdev",
  "max_results": 3
}

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, Cursor, any client)

# Add the Better Fetch MCP connector (or paste the URL into
# Claude → Settings → Connectors → Add custom connector):
claude mcp add --transport http better-fetch https://betterfetch.co/api/mcp \
  --header "Authorization: Bearer bf_your_key_here"

# Then ask for the tool by name: reddit_scraper

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":"posts","sort":"hot","subreddit":"programming","max_results":3}}'

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":"posts","sort":"hot","subreddit":"programming","max_results":3}'