Reddit Scraper API
A REST API for extracting Reddit posts, comments, subreddits, users, and search results as structured data — one API key, one consistent JSON schema, no Reddit credentials or proxy infrastructure to manage.
Quick answer
A Reddit scraper API turns a Reddit URL, subreddit, username, or search query into structured data over HTTPS — no Reddit developer account, OAuth app, or proxy pool required. UGC Scraper's version returns posts, comments, subreddits, users, and search results in one consistent JSON (or CSV) schema, with automatic fallback if a request path is blocked or rate-limited. To use it: get a free API key, then POST a Reddit URL to /v1/scrape — see Quick start below.
What is the Reddit Scraper API?
It's a hosted API that turns a Reddit URL, subreddit name, username, or search query into structured JSON (or CSV). Every request routes through automatic fallback across the API's extraction methods, so a single blocked or rate-limited path doesn't take your integration down — you always get back the same response shape, regardless of which method served it.
Why use UGC Scraper
- No Reddit API keys. Sign up, get one UGC Scraper key, and start — no OAuth app registration or developer approval.
- No proxies to manage. The fallback layer handles blocked and rate-limited requests for you.
- One consistent schema. Title, author, score, and comments come back in the same shape no matter how the data was fetched.
- Success-only pricing.Failed or blocked requests don't consume your monthly quota.
Supported Reddit data
Posts
Title, body, author, score, timestamps, media, and flair via POST /v1/scrape.
Comments
The full thread with authors, scores, timestamps, and reply nesting, returned alongside the post.
Subreddits
Recent posts from any subreddit, sorted new or top, via POST /v1/subreddit.
Users
A user's submitted posts (POST /v1/user), their comments with post context (POST /v1/user/comments), or their public profile — karma, account age, trophies (POST /v1/user/profile).
Search
Keyword search across Reddit or scoped to one subreddit via POST /v1/search.
Authentication
Every request sends your API key as a bearer token. Base URL: https://api.ugcscraper.com
Authorization: Bearer rps_live_your_keyQuick start
Scrape a single Reddit post and its comments:
cURL
curl -X POST https://api.ugcscraper.com/v1/scrape \
-H "Authorization: Bearer rps_live_your_key" \
-H "Content-Type: application/json" \
-d '{"url":"https://www.reddit.com/r/.../comments/..."}'Python
import requests
r = requests.post(
"https://api.ugcscraper.com/v1/scrape",
headers={"Authorization": "Bearer rps_live_your_key"},
json={"url": "https://www.reddit.com/r/.../comments/..."},
)
post = r.json()Node.js
const res = await fetch("https://api.ugcscraper.com/v1/scrape", {
method: "POST",
headers: {
Authorization: "Bearer rps_live_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://www.reddit.com/r/.../comments/..." }),
});
const post = await res.json();JSON response example
Every scrape returns the same shape, regardless of the source:
{
"title": "string",
"author": "string",
"created_utc": 1700000000,
"num_comments": 256,
"score": 1500,
"permalink": "https://www.reddit.com/r/.../comments/...",
"image_url": "https://...jpg | null",
"thumbnail_url": "https://...jpg | null",
"body": "post text",
"comments": [
{
"author": "string",
"body": "string",
"score": 120,
"id": "t1_abc123",
"parent_id": "t3_xyz789",
"link_id": "t3_xyz789",
"permalink": "https://www.reddit.com/...",
"created_at": "2026-03-16 13:44:50.000+00"
}
]
}Comments come back as a flat list — rebuild the reply tree from id and parent_id.
CSV export
Every scrape is saved to your durable history. Add ?format=csv to the history endpoints for a spreadsheet-ready download instead of JSON.
curl "https://api.ugcscraper.com/v1/history?format=csv" \
-H "Authorization: Bearer rps_live_your_key"Errors
A failed request returns a plain, human-readable error message with an HTTP status code and a reference id you can quote if you need help — never internal implementation detail. Common cases: a malformed or non-Reddit URL (400), an invalid or inactive API key (401/403), a rate limit (429), or a temporary extraction failure (502). Rate-limited and failed requests never consume your monthly quota.
Rate limits & usage
Each successful response includes headers reporting cache status, latency, and your remaining quota, so you can monitor usage without a separate call:
X-RPS-Cache: MISS
X-RPS-Latency-Ms: 842
X-RPS-RateLimit-Remaining: 999Only successful posts count toward your monthly quota — cache hits are included, and failed or blocked pulls are free. There's also a short burst limit per key to keep the API fair under a traffic spike.
Pricing
Free: 1,000 successful posts/month, $0. Pro: 50,000/month, $99. Scale: 500,000/month, $799. Every tier gets the same schema, fallback, and CSV export — higher tiers add durable history, higher burst limits, and priority support. See the full breakdown and start free on the pricing section of the homepage.
Reddit Scraper API FAQ
Do I need a Reddit developer account to use this API?
What format does the API return?
Is there a free tier?
What happens if a request fails?
Can I use this from Python or Node.js, not just cURL?
Related guides
- Best Reddit ScraperHow the options compare, and which fits your use case.
- Reddit Comment ScraperPull full comment threads with scores and nesting.
- Reddit Subreddit ScraperRecent posts from any subreddit, sorted new or top.
- Reddit User ScraperA user's posts, comments, or public profile — karma, trophies, and more.