Reddit Post Scraper & API: Posts from Links · Apify
Reddit Post Scraper & API: Posts from Links, with Comments avatar

Reddit Post Scraper & API: Posts from Links, with Comments

Pricing

from $2.20 / 1,000 posts

Go to Apify Store
Reddit Post Scraper & API: Posts from Links, with Comments

Reddit Post Scraper & API: Posts from Links, with Comments

Reddit posts from their links: title, text, score, upvote ratio, comments count, author, flair, media, date and edited or removed status, with the full comment tree if you want it. Refresh the score and comment count of posts you already know by link or ID.

Pricing

from $2.20 / 1,000 posts

Rating

0.0

(0)

Developer

Quarra Labs

Quarra Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

Reddit Post Scraper: Posts from Links, with or without Comments

Paste Reddit post links and get each post: title, text, score, upvote ratio, comments count, author, flair, media, domain, date, and whether it was edited or removed. Add the comment tree when you need it, or re-read posts you already know by link or ID to follow their score and comment count over time. No login, no cookies, no API key. Export as JSON, CSV or Excel, or read it through the Apify API.

  • Any kind of post link: reddit.com and old.reddit.com links, redd.it short links, share links, gallery and v.redd.it video links, or a comment permalink.
  • The post alone by default, so a run costs the posts and nothing else. Set Max comments per post to get the comments too (empty = the complete thread, even with tens of thousands of comments).
  • Posts to refresh: give links or bare IDs (1abc234) and get the current score, comment count, flair, and edited or removed status of each, up to 100 posts per request. Schedule it to build a time series of a post's growth.
  • Growth metrics already computed: scorePerHour, commentsPerHour, engagementTotal and the post's age in hours.
  • Only new items on a schedule: turn on Only new since the last run and each run returns and charges only what earlier runs did not return.
  • Optional AI analysis of each post and comment (sentiment, intent, entities, summary, your own labels).

$2.50 per 1,000 posts, $2.50 per 1,000 comments, less on paid plans, plus $0.005 per run. Links that fail, duplicates and posts already returned to a watch are not charged.

Quick start

  1. Paste the post links into Post URLs, one per line, and/or post IDs into Posts to refresh.
  2. Leave Max comments per post at 0 for the posts alone, or raise it (or empty it) to get the comments.
  3. Click Start and read the results in the run's Output tab.

Through the API:

{
"startUrls": ["https://www.reddit.com/r/IAmA/comments/z1c9z/", "https://redd.it/1ww9g6j"],
"maxCommentsPerPost": 0
}

Follow the score of posts you already track, every hour (schedule it in Apify Console):

{ "refreshPosts": ["1wu4lnz", "1ww9g6j", "https://redd.it/1abc234"] }

Like any Apify Actor, it can be scheduled, connected to webhooks, Make, Zapier, n8n, or called by AI agents through Apify's MCP server.

Output

One record per post, and one per comment when you ask for them. A real post read by its ID (October 21, 2026, author replaced, some fields left out):

{
"type": "post",
"id": "1ww9g6j",
"url": "https://www.reddit.com/r/technology/comments/1ww9g6j/apple_confirms_iphone_18_pro_max_att_cellular/",
"subreddit": "technology",
"title": "Apple confirms iPhone 18 Pro Max AT&T cellular issues, affected devices require hardware replacement",
"body": "",
"author": "example_user",
"flair": "Networking/Telecom",
"createdAt": "2026-10-03T00:18:40Z",
"score": 1274,
"upvoteRatio": 0.98,
"numComments": 137,
"numCrossposts": 1,
"ageHours": 449.02,
"scorePerHour": 2.84,
"commentsPerHour": 0.31,
"mediaType": "link",
"domain": "9to5mac.com",
"isEdited": false,
"isDeletedOrRemoved": false,
"scrapedAt": "2026-10-21T17:19:58Z"
}
FieldWhat it holds
title, body, flairthe post as written, and its flair
score, upvoteRatio, numComments, numCrosspoststhe counters Reddit shows
scorePerHour, commentsPerHour, engagementTotalhow fast the post grew since it went up
mediaType, imageUrls, videoUrl, link, domain, mediatext, image, gallery, video or link, and the media links
stickied, locked, archived, over18, isEdited, isDeletedOrRemovedthe post's state

With comments, each comment has parentId and depth so the tree can be rebuilt, or choose the Markdown output: one record per thread, about 7 times fewer characters than the same thread as JSON, for LLMs. Field names stay the same between runs: a value Reddit does not provide is null, not missing. The run summary (what was found, what failed and why) is the OUTPUT record of the run's key-value store.

AI analysis (optional)

Turn on AI analysis and every post and comment gets an aiAnalysis object next to its own fields: language, sentiment and score, emotion, intent, category, topics, named brands, products and people, a one-sentence English summary, the pain point and business signals, plus up to 5 yes/no labels of your own. $0.50 per 1,000 analyzed records on every plan, every field included. Deleted, removed, bot (AutoModerator) and empty records are not analyzed and not charged. It adds time: expect one to five minutes per 100 records (2 posts took 12 seconds with it, start included).

Inputs

  • Post URLs: one per line. Posts to refresh: links or IDs, no comments.
  • Max comments per post (0 = the post only, empty = every comment), Max comment depth, Comment sort.
  • Max results in total.
  • AI analysis and Your own labels.
  • Output format: one record per item, or each thread as one Markdown record.
  • Only new since the last run and Watch name, for scheduled runs.

Pricing

Pay per event:

Apify planPostsComments
Free$2.50 / 1,000$2.50 / 1,000
Starter$2.40 / 1,000$2.40 / 1,000
Scale$2.30 / 1,000$2.30 / 1,000
Business and above$2.20 / 1,000$2.20 / 1,000

AI analysis (optional): $0.50 / 1,000 analyzed records on every plan.

Plus the start: $0.005 per GB of run memory. Not charged: links that fail, error records, duplicates, posts already returned to a watch. Set Maximum cost per run in the run options and the run stops before going over it.

Run it in production

To follow the score and comment count of posts you already know, keep their IDs in one saved input and let Apify run it on a schedule.

  1. In Apify Console open Schedules and create a schedule with a cron time (0 6 * * * is every day at 06:00 UTC).
  2. Add this Actor with the post IDs or links in Posts to refresh. Every run delivers one record per post with its current score, numComments, scorePerHour and commentsPerHour.
  3. Keep every run's dataset, or send it to a sheet or a database, and join the runs on the post id and scrapedAt to draw the growth of each post.
  4. Every post delivered is charged, so the rhythm sets the cost. A post that grows for days needs one run a day; one that is being pushed right now may need one every few hours.

What it costs per month (Free plan prices; Business prices in brackets), for 100 posts refreshed in each run:

ScheduleCost per month
Weekly (4 runs)$1.02 ($0.90)
Daily (30 runs)$7.65 ($6.75)
Every 6 hours (120 runs)$30.60 ($27.00)

Each run is 100 posts at $0.0025 plus the $0.005 start. Put all the posts you follow in one run: the start is charged once. Set Maximum cost per run so that a run never goes over what you planned.

Call it from code. Start a run and wait for the results in one request (this call waits up to 300 seconds, so use it for small jobs):

curl -X POST "https://api.apify.com/v2/acts/quarra~reddit-post-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"refreshPosts": ["1wu4lnz", "1ww9g6j"]}'

For bigger jobs, start the run, wait for it to end, then read its dataset:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("quarra/reddit-post-scraper").call(run_input={"refreshPosts": ["1wu4lnz", "1ww9g6j"]})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())

Connect it. Add a webhook on the event ACTOR.RUN.SUCCEEDED (Console, Integrations tab) to be called when a run ends, then read the dataset of that run. Make, Zapier and n8n have Apify modules: run the Actor, get the dataset items, then send each one to Slack, Google Sheets, Airtable or your CRM. AI agents can call the Actor through Apify's MCP server.

Send results to Slack, Notion or Discord

Pick one of your Apify MCP connectors in "Send results to your app" (Notion connects in one click), or paste a Slack, Discord, Make, Zapier or n8n webhook URL. After each successful run, a summary lands there: the number of results, the first 25 with their links, and a link to the full dataset. Schedule the Actor with "Only new since the last run (monitoring)" turned on and new results reach your team every day without opening Apify.

Limits

  • One link per post. To list the posts of a subreddit, a search or a user, use the Reddit Subreddit Scraper, Reddit Search Scraper or Reddit User Scraper.
  • A link or ID that cannot be read (unknown, deleted, not a post) comes back as an error record that says why, and costs nothing; the other links of the run are not affected.

FAQ

Why did I get zero posts? A link or ID that cannot be read (unknown, deleted, not a post) comes back as a free error record that says why, and the other links of the run are not affected. If every post of a refresh is gone, the run says so. With Only new, a post already returned under the same Watch name is not returned or charged again. A run with no result costs the start only.

How fast is it? On October 21, 2026 on Apify, start included: three IDs to refresh (two found, one unknown) in 4.8 seconds, a post with 5 comments in 4 seconds, two posts with AI analysis in 12 seconds.

Do I need a Reddit account or API key? No account, no cookies, no API key. Platform costs are included in the price.

Is it legal? It collects public posts any logged-out visitor can see. Reddit's terms and privacy law (GDPR in the EU) apply to how you use the data.

Does the Actor send anything to Quarra? Only when a run fails or runs out of time: the Actor, its build, the error type, the line of our code where it happened, and the memory and time the run was given, so we can fix it fast. Never your input, your results, your account or the run ID.