Reddit Comment Scraper

Extract full Reddit comment threads (every reply, its author, score, timestamp, and position in the thread) as one consistent JSON schema, or a user's comments across every post they've replied to.

What you're collecting

Reddit comments carry more structure than a flat list of text: who wrote each reply, how it scored, when it was posted, and which comment (or the post itself) it replied to. A comment scraper that drops that nesting turns a discussion into an unordered pile of sentences; most analysis (sentiment over a thread, tracking a specific reply chain, ranking by score) needs the structure intact.

How UGC Scraper handles it

POST /v1/scrape with a post URL returns the post plus its full comment list. Each comment carries id and parent_id (a t3_ prefix means it replies to the post directly, a t1_ prefix means it replies to another comment), so you can reconstruct the reply tree client-side from a flat array, no recursive pagination required on your end.

cURL

curl -X POST https://api.ugcscraper.com/v1/scrape \
  -H "Authorization: Bearer rps_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.reddit.com/r/.../comments/..."}'

Python

import requests

r = requests.post(
    "https://api.ugcscraper.com/v1/scrape",
    headers={"Authorization": "Bearer rps_live_your_key"},
    json={"url": "https://www.reddit.com/r/.../comments/..."},
)
post = r.json()
for c in post["comments"]:
    print(c["author"], c["score"], c["body"][:80])

Node.js

const res = await fetch("https://api.ugcscraper.com/v1/scrape", {
  method: "POST",
  headers: {
    Authorization: "Bearer rps_live_your_key",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://www.reddit.com/r/.../comments/..." }),
});
const post = await res.json();
for (const c of post.comments) {
  console.log(c.author, c.score, c.body.slice(0, 80));
}

One user's comments, across posts

To pull what one account has said, not one thread, POST /v1/user/comments returns that user's own comments, each paired with the title and body of the post it was posted on. It supports an after/before Unix-timestamp cursor for paging through a large comment history.

curl -X POST https://api.ugcscraper.com/v1/user/comments \
  -H "Authorization: Bearer rps_live_your_key" -H "Content-Type: application/json" \
  -d '{"target":"some_username","limit":25}'

Output structure

{
  "author": "string",
  "body": "string",
  "score": 120,
  "id": "t1_abc123",
  "parent_id": "t3_xyz789",
  "link_id": "t3_xyz789",
  "permalink": "https://www.reddit.com/...",
  "created_at": "2026-03-16 13:44:50.000+00"
}

Practical use cases

  • Sentiment and text analysis: bulk comment bodies with score and timestamp, ready for a linguistics or NLP pipeline without a separate parsing step.
  • LLM context and RAG: feed a thread's comments into a model to summarize what people actually said, with the reply structure preserved.
  • Monitoring one account: track what a specific user posts across subreddits over time via /v1/user/comments.

Limitations

Very large threads (many thousands of comments) may take longer to return in full than a small one. If the exact count isn't available, the response marks num_comments_estimated: true rather than presenting a guess as an exact number.

A standard scrape returns the thread as of its most recent capture, so a comment posted in the last few hours may not be there yet. Add "fresh": true to get every comment as Reddit shows it right now, with current upvotes, in 5 to 30 seconds and for the same credit.

Reddit comment scraper FAQ

Do I get the full comment thread, or just top-level comments?

The full thread. Every comment returned includes its parent_id and link_id, so you can rebuild the complete reply tree, not just the first level.

Can I get a user's own comments across many posts?

Yes. POST /v1/user/comments returns a user's comments paired with the title and body of the post each one was posted on, with a Unix-timestamp cursor (after/before) for paging through a large history.

Is the comment count always exact?

When the exact count isn't available, the response flags num_comments_estimated so you know it's a lower bound rather than presenting an estimate as exact.

Can I export comments to a spreadsheet?

Yes. Your stored scrape history exports as CSV with one row per comment (or one row per post), via ?format=csv on the history endpoints.

Related guides

Start pulling comment threads

Free tier, no credit card, live in about two minutes.

Get your API key