RedditapisRedditapis
Posts

Get a Reddit Post and Its Comment Tree by Post ID

Fetch a Reddit post together with its full comment tree using only the post id. No permalink to build, same response shape and same price as the permalink form.

GET/api/reddit/post/{id}/comments$0.002 / call

The post and its comment tree in one call, keyed by post id.

Reach for this when you have a post id and not a permalink. /api/reddit/post/{id} makes the same upstream call but discards the comment listing that comes back with it; this route keeps it. If you already hold the permalink, /api/reddit/comments is the same price and returns the same thing.

Three URL shapes return the same response

All three of these are live, and all three give you the identical payload at the identical price. Pick whichever matches the identifier you already have.

URL shapeUse when
GET /api/reddit/comments?permalink=/r/{sub}/comments/{postId}/You have the permalink
GET /api/reddit/post/{postId}/commentsYou have the post id
GET /api/reddit/comments/{postId}You have the post id

The last two run the same handler, so they are interchangeable, not merely similar. Use the one that fits your URL structure. The permalink form is unchanged and existing integrations need no edits.

Path Parameters

ParameterTypeRequiredDescription
idstringYesReddit post id (e.g. 1uv6ns4)

The id is letters and digits only, 1 to 16 characters, with no t3_ prefix. Uppercase is fine and gets lowercased for you, so an id copy-pasted from a URL bar works. A t3_-prefixed fullname does not: the underscore fails validation and returns a 400.

Example

curl -H "Authorization: Bearer $TOKEN" \
  "https://api.redditapis.com/api/reddit/post/1uv6ns4/comments"
const response = await fetch(
  "https://api.redditapis.com/api/reddit/post/1uv6ns4/comments",
  { headers: { Authorization: "Bearer TOKEN" } }
);
import requests

response = requests.get(
    "https://api.redditapis.com/api/reddit/post/1uv6ns4/comments",
    headers={"Authorization": "Bearer TOKEN"},
)

Response Shape

{
  "post": { "...": "same post shape as /api/reddit/post/{id}" },
  "comments": [
    {
      "kind": "t1",
      "data": { "id": "ox8s0jv", "body": "...", "author": "beagle-ears", "replies": "" }
    },
    {
      "kind": "more",
      "data": { "count": 273, "children": ["ox8s1r9", "ox8tc3z"] }
    }
  ],
  "after": null
}

post follows the posts field shape. comments is Reddit's native tree, passed through without reshaping.

Reading the comment tree

Three things about comments catch people out, so they are worth stating plainly.

Not every node is a comment. A node with kind: "t1" is a comment. A node with kind: "more" is a stub standing in for comments Reddit did not send, and its data carries a count plus a children array of comment ids. Filter on kind === "t1" before you touch data.body, or the more node will read as a comment with no body.

replies is two different types. On a t1 node, data.replies is either an empty string "" when the comment has no replies, or a nested Listing object when it does. Check the type before recursing. On one real thread we measured, 13 of 27 top-level comments carried "" and 14 carried an object.

You get at most 100 comments per call. The upstream read is capped at 100, counting nested replies. On a post with 542 comments, one call returned 27 top-level comments plus 73 nested replies, exactly 100, and a single more node reporting the other 273 with 249 ids listed in children.

after is present for shape-compatibility with the other listing endpoints, but Reddit does not paginate comment listings, so it comes back null. To reach the comments behind a more node, take the ids from its children array and fetch them with /api/reddit/comment/{id}, or check many at once with batch verify.

Errors

StatusMeaning
400id is not a valid Reddit id (letters and digits, 1-16 characters, no prefix)
401Missing Bearer token
403Invalid Bearer token
404No post resolves to that id
500Unexpected server error

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

On this page