Reddit User API: Pull a Profile's Posts and Comments
Pull a Reddit user's complete post history and comments with the thread each one sits in, using one key and billing per call.

Get a Reddit user's complete posts and their comments in one prompt. Paste this into your agent:
Set up https://monid.ai/SKILL.md, and then use Monid to pull every post and the latest 100 comments for the Reddit user spez, and give me a table with date, subreddit, title or thread, and score.
One prompt pulls a whole account. 1 min setup · 20-40 hrs saved.
You have a Reddit username and want everything that account has posted and said: for moderation, research, an expert-finding list or a due-diligence read on a public figure. This guide shows the quickest way to get a user's posts and comments into your agent or a spreadsheet, what each record contains (we ran both calls live on 2026-10-16), and the traps we hit: a payload far bigger than the question, and comments that cut off and carry no subreddit. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.
What is the easiest way to get a Reddit user's posts and comments through an API?
Monid. Install it once, add a key, and your agent calls the user-posts and user-comments endpoints with no Reddit app to register and no token to refresh.
- Pay per call. Each call is billed on its own, at $0.001 for a user's posts and the same for a user's comments (Verified 2026-10-16 on the Reddit tools page). Buy calls as you need them: no monthly plan and no minimum top-up. Discovery and inspection are free; only a run bills.
- One install, every API. The same key and the same balance call Reddit and every other tool on Monid. When you want the same person's profile on another network, nothing new to sign up for. Building and maintaining separate collectors for posts and comments is the 20 to 40 hours this page claims to save.
- Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tools are there whenever your agent needs them, on demand, with nothing to keep running. Your agent reads
SKILL.mdand learns the rest, so setup is about a minute.
At that price a user's complete post history, 23 posts for the account we tested, was one call, $0.001 (Verified 2026-10-16).
📖 See also Best Social Media Scraping API in 2026
How do you pull one Reddit user's full history?
Make one posts call and as many comment calls as the account needs, following the cursor each response hands you. The posts call comes back whole for an ordinary account; the comments call is paged.
For agents
Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:
set up https://monid.ai/SKILL.md
It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main
Step 1. Pull the post history
monid run -p tikhub -e /api/v1/reddit/app/fetch_user_posts --query '{"username": "spez"}'
The response carries postFeed.elements.edges and a pageInfo.hasNextPage flag. On 2026-10-16 it returned 23 posts, dated from 2015-07-11 to 2026-08-05, with hasNextPage false. That flag is the endpoint's own statement that nothing is left; when it is true, send endCursor back as after. You can also pass sort as NEW, TOP, HOT or CONTROVERSIAL, which is the quick way to ask for an account's best-received posts.
Step 2. Page through the comments
monid run -p tikhub -e /api/v1/reddit/app/fetch_user_comments --query '{"username": "spez"}'
Comments come newest first, 25 to a page by default. page_size goes up to 100, which cuts a long history to a quarter of the calls. Our run asked for 5, got 5, and hasNextPage was true with an endCursor in the response. Pass that cursor back as after and stop when the flag turns false.
Step 3. Add the profile page when you need account-level fields
monid run -p apify -e /trudax/reddit-scraper-lite -w \
-i '{"startUrls":[{"url":"https://www.reddit.com/user/spez/"}],"maxItems":10,"maxComments":0,"includeMediaLinks":true,"skipCommunity":true}'
This is a POST endpoint, so the input goes in -i, not --query. The Apify actor lists user profiles among the pages it reads. It bills per result plus a flat fee per run, so we inspected it and did not run it for this guide, and the posts and comments calls above are the ones whose output we describe.
Or hand the whole job to an agent
Give this to your agent![]()
Set up https://monid.ai/SKILL.md, and then use Monid to for this Reddit username, pull every post and the latest 100 comments, then tell me which subreddits they post in, which threads they comment in most, and their five highest-scoring posts.Can you scrape a Reddit profile yourself with Python?
Yes, people do it with Reddit's own API through a wrapper library, with a browser tool, or by fetching the profile pages and parsing them. It works until the page changes or the limits bite. A scraper you write is yours to keep alive: when the markup, the blocking or the rate limits change, your job breaks, and a profile that loads in your browser can still come back empty in your script.
There are rules to read first. Reddit's terms and its data licensing apply to automated access, and what you may do depends on where you operate and what you use the data for, so read them before you build.
Doing it yourself means an app registration or a browser and proxy setup, parsing code, cursor handling for comments and a repair each time something shifts. That is hours before the first useful row. A call through Monid costs $0.001 (Verified 2026-10-16). Pick Monid for anything you will run more than once: the fetch layer is maintained for you, the output is typed JSON instead of HTML you parse, and an account's whole post history is one call. The same trade-off is laid out for subreddits in the Reddit API guide. A hand-written script is quicker for a single throwaway look at a page you already have open.
What does a Reddit user's data look like, and what can you build with it?
Two kinds of record, tied together by the post id: the user's posts, and the user's comments, each naming the post it sits under. We ran both on 2026-10-16 against u/spez, Reddit's CEO and a public figure, so the fields below are what came back.
The posts
Each of the 23 posts is a node with about 60 fields. The ones that matter, trimmed:
{ "id": "t3_1vgbkge",
"postTitle": "Modernizing Reddit’s infrastructure with you",
"createdAt": "2026-08-05T16:03:56.264000+0000",
"score": 357,
"commentCount": 478,
"upvoteRatio": 0.8439306358381503,
"isSelfPost": true,
"permalink": "/user/spez/comments/1vgbkge/modernizing_reddits_infrastructure_with_you/",
"url": "https://www.reddit.com/r/u_spez/comments/1vgbkge/modernizing_reddits_infrastructure_with_you/",
"content": { "markdown": "Hi everyone, …" } }
Alongside those: the link domain, flair, post type, media and gallery objects, a poll object, and state flags such as isLocked, isStickied, isNsfw, isArchived, distinguishedAs, editedAt and removedByCategory. The post body is in content.markdown; 7 of the 23 posts had none because they were link posts.
The subreddit is not a field of its own. It is the second segment of url. From that, the 23 posts split across eight places: 7 on the user's own profile feed, 5 in r/RDDT, 4 in r/ModSupport, 3 in r/modnews, and one each in r/IAmA, r/Snoo, r/announcements and r/redditdev.
The comments
{ "id": "t1_p1wosm9",
"createdAt": "2026-08-05T18:31:50.140000+0000",
"content": { "preview": "That was the thinking. Otherwise it would be easier to just replicate the UI.", "html": null },
"score": 16,
"authorInfo": { "displayName": "spez" },
"postInfo": { "id": "t3_1vgbkge", "title": "Modernizing Reddit’s infrastructure with you" },
"commentStats": null }
postInfo is the field that makes a comment history readable. Without it you have a list of sentences; with it you have a list of conversations the account chose to join, and you can join the comment to its post on postInfo.id. How two Reddit routes differ on the same query is measured in why two Reddit scrapers returned different posts.
What you can build with it
- An expert-finding list. Pull the comment history of people who answer questions in your field, group by thread title, and keep the accounts that write at length where the question was hard.
- A moderation or trust check. The posts call returns the state flags, so you can count how many of a member's posts were locked, removed or marked NSFW before you give them a role.
- A voice study of a public figure. Sort posts by
TOP, then read the comments sitting under the same post ids, to see how an executive writes when announcing something and when defending it.
What goes wrong when you extract a user's history?
Four things hide until you run it on a real account. All four came out of the runs on 2026-10-16.
Why is the response so much bigger than the question?
Because the posts call returns the whole node for each post. The 23 posts came back as roughly 395,000 characters of JSON, about 48,900 of which were post text. The rest is flags, media objects, author objects and feed state. Billing is per call, so size does not cost more, but it fills your agent's context quickly.
Pick the fields you want before the data reaches the model. Parse the JSON in code and keep a small row:
const rows = res.postFeed.elements.edges.map(({ node: n }) => ({
id: n.id, date: n.createdAt, title: n.postTitle,
score: n.score, comments: n.commentCount,
subreddit: n.url.split("/")[4],
}));
Why does a comment stop mid-sentence?
Because content.preview is cut at 300 characters, and content.html was null on all five comments we pulled. One of our five ended "rely on hammers lik". The preview is enough to read a short reply and not enough to quote a long one. For the whole text, fetch the thread the comment sits under and read it there: postInfo.id is the post to ask for.
Where is the subreddit on a comment?
Not on the comment. The node gave us postInfo.id and postInfo.title and nothing else about where the thread lives, and no permalink for the comment. If you need "which subreddits does this person comment in", join each postInfo.id against the posts you can look up, or resolve the thread by id. Counting threads is easy; counting communities takes one more step.
Where is the profile, with karma and account age?
Not in these two responses. The posts response carries an identity object that held post settings only, and the comment response carries no account-level fields. If your question is "how old is this account and what is its karma", these two endpoints do not answer it, so choose a route that returns a profile before you promise that column to anyone.
How many calls is a whole history?
One for the posts of an ordinary account, and ceil(comments / page_size) for comments. At 100 a page, a thousand comments is 10 calls, $0.01 at $0.001 a call (Verified 2026-10-16). Ten accounts of that size is about $0.11.
📖 See also Automate TikTok Comment Collection
Which endpoint should I use for which job?
| Endpoint | What it does | Input | Returns | Billing |
|---|---|---|---|---|
tikhub /api/v1/reddit/app/fetch_user_posts | A user's posts | username, sort, after | Post nodes with title, score, comment count, body and state flags | Per call |
tikhub /api/v1/reddit/app/fetch_user_comments | A user's comments, paged | username, page_size, sort, after | Comment nodes with 300-character preview, score and the post they sit under | Per call |
apify /trudax/reddit-scraper-lite | Pages by URL or search, user pages included | startUrls, maxItems, maxComments | Items for the pages you point it at | Per result plus a flat fee per run |
Each tikhub row was run once on 2026-10-16 and billed one unit at $0.001 (Verified 2026-10-16). The Apify row was inspected, not run; current figures for every row are on monid.ai/tools.
The billing shapes decide the order. Per call means the two tikhub routes cost the same whether an account has posted three times or three hundred, so run them first and run them on a schedule. Per result plus a flat fee suits one deliberate pull, where the flat fee is spread over many results. For what a whole subreddit or a keyword search returns instead of a person, Reddit scraping API without Apify covers the feed, thread and search endpoints.
When is another route a better fit?
The account is a private individual. We tested a public figure whose posts are official communications. Putting together one ordinary person's years of posts and comments is a different act from reading a thread, and the rules on that differ by country and by purpose, so check yours before you run it. Moderation, approved research and public figures are the cases this guide is written for. Finding out who someone is, is not.
You need deleted or removed content. A feed returns what exists. A deleted comment does not appear and nothing marks the gap, and the post flags describe a live post, not what was taken down. To see something disappear you have to collect on a schedule and compare.
You need private or suspended accounts. These routes read what Reddit shows to an anonymous visitor. Nothing here opens an account that shows nothing.
You need full comment text at volume. The 300-character preview is a limit of the comments call. A thread-level comment endpoint returns whole bodies, and the right route for a long-form study is the threads, not the user feed.
You need the licensed route for a product. If the data feeds a commercial product built on Reddit content, Reddit's own data programme and its terms are the place to start, not a scraper.
And the disclosure: we resell the two tikhub endpoints. The most useful lines in this post are the ones about whom not to run it on and about trimming the payload before your agent sees it, which cost nothing whoever you buy the data from.
Conclusion
The quickest way to pull a Reddit user's posts and comments is two endpoints through Monid: the whole post history in one call and the comments in pages of up to 100, each at $0.001 a call (Verified 2026-10-16), one key for Reddit and everything else, about a minute to set up and ready inside your agent whenever you need it. Scraping profiles yourself works until the page or the limits change, and costs hours of setup; Monid keeps the collection maintained.
Two things matter more than which endpoint you pick. Trim the response to the fields you need before the model sees it, because one account's posts came back as about 395,000 characters. And treat the comment preview, the missing subreddit and the missing profile row as limits of the feed, not of the person: join postInfo.id to the posts for context, and pick another route for karma and account age.
How we estimated the time saved: building and maintaining your own collectors for a profile's posts and for its paged comments is roughly 10 to 20 hours each, for getting past blocking, parsing, cursor handling and the first month of upkeep. That is 20 to 40 hours. The 1 minute is the install, key and first call once you already have a Monid key.
Free next step: run monid inspect -p tikhub -e /api/v1/reddit/app/fetch_user_comments, then pull five comments for one public account you know and print postInfo.title next to each. Start at monid.ai.
FAQ
Does Reddit have an API for user data?
Yes, Reddit runs its own API, which needs a registered app and credentials and comes with terms that restrict some uses. The quicker route for one-off and recurring pulls is Monid: the user-posts and user-comments endpoints cost $0.001 a call (Verified 2026-10-16), with no app to register, no monthly plan and no minimum top-up.
Why does a Reddit profile show no posts or comments?
The account may be private, suspended or new, or its owner may have hidden the history. An API call reads what Reddit shows an anonymous visitor, so a history that is hidden from the page is hidden from the call too. A profile that loads empty in a browser can also be a loading error, so reload before you conclude the history is gone.
Can you get deleted Reddit comments or posts?
No. A deleted comment simply does not appear in the feed, and nothing marks the gap, so a count you compute will be lower than the account's lifetime total. Post nodes carry flags such as isArchived, isLocked and removedByCategory, which describe a live post. To see content disappear, pull on a schedule and compare the runs.
Can you export a Reddit user's comments to a CSV?
Yes, once you have the rows as JSON. Page through the comments call until hasNextPage is false, keep id, createdAt, content.preview, score and postInfo.title, and write them out with whatever tool you like, or ask your agent to do it in the same prompt.
How much does a full Reddit user history cost?
For the account we tested, the posts were one call, $0.001 (Verified 2026-10-16). Comments are ceil(comments / page_size) calls at up to 100 a page, so a thousand comments is 10 calls and $0.01 (Verified 2026-10-16).
Published September 2026.


