RedditapisRedditapis
Users

Get a Reddit User's Saved Posts and Comments

Fetch the posts and comments a Reddit account has saved. Private data, requires that account's own session cookies from POST /api/reddit/login.

GET/api/reddit/user/:name/saved$0.002 / call

The posts and comments a Reddit account has saved. This is private data, Reddit only serves it to the account that owns it, so the request must carry that account's own session cookies (from POST /api/reddit/login) and :name must match the logged-in account. Querying it as any other account, or with no cookies, returns 403.

When to use this

Reach for this when you need to read back a Redditor's saved-for-later list, a bookmark sync tool, a personal research archive, or a workflow that acts on whatever the account has saved. It cannot be used to see another Redditor's saved items: Reddit never exposes that to anyone, including this API.

Mixed listing: posts AND comments

A Redditor can save either a post or a comment, so the response is one ordered items array (the exact order Reddit itself returns, which the after cursor tracks) with each item tagged kind: "post" or kind: "comment". A post item has the same shape as /api/reddit/posts; a comment item has the same shape as /api/reddit/user/:name/comments.

Path Parameters

ParameterTypeRequiredDescription
namestringYesReddit username (no u/ prefix). Must match the account the cookies belong to.

Query Parameters

ParameterTypeRequiredDescription
reddit_sessionstringYesSession cookie from /api/reddit/login
loidstringYesLong-lived account identifier cookie
csrf_tokenstringNoAnti-CSRF cookie, not required for a read, harmless if included
sortstringNonew (default) | top | hot | controversial
tstringNoTimeframe for sort=top/controversial: hour | day | week | month | year | all
limitnumberNoNumber of items to return, 1-100 (default 25)
afterstringNoPagination cursor. Pass back the after value from the previous response exactly as issued; it is opaque and carries your paging depth. See Pagination depth.

Example

curl -H "Authorization: Bearer $TOKEN" \
  "https://api.redditapis.com/api/reddit/user/spez/saved?reddit_session=eyJhbGc...&loid=000000..."
const params = new URLSearchParams({ reddit_session: "eyJhbGc...", loid: "000000..." });
const response = await fetch(
  `https://api.redditapis.com/api/reddit/user/spez/saved?${params}`,
  { headers: { Authorization: "Bearer TOKEN" } }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.redditapis.com/api/reddit/user/spez/saved",
    params={"reddit_session": "eyJhbGc...", "loid": "000000..."},
    headers={"Authorization": "Bearer TOKEN"},
)

Response Shape

{
  "items": [
    {
      "kind": "post",
      "id": "1tkez6e",
      "name": "t3_1tkez6e",
      "title": "...",
      "author": "spez",
      "permalink": "/r/announcements/comments/1tkez6e/...",
      "url": "https://reddit.com/r/announcements/comments/1tkez6e/...",
      "upvotes": 4210,
      "comments": 1200,
      "created": "2026-05-22T10:29:25.000Z"
    },
    {
      "kind": "comment",
      "id": "n1abc2d",
      "author": "spez",
      "body": "...",
      "subreddit": "announcements",
      "upvotes": 88,
      "permalink": "/r/announcements/comments/xyz/_/n1abc2d/",
      "url": "https://reddit.com/r/announcements/comments/xyz/_/n1abc2d/",
      "post_id": "xyz",
      "link_title": "...",
      "link_url": "https://reddit.com/r/announcements/comments/xyz/",
      "created": "2026-05-22T09:10:02.000Z"
    }
  ],
  "after": "t1_n1abc2d"
}

Response Fields

FieldTypeNotes
items[].kindstring"post" or "comment", tells you which shape the rest of the item follows
items[] (post)objectSame fields as /api/reddit/posts
items[] (comment)objectSame fields as /api/reddit/user/:name/comments
afterstring | nullCursor for the next page, or null when there is no next page to request. An empty cursor does not always mean you have every item, so read listing_status (below) to find out which. See Pagination depth.

When after comes back empty

An empty cursor means there is no next page to ask for. It does not always mean you have every item: Reddit often stops serving a busy listing long before it runs out. Paging r/all on 2026-08-14 stopped after 400 posts covering about a minute of a feed that plainly holds more.

The response tells you which happened. When after is null it also carries listing_status, which reads complete, truncated or unknown. Only complete means you have everything; treat the other two as a partial answer and widen your search rather than stopping. The full field list and what to do about each answer is in Pagination depth.

Errors

StatusMeaning
400Missing reddit_session/loid, an invalid sort/t/limit, or an invalid username shape
401Missing Bearer token, or the Reddit session cookies are stale (re-run /api/reddit/login)
403name does not match the account the cookies belong to, the account is suspended, or the listing is otherwise not visible to it
404The user does not exist
502Could not complete the upstream request (retried and exhausted)

Independent third-party API for developers and researchers. Not affiliated with, endorsed by, or sponsored by Reddit, Inc.

On this page