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.
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
Input
mode"posts" | "search" | "comments"posts = a subreddit feed; search = keyword search; comments = one submission's thread. Defaults from the fields you provide.
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.
post_urlstringSubmission URL or ID for comments mode.
subredditstringSubreddit name, r/name, or subreddit URL. Required for posts mode; 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
commentsobject[]Flattened comment thread (comments mode)
subredditstringResolved subreddit, when applicable
source_urlstringrequiredReddit 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
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}'