GET/v1/comments

List comments by subreddit/author, or fetch specific comments by id. Same shape as /v1/posts, including a matching ids batch mode: pass ids (comma-separated, capped at 100) to fetch exact comments by id in one call — every other listing param is ignored in that mode, and the response has cursor: null, has_more: false. Either mode is 1 credit.

ParamTypeDefaultNotes
subredditstringOne of subreddit/author/ids is required.
authorstringReddit username, no u/.
idsstringComma-separated comment ids (max 100). When set, listing params below are ignored.
afterstringEpoch seconds or relative form (e.g. 7d).
beforestringSame accepted forms as after.
limitinteger251–100.
sortasc | descdescBy created_utc.
fieldsstringRestricted allowlist, not the full Reddit schema — many real fields (permalink, ups, controversiality...) are rejected with a 400 naming the bad field. Safe set: id,body,author,created_utc,subreddit,link_id,parent_id,score. Omit if unsure.
qstringClient-side exact-phrase filter over body. See the pagination guide.
curl
curl "https://api.threadsnoop.com/v1/comments?author=some_founder&limit=2" \
  -H "x-api-key: ts_live_YOUR_KEY"
JavaScript (fetch)
const res = await fetch(
  "https://api.threadsnoop.com/v1/comments?author=some_founder&limit=2",
  { headers: { "x-api-key": "ts_live_YOUR_KEY" } },
);
const data = await res.json();
console.log(data.data, data._threadsnoop);
TypeScript (fetch)
type Comment = {
  id: string;
  body: string;
  author: string;
  created_utc: number;
  subreddit: string;
  link_id: string;
  parent_id: string;
  permalink: string;
};
type CommentsResponse = {
  data: Comment[];
  _threadsnoop: { cursor: number | null; has_more: boolean; credits_used: number; credits_remaining: number };
};

const res = await fetch(
  "https://api.threadsnoop.com/v1/comments?author=some_founder&limit=2",
  { headers: { "x-api-key": "ts_live_YOUR_KEY" } },
);
const data: CommentsResponse = await res.json();
console.log(data.data, data._threadsnoop);
python (requests)
import requests

r = requests.get(
    "https://api.threadsnoop.com/v1/comments",
    headers={"x-api-key": "ts_live_YOUR_KEY"},
    params={"author": "some_founder", "limit": 2},
)
data = r.json()
print(data["data"], data["_threadsnoop"])
response (truncated)
{
  "data": [
    {
      "id": "kxyzabc",
      "body": "I've been looking for exactly this",
      "author": "some_founder",
      "created_utc": 1753001200,
      "subreddit": "startups",
      "link_id": "t3_1abcxyz",
      "parent_id": "t3_1abcxyz",
      "permalink": "/r/startups/comments/1abcxyz/anyone_know_a_tool_that_watches_reddit_for_me/kxyzabc/"
    }
  ],
  "_threadsnoop": {
    "cursor": 1753001200,
    "has_more": true,
    "credits_used": 1,
    "credits_remaining": 331
  }
}

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