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.