Reddit User Scraper API
Our Reddit user scraper takes a username and returns that account's public profile plus its most recent posts and comments as one structured JSON object, so you can scrape a Reddit profile from a single REST call.
Why Reddit User data is hard to collect
Pulling a Reddit profile through the official Data API now means a registered OAuth client on every request, since Reddit dropped anonymous traffic and caps free authenticated use at 100 queries per minute averaged over a ten-minute window. Commercial profile collection runs through enterprise sales at roughly $0.24 per 1,000 calls, and a suspended or shadowbanned account returns a 404 with no history at all, so a plain scrape hands you empty pages and parsing work.
Call the Reddit User Scraper API in one request
curl "https://api.redditscraperapi.com/api/v1/reddit/user?username=spez&kind=overview&limit=25&api_key=$API_KEY" import requests
resp = requests.get(
"https://api.redditscraperapi.com/api/v1/reddit/user",
params={
"username": "spez",
"kind": "overview",
"limit": 25,
"api_key": "YOUR_API_KEY",
},
)
data = resp.json()
profile = data["profile"]
print(profile["username"], "-", profile["profile_url"])
print(data["total_results"], "recent items")
for item in data["items"]:
print(item["type"], "in r/" + str(item["subreddit"]), "->", item["permalink"]) Parameters
| Parameter | Required | Default | Notes |
|---|---|---|---|
username | required | - | The Reddit username to look up, with or without a leading u/. This is the account whose profile and history are returned. |
kind | optional | overview | Which slice of the profile feed to pull: overview for mixed recent activity, submitted for posts only, or comments for comments only. |
limit | optional | 25 | How many recent items to return, from 1 to 25. The user feed caps at 25 items per call. |
Fields the Reddit User Scraper API returns
{
"profile": {
"username": "spez",
"profile_url": "https://www.reddit.com/user/spez",
"bio": "Reddit CEO",
"icon": "https://styles.redditmedia.com/t5_1234/styles/profileIcon.png",
"title": "overview for spez",
"total_karma": null,
"created": null
},
"total_results": 2,
"items": [
{
"type": "comment",
"id": "t1_abc123",
"short_id": "abc123",
"title": "spez commented on Updates to our content policy",
"subreddit": "announcements",
"body": "Thanks for the feedback, we are reading every thread.",
"external_url": null,
"permalink": "https://www.reddit.com/r/announcements/comments/xyz/_/abc123/",
"created": "2026-06-18T14:22:05+00:00",
"score": null
},
{
"type": "submission",
"id": "t3_def456",
"short_id": "def456",
"title": "An update on our API",
"subreddit": "reddit",
"body": "Today we are sharing changes to how developers access Reddit data.",
"external_url": null,
"permalink": "https://www.reddit.com/r/reddit/comments/def456/an_update_on_our_api/",
"created": "2026-06-15T17:01:44+00:00",
"score": null
}
],
"_source": "rss"
} | Field | Type | Description |
|---|---|---|
profile.username | string | The account's username, normalized without the u/ prefix. |
profile.profile_url | string (url) | Canonical link to the user's public profile page. |
profile.bio | string or null | The profile description text, when the account has one set. |
profile.icon | string (url) or null | URL of the account's avatar or snoo icon. |
profile.title | string or null | The feed title for the requested view, such as overview for username. |
profile.total_karma | null | Karma is not exposed on this public feed, so the field is returned as null. We do not guess a value. |
profile.created | null | The cake-day timestamp is not in the public feed and is returned as null. |
total_results | integer | Count of items in the returned history array. |
items | array | The account's most recent public posts and comments, newest first. |
items[].type | string | Whether the item is a comment or a submission. |
items[].id | string | The full thing id, for example t1_abc123 for a comment or t3_def456 for a post. |
items[].short_id | string | The base-36 id without the type prefix. |
items[].title | string | The post title, or the comment's contextual title line. |
items[].subreddit | string or null | The subreddit the item was posted in. |
items[].body | string | The text body of the post or comment. |
items[].external_url | string (url) or null | The outbound link for a link post, or null for self posts and comments. |
items[].permalink | string (url) | Direct link to the post or comment on Reddit. |
items[].created | string | ISO 8601 timestamp of when the item was posted. |
items[].score | null | Vote score is not carried on this public feed and is returned as null. |
What you can build with it
Account vetting
Audience research
OSINT and investigations
Moderation and abuse detection
Author enrichment
Dataset building
Why developers pick our Reddit User Scraper API
Our Reddit user scraper runs the fetch and parse for you on our infrastructure: rotating proxies, anti-bot handling, and retries behind one reddit/user call that returns parsed JSON in about 2.6 seconds. A username goes in and a profile object plus up to 25 recent items come back, with no OAuth client to register, no per-minute quota to ration, and a free tier of 1,000 requests.
No OAuth client of your own
Anti-bot and proxy rotation
Honest null fields
Pay for success
Stable JSON schema
Reddit User Scraper API compared to the official Reddit API
| Factor | Our Reddit user scraper API | DIY profile scraping | Reddit Data API |
|---|---|---|---|
| Setup | One api_key | Proxies, headless browser, parser | Registered OAuth client and token |
| Rate limit | Plan request limit only | None, but you handle blocks | 100 QPM, 10-min average window |
| Anonymous access | Yes, just the api_key | Yes, until Reddit blocks you | No, OAuth required on every call |
| Anti-bot and proxies | Handled for you | You build and maintain it | Not applicable |
| Output shape | Stable profile plus items JSON | Whatever you parse | Nested Listing JSON |
| Commercial pricing | Flat per-request, free tier to start | Proxy and upkeep cost | Enterprise sales, about $0.24 per 1k |
Free to start, priced to scale
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
It takes a username and returns a profile object with the username, profile_url, bio, icon, and feed title, plus a total_results count and an items array of the account's most recent public posts and comments. Each item carries its type, id, short_id, title, subreddit, body, external_url, permalink, and created timestamp. Our API fetches and parses the public profile feed for you, so you do not register a Reddit app or run scraping infrastructure.
No. You call our endpoint with a single api_key. There is no Reddit OAuth client to register, no token to refresh every hour, and no shared 100-queries-per-minute cap to ration. The free tier includes 1,000 requests so you can test the Reddit user scraper before committing.
Yes. Set the kind parameter to submitted for posts only or comments for comments only, and leave it on overview for a mixed feed of recent activity. The limit parameter then controls how many of those items you get back, up to 25 per call.
Not on this public feed. Reddit's public profile feed does not expose total karma, cake-day, or per-item vote score, so our API returns those fields as null and never invents a value. You do get the username, bio, icon, and the full recent post and comment history with subreddits, bodies, permalinks, and timestamps.
A suspended or shadowbanned account's public profile returns a 404 with no visible history, because Reddit hides that activity from everyone else. In that case there are no public items to extract. Our API only returns the public posts and comments that Reddit actually serves, so the response reflects what is genuinely visible.
Reddit's User Agreement conditionally permits crawling within the rules of its robots.txt and prohibits scraping the Services without Reddit's prior written consent, and it points developers to the official Data API for automated access. Our endpoint reads only public profile data, but you are responsible for your own lawful basis and for honoring Reddit's terms, applicable law, and privacy rules such as GDPR when you collect data about people. Treat this as engineering guidance and consult a lawyer for legal advice.
Responses return in a median of about 2.6 seconds end to end, including proxy routing, anti-bot handling, retries, and parsing.
The free tier covers 1,000 requests, Pro pricing runs about $0.60 per 1,000 requests, and pay-as-you-go top-ups are $0.90 per 1,000 successful requests. You are billed for successful results.