GET/v1/comments/tree

Full nested comment tree for a post, with a real comment count. 1 credit per call. One call returns the whole tree, so there's no pagination — cursor/has_more are always null/false. Fresh posts (under ~36 hours old) can briefly report a score of 1 and 0 comments on GET /v1/posts — use this endpoint for live comment counts instead.

An invalid or malformed post_id comes back as a 400 (credit refunded, see Errors) — retrying with the same bad id won't help.

ParamTypeDefaultNotes
post_id *stringWith or without the t3_ prefix.
limitinteger501–500.
curl
curl "https://api.threadsnoop.com/v1/comments/tree?post_id=1abcxyz&limit=50" \
  -H "x-api-key: ts_live_YOUR_KEY"
JavaScript (fetch)
const res = await fetch(
  "https://api.threadsnoop.com/v1/comments/tree?post_id=1abcxyz&limit=50",
  { headers: { "x-api-key": "ts_live_YOUR_KEY" } },
);
const data = await res.json();
console.log(data.data);
TypeScript (fetch)
type CommentNode = {
  kind: "t1";
  data: { id: string; body: string; author: string; created_utc: number; score: number };
  replies: CommentNode[];
};
type CommentTreeResponse = {
  data: CommentNode[];
  _threadsnoop: { cursor: null; has_more: false; credits_used: number; credits_remaining: number };
};

const res = await fetch(
  "https://api.threadsnoop.com/v1/comments/tree?post_id=1abcxyz&limit=50",
  { headers: { "x-api-key": "ts_live_YOUR_KEY" } },
);
const data: CommentTreeResponse = await res.json();
console.log(data.data);
python (requests)
import requests

r = requests.get(
    "https://api.threadsnoop.com/v1/comments/tree",
    headers={"x-api-key": "ts_live_YOUR_KEY"},
    params={"post_id": "1abcxyz", "limit": 50},
)
data = r.json()
print(data["data"])
response (truncated)
{
  "data": [
    {
      "kind": "t1",
      "data": {
        "id": "kxyzabc",
        "body": "I've been looking for exactly this",
        "author": "some_founder",
        "created_utc": 1753001200,
        "score": 3
      },
      "replies": []
    }
  ],
  "_threadsnoop": {
    "cursor": null,
    "has_more": false,
    "credits_used": 1,
    "credits_remaining": 330
  }
}

See also: GET /v1/comments, GET /v1/posts.