RedditapisRedditapis
Listings & Search

Read Your Own Reddit Home Feed Over HTTP

Fetch your own Reddit front page over HTTP with your session cookies. Six sorts, cursor pagination, and the same post shape as every other listing.

GET/api/reddit/feed$0.0015 / call

Your own Reddit front page, read with your session.

Every other read on this API is served from our pool of logged-in accounts, which is why they need no cookies from you. That also means the home feed has never been answerable: our accounts' feed is not yours. This endpoint sends your session instead, so what comes back is the feed your subscriptions actually produce.

Your session is required here

Unlike every other read, this one refuses an anonymous call with a 400 and code: "SESSION_REQUIRED".

Reddit will happily serve a default front page to a logged-out request. That is not a thinner version of your feed, it is a different feed belonging to nobody, and returning it would look like success while answering a question you did not ask. For a public subreddit listing use Subreddit Posts.

Get the cookie values from POST /api/reddit/login and send them as headers, exactly as described in Authenticated reads.

Headers

HeaderRequiredDescription
x-reddit-sessionYesYour reddit_session cookie
x-reddit-loidYesYour loid cookie
x-reddit-token-v2, x-reddit-csrf-token, x-reddit-edgebucket, x-reddit-csv, x-reddit-session-tracker, x-reddit-pcNoForwarded unchanged when present
x-reddit-proxyNoRead through your own proxy, so the request reaches Reddit from the IP this account normally acts from. See Proxies.

Query Parameters

ParameterTypeRequiredDescription
sortstringNobest (default) | hot | new | top | rising | controversial
tstringNoTimeframe for sort=top/controversial: hour | day | week | month | year | all. Ignored for the other sorts, since a window does nothing to a reverse-chronological feed.
limitnumberNoPosts to return, 1-100 (default 25)
afterstringNoPagination cursor. Same contract as every other listing, see Pagination depth.

best is Reddit's own default for a logged-in home page, which is why it is the default here.

Paging past Reddit's cap

Reddit closes a single listing near 1000 items and then stops issuing a cursor, so listing_status: truncated is Reddit's limit rather than the end of the data. Every distinct combination of parameters you send is a separate listing with its own budget, so widen across listings rather than paging deeper into one.

What you can vary here:

  • sort takes best, hot, new, top, rising, controversial, each with its own cursor.
  • t takes hour, day, week, month, year, all. We forward it only on sort=top and sort=controversial and drop it on the other sorts, so sort=new&t=week and sort=new&t=all are the same request.

How far these actually widen has not been measured on this endpoint. On /api/reddit/posts two sorts ranged from 0 to 99 shared items out of 100 depending on how busy the subreddit was, so read a page of each before assuming a second sort doubles your coverage.

Example

curl "https://api.redditapis.com/api/reddit/feed?sort=best&limit=25" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-reddit-session: YOUR_REDDIT_SESSION" \
  -H "x-reddit-loid: YOUR_LOID"

Response

The posts array and the pagination fields are identical to Subreddit Posts. Nothing about the post shape changes because the read was authenticated; only which posts you can see does.

{
  "posts": [
    {
      "id": "1tkez6e",
      "name": "t3_1tkez6e",
      "title": "...",
      "author": "user123",
      "subreddit": "ClaudeCode",
      "permalink": "/r/ClaudeCode/comments/1tkez6e/...",
      "upvotes": 42,
      "comments": 12,
      "created_utc": 1779445765,
      "created": "2026-05-22T10:29:25.000Z"
    }
  ],
  "after": "t3_xyz",
  "before": null
}

Errors

StatuscodeMeaning
400SESSION_REQUIREDNo session headers were sent. There is no account whose feed this would be.
400INCOMPLETE_SESSIONOne of x-reddit-session / x-reddit-loid was sent without the other.
400INVALID_PROXYThe x-reddit-proxy address could not be parsed.
400(none)sort or t was not one of the listed values.
401REAUTH_REQUIREDReddit rejected the session. Log in again and resend the cookies.
403PERMISSION_DENIEDReddit refused the account (suspended, or otherwise not allowed to read).
429HTTP_429Reddit rate-limited your account. Retry-After says how long to wait.
429rate_limitedYour key went over its pace (a burst of about 20 calls, then about 10 a second) and this read would have waited more than 10 seconds. Not billed; retry after Retry-After. See rate limits.
429too_many_concurrent_readsMore reads in flight on your key than the limit in the message (currently four) while the service is degraded. Not billed; stay under it and retry after Retry-After.
502PROXY_ERROR and othersThe proxy you sent could not complete the read.
503upstream_unavailableThe read could not be completed right now. Retryable and not billed.

A dead session is always one of these statuses, never a 200 with an empty list. That distinction is the point: an empty feed and an expired cookie are different answers and a caller cannot tell them apart if they look the same.

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

On this page