Reddit User posts API
List a Reddit user's posts by username, sorted by new, top, hot, or controversial, with cursor pagination.
Provider network
Providers ranked by traffic
Try it
Make your first request
{
"data": {
"nextCursor": "example",
"posts": [
{
"author": "Alex Rivera",
"createdUtc": 12.5,
"id": "a1b2c3d4",
"isArchived": false,
"isLocked": true,
"media": [
{
"height": 42,
"type": "general",
"url": "https://example.com/page",
"videoUrl": "https://example.com/page",
"width": 1024
}
],
"numComments": 12500,
"permalink": "https://example.com/page",
"score": 5,
"selftext": "A short example description of this item.",
"subreddit": "example",
"title": "Example title",
"url": "https://example.com/page"
}
]
},
"found": true
}interface RedditUserPostsResponse {
data: {
nextCursor: string | null;
posts: {
author: string;
createdUtc: number;
id: string;
isArchived?: boolean;
isLocked?: boolean;
media?: {
height?: number;
type: string | null;
url: string;
videoUrl?: string;
width?: number;
}[];
numComments?: number;
permalink: string;
score?: number;
selftext?: string;
subreddit?: string;
title: string;
url?: string;
}[];
} | null;
found: boolean;
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Request, response, and price
Last verified 2026-09-16 · uptime and latency measured over 30dcurl -X POST https://api.getanyapi.com/v1/run/reddit.user_posts \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"username":"spez"}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| username | string | "spez"Reddit username without the leading u/ prefix (e.g. "spez"). |
| cursor | string | Opaque pagination cursor from a previous response's nextCursor. Omit for the first page; pass it back to fetch the next page. |
| requireFields | array | Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isArchived` or `isLocked`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. On a paginated walk it applies to the first page only; later pages stay with the source that page chose, at the price it was quoted. |
| sort | enum | Sort order for the user's posts. Defaults to new (most recent first). |
| Response | ||
| data | object | One page of the user's posts, or null when the user was not found. |
| data.nextCursorcan require | string | Opaque cursor for the next page of this user's posts; pass it back as the `cursor` input to fetch the following page. Null when there are no more pages. |
| data.posts | object[] | The user's posts in feed order. Posts hosted on the user's own profile (r/u_<name>) are included and carry an empty subreddit. Populated whenever the provider has data for the entity. |
| data.posts[].author | string | Author username, without the u/ prefix. Populated whenever the provider has data for the entity. |
| data.posts[].createdUtccan require | number | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. |
| data.posts[].id | string | Reddit post ID (base-36, without the t3_ prefix). Populated whenever the provider has data for the entity. |
| data.posts[].isArchivedcan require | boolean | True when Reddit has archived the thread, which blocks new comments and votes. Archiving is a per-community setting, so an old thread is not necessarily archived. Absent when the source that served this request does not report it, which means unknown rather than false. |
| data.posts[].isLockedcan require | boolean | True when a moderator has locked the thread, which blocks new comments. Absent when the source that served this request does not report it, which means unknown rather than false. |
| data.posts[].mediacan require | object[] | Photo, video, and GIF attachments on the post. Empty when the post has none. |
| data.posts[].media[].height | integer | |
| data.posts[].media[].type | string | One of photo, video, or gif, or null when the serving source wraps a thumbnail it cannot classify. |
| data.posts[].media[].url | string | Image URL. For a video or GIF this is the poster/thumbnail frame. |
| data.posts[].media[].videoUrl | string | Playable video file URL. Present only for video and gif items. |
| data.posts[].media[].width | integer | |
| data.posts[].numCommentscan require | integer | Total number of comments on the post. |
| data.posts[].permalink | string | Canonical reddit.com thread path for the post (e.g. "/r/golang/comments/abc123/..."). Differs from url, which is the destination link. Empty if the upstream omits it. Populated whenever the provider has data for the entity. |
| data.posts[].scorecan require | integer | Net score (upvotes minus downvotes) at fetch time. |
| data.posts[].selftextcan require | string | Body text of a self post, as Markdown. Empty on a link post, which has no body. |
| data.posts[].subreddit | string | Subreddit name, without the r/ prefix. Populated whenever the provider has data for the entity. |
| data.posts[].title | string | Post title. Populated whenever the provider has data for the entity. |
| data.posts[].url | string | The post's destination link (the external URL for link posts, or the thread URL for self posts). Populated whenever the provider has data for the entity. |
| found | boolean | Whether the user's post feed was returned. |
| Price | ||
| Price per request | USD | $0.00038 |
| Price /1k req | USD | $0.38 |
FAQ
About the Reddit User posts API
The AnyAPI Reddit User posts API returns Reddit user posts data as normalized JSON from one POST call to /v1/run/reddit.user_posts. List a Reddit user's posts by username, sorted by new, top, hot, or controversial, with cursor pagination. AnyAPI routes each request across 3 sources and falls back automatically when one fails. It costs from $0.38 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 100.0% of Reddit user posts calls through AnyAPI succeeded, with a median response time of 2.1 seconds across 6 measured calls.