Reddit User Posts API
List the posts a public account has submitted, newest first.
- 1 credit per call
- Failed calls are free
- Updated
- reddit.user.posts.list
{ "next": "t3_pfi3jl", "items": [ { "title": "Keeping your account safe on reddit", "body": "Hey Folks! We're here to remind everyone how to keep your accounts safe on reddit. Reddit will never ask you for your password or 2FA codes…", "author": "reddit", "created_utc": 1775250548, "id": "t3_1sbpwv9", "nsfw": false, "num_comments": 0, "num_comments_available": false, "permalink": "https://www.reddit.com/r/help/comments/1sbpwv9/keeping_your_account_safe_on_reddit/", "score": 0, "score_available": false, "subreddit": "help", "type": "post", "url": null }, { "title": "ACTION NEEDED: PLEASE READ", "body": "Hello mods of modlimit, hopefully by now you've seen this post. In short, we are removing dormant user accounts from mod lists in an effort…", "author": "reddit", "created_utc": 1749600291, "id": "t3_1l8ejw1", "nsfw": false, "num_comments": 0, "num_comments_available": false, "permalink": "https://www.reddit.com/r/modlimit/comments/1l8ejw1/action_needed_please_read/", "score": 0, "score_available": false, "subreddit": "modlimit", "type": "post", "url": null } ]}
| # | Title | Community | Posted (Unix time) | Link | Body | Author | Nsfw | Num comments | Num comments available | Score |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Keeping your account safe on reddit | help | 1,775,250,548 | https://www.reddit.com/r/help/comments/1sbpwv9/keeping_your_acc… | Hey Folks! We're here to remind everyone how to keep your accou… | false | 0 | false | 0 | |
| 2 | ACTION NEEDED: PLEASE READ | modlimit | 1,749,600,291 | https://www.reddit.com/r/modlimit/comments/1l8ejw1/action_neede… | Hello mods of modlimit, hopefully by now you've seen this post.… | false | 0 | false | 0 | |
| 3 | r/Holocaust is reopening | holocaust | 1,745,429,599 | https://www.reddit.com/r/holocaust/comments/1k65533/rholocaust_… | Hi everybody. Given that this subreddit name once belonged to a… | false | 0 | false | 0 | |
| 4 | Taking action on rule-violating content | RedditSafety | 1,738,643,207 | https://www.reddit.com/r/RedditSafety/comments/1ih9i5h/taking_a… | Over the last few days, we’ve seen an increase in content in se… | false | 0 | false | 0 | |
| 5 | Is this really from Reddit? How to tell: | ModSupport | 1,708,621,177 | https://www.reddit.com/r/ModSupport/comments/1axbf2i/is_this_re… | false | 0 | false | 0 | ||
| 6 | Is this really from Reddit? How to tell: | RedditSafety | 1,708,617,293 | https://www.reddit.com/r/RedditSafety/comments/1ax9r39/is_this_… | false | 0 | false | 0 | ||
| 7 | Is this really from Reddit? How to tell: | help | 1,708,562,032 | https://www.reddit.com/r/help/comments/1awsj1k/is_this_really_f… | Hey all! Today we wanted to take a moment to remind everyone ho… | false | 0 | false | 0 | |
| 8 | r/bigbrotheruk Lounge | bigbrotherukk_ | 1,697,047,817 | https://www.reddit.com/r/bigbrotherukk_/comments/175kqzs/rbigbr… | A place for members of r/bigbrotheruk to chat with each other | false | 0 | false | 0 | |
| 9 | r/EarningsWhispers Lounge | EarningsWhispers | 1,694,731,527 | https://www.reddit.com/r/EarningsWhispers/comments/16iwfu1/rear… | A place for members of r/EarningsWhispers to chat with each oth… | false | 0 | false | 0 | |
| 10 | r/CoinLedger Lounge | CoinLedger | 1,692,914,434 | https://www.reddit.com/r/CoinLedger/comments/160fnkz/rcoinledge… | A place for members of r/CoinLedger to chat with each other | false | 0 | false | 0 |
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| username | string | yes | Public Reddit username, prefixed name, or canonical Reddit user URL. | |
| after | string | no | ||
| limit | integer | no | Page size (default 50). From 1 to 100. Default: 50. |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| items[].title | string | The post's title. | Keeping your account safe on reddit |
| items[].subreddit | string | The community it was posted in. | help |
| items[].created_utc | integer | When it was posted, as a Unix time in seconds (UTC). | 1,775,250,548 |
| items[].permalink | string | The post's link on Reddit. | https://www.reddit.com/r/help/comments/1sbpwv9/keeping_your_acc… |
| items[].body | string | The post's text. | Hey Folks! We're here to remind everyone how to keep your accou… |
| items[].author | string | The username that posted it. | |
| items[].id | string | Reddit's ID for the post. | t3_1sbpwv9 |
| items[].nsfw | boolean | Whether Reddit marks it as adult content. | false |
| items[].num_comments | integer | Comments on the post, when Reddit shows the count. | 0 |
| items[].num_comments_available | boolean | Whether Reddit showed a comment count; when false, ignore num_comments. | false |
| items[].score | integer | The post's score, when Reddit shows it. | 0 |
| items[].score_available | boolean | Whether Reddit showed a score; when false, ignore score. | false |
| items[].type | string | What kind of item it is, here a post. | post |
| items[].url | null | The link the post shares, when it shares one. | null |
| items | array | The account's posts. | 50 records |
| next | string | Send this value back to get the next page. | t3_pfi3jl |
Call it from your code, or ask your agent
Set UPSCRAPE_API_KEY to your key and copy a working request.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "reddit.user.posts.list", "input": { "username": "reddit" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "reddit.user.posts.list", "input": { "username": "reddit" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "reddit.user.posts.list", "input": { "username": "reddit" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
Using Upscrape, list the latest posts from Reddit's official u/reddit account with their titles, communities and links.
More from the Reddit API
The same data from other platforms
Reddit User Posts API FAQ
The short answers. The docs have the long ones.
How much does the Reddit User Posts API cost?
1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.
What do I send?
Send username. The input fields below list every option with its type and limits.
Do I need a Reddit login?
No. It reads public Reddit data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds reddit.user.posts.list, checks its price and runs it with the same credits as the REST API.
Your first Reddit call is free.
Up to 100 free credits to start, no card needed.