RedditapisRedditapis
Listings & Search

Stream a Subreddit's Newest Comments

Stream the newest comments across an entire subreddit, not one post's thread. Poll it to catch comments as they are posted, with cursor pagination.

GET/api/reddit/sub/:name/comments$0.002 / call

The subreddit new-comment stream: the newest comments across an entire subreddit, not one post's thread. Same comment shape as GET /api/reddit/user/:name/comments.

When to use this

Poll it to catch every new comment in a community as it is posted, live moderation, keyword alerting, or building a real-time feed. Unlike /api/reddit/comments, which returns one post's thread, this spans the whole subreddit. Page backward through history with after.

Path Parameters

ParameterTypeRequiredDescription
namestringYesSubreddit name (no r/ prefix)

Query Parameters

ParameterTypeRequiredDescription
limitnumberNoNumber of comments 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/sub/programming/comments?limit=25"
const response = await fetch(
  "https://api.redditapis.com/api/reddit/sub/programming/comments?limit=25",
  { headers: { Authorization: "Bearer TOKEN" } }
);
const data = await response.json();
import requests

response = requests.get(
    "https://api.redditapis.com/api/reddit/sub/programming/comments",
    params={"limit": 25},
    headers={"Authorization": "Bearer TOKEN"},
)

Response Shape

{
  "comments": [
    {
      "id": "n1abc2d",
      "author": "someuser",
      "body": "This is the newest comment in the subreddit.",
      "subreddit": "programming",
      "upvotes": 12,
      "permalink": "/r/programming/comments/abc123/title/n1abc2d/",
      "url": "https://reddit.com/r/programming/comments/abc123/title/n1abc2d/",
      "post_id": "abc123",
      "link_title": "The post this comment is on",
      "link_url": "https://example.com/article",
      "created": "2026-05-22T10:29:25.000Z"
    }
  ],
  "after": "t1_n1abc2d"
}

Response Fields

FieldTypeNotes
idstringComment id (no prefix)
authorstringComment author (no u/ prefix)
bodystringThe comment text
subredditstringSubreddit the comment is in (no r/ prefix)
upvotesnumberNet vote count on the comment
permalinkstringThe comment's own path on reddit.com, e.g. /r/programming/comments/abc123/title/n1abc2d/. Same field a post row carries
urlstringFull reddit.com URL that deep-links to the comment (permalink with the host prefixed)
post_idstring | nullId of the parent post (no prefix), for joining against GET /post/:id or GET /post/:id/comments
link_titlestring | nullTitle of the parent post the comment is on
link_urlstring | nullURL of the parent post (external link for link posts)
createdstringISO-8601 timestamp of the comment
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 comment: 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.

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

On this page