Social media · Live on Apify

Reddit Scraper: Posts, Comments and Subreddits

Get public Reddit posts and comments as clean rows. Use subreddits, search, post links or user names. No login and no Reddit API key.

About $1.52 for 1,000 results$0.0015 per result + $0.02 per run. Apify bills you, not us.One result in a run of its own: about $0.02.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

typepost
postIdt3_1x64f49
subredditapify

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: apify in Subreddits. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Scrape public Reddit posts and comments from subreddits, Reddit search, post URLs and user profiles. You get one row per post or comment with its real score, comment count, clean text, author, links and thread IDs. No login and no Reddit API key.

  • subreddit — posts from one or more subreddits (new, hot, top or rising);
  • search — posts that match keywords, across all public subreddits;
  • post — single posts by URL or ID, usually with their comments;
  • user — posts submitted by a user.

Good for

  • Watch what people say about a brand, product or topic in a subreddit or in search.
  • Collect posts and comment threads for market research or a text dataset (AI, RAG, sentiment).
  • Export the posts of known users or a list of posts to a spreadsheet.

Not a good fit

  • Only public content. No login, no private, banned or quarantined subreddits, no private messages.
  • In user mode only the user's posts are collected, not their comments.
  • Reddit itself shows at most about 1,000 posts per listing or search, so one target returns up to about 970–995 posts.
  • This is not the official Reddit API. Reddit can change its pages; the Actor reports missing text or score in the run summary when that happens.

Who uses it

Market researchers

Learn what people really say about a product or topic.

AI and data teams

Build text datasets with full comment threads.

Brand managers

Watch a subreddit or a keyword on a schedule.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.02Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Reddit post$0.0015 (from $0.00125 on paid Apify plans)One saved Reddit post with score, comment count, text, subreddit, URL and fetch time.
Reddit comment$0.0008 (from $0.00065 on paid Apify plans)One saved Reddit comment with author, score, text, parent ID and depth.

Examples

  • One result: about $0.02.
  • 1,000 results: about $1.52.
  • Every day 100 results, for 30 days: about $5.10 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 3,200 results.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Do I need Reddit API access?

No. The tool reads public pages without login, cookies or an API key.

How many posts can I get from a subreddit?

Reddit shows about 1,000 posts per listing or search.

Does user mode get comments too?

No. User mode collects the user's posts only.

Do I need a Reddit account or API key?

No. The Actor reads public pages without login, cookies or an API key.

Why are upvoteRatio and postType empty in search?

Reddit does not show them on search results and single post pages. They are filled in subreddit and user modes.

Is the data fresh?

Yes. Each row is read at run time; fetchedAt shows when. Scores and comment counts change on Reddit after that.

How does it read Reddit, and is it allowed?

The Actor reads only pages that anyone can open without an account. It uses a browser-like HTTP client and Apify residential proxies. It does not log in, does not use your cookies and does not solve CAPTCHAs or browser challenges; if Reddit asks for a login or shows a challenge, that target gets an error row.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep Mode = Posts from subreddits and type a subreddit in Subreddits, for example apify.
  3. Keep Max posts per target = 10 and Max comments per post = 0 (the prefill).
  4. Click Start.
  5. Open the Output tab and check title, score and numComments of the first rows.
Use cases
TaskInputYou getKey fieldsNext step
Brand or topic monitoringmode: search, searchQueries, sort: newposttitle, text, subreddit, score, createdAtschedule the run, export CSV
Community researchmode: subreddit, subreddits, sort: top, timeFilter: monthpost + commentscore, numComments, text, parentIdspreadsheet or BI tool
Discussion analysismode: post, postUrls, maxCommentsPerPostpost + commenttext, depth, parentId, scoresentiment or AI pipeline
Author researchmode: user, usernamespostsubreddit, title, score, createdAtspreadsheet
Tips for better results
  • Use top with a time range to find the best posts of a month.
  • Use parent IDs to rebuild comment threads.
  • Set a maximum cost per run in the run options.
Limits and good to know
  • status rows (not_found, no_results, error) are free
  • The start event is charged once per run up to 1 GB of memory. The Actor picks 256–1024 MB itself; if you set 2048 MB, the start is charged twice
  • Set Maximum cost per run in run options to cap spending. When the cap is reached, the run stops, keeps the saved rows and ends as SUCCEEDED with partial in RUN_SUMMARY
  • Up to 50 subreddits, queries, posts or users per run; up to 1,000 posts per target and 500 comments per post
  • Reddit shows at most about 1,000 posts per listing or search (970–995 in our tests); the run summary warns when it lists fewer than maxPosts
  • Large searches can take several minutes. The default run timeout is 1 hour; the Actor stops 20 seconds before the timeout and keeps all saved rows

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "type": "post",
  "id": "t3_1x64f49",
  "postId": "t3_1x64f49",
  "parentId": null,
  "depth": null,
  "subreddit": "apify",
  "title": "Weekly: job board",
  "text": "Are you expanding your team or looking to hire a freelancer for a project? ...",
  "author": "<username>",
  "score": 1,
  "upvoteRatio": 1,
  "numComments": 0,
  "url": "https://www.reddit.com/r/apify/comments/1x64f49/weekly_job_board/",
  "linkUrl": null,
  "postType": "text",
  "createdAt": "2026-10-14T22:00:47.863Z",
  "mode": "subreddit",
  "input": "apify",
  "source": "Reddit",
  "fetchedAt": "2026-10-15T04:02:10.190Z"
}

Use it from code

Actor ID: cliqtomedia/reddit-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/reddit-scraper").call(run_input={
    "mode": "subreddit",
    "subreddits": [
        "apify"
    ]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~reddit-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "subreddit", "subreddits": ["apify"]}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/reddit-scraper")
result = tool.invoke({"run_input": {"mode": "subreddit", "subreddits": ["apify"]}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (24)
FieldTypeMeaning
typestringRow type: post, comment, or status (free row that explains a target without data).
idstringReddit ID with prefix: t3_... for posts, t1_... for comments.
postIdstringt3_ ID of the post (for a comment: the post it belongs to).
parentIdstringComments: t3_ post ID for a top-level comment, t1_ comment ID for a reply. Posts: null.
depthintegerComments: 0 for top-level, 1 for a reply, and so on. Posts: null.
subredditstringSubreddit name without r/.
titlestringPost title. On comment rows, the title of the post the comment belongs to.
textstringPost body or comment text as plain text, HTML entities decoded. null for link, image and video posts without a body.
authorstringUsername of the author; null for deleted or removed authors.
authorIdstringt2_ ID of the post author (posts only).
scoreintegerScore (upvotes minus downvotes) as Reddit shows it. null when Reddit hides it (for example, very new comments).
upvoteRationumberShare of upvotes, 0–1 (posts only). Filled in subreddit and user modes; null in search and post modes, where Reddit does not show it.
numCommentsintegerNumber of comments on the post (posts only).
urlstringLink to the post or comment on reddit.com; null for a deleted comment that has no link.
linkUrlstringLink, image, video or gallery URL the post points to; null for text-only posts. A post can have both linkUrl and text (for example an image with a caption).
postTypestringPost kind as Reddit reports it: text, link, image, video, gallery, multi_media and others. Filled in subreddit and user modes; null in search and post modes, where Reddit does not show it.
createdAtstringTime the post or comment was created, ISO 8601 UTC.
statusstringStatus rows only: not_found = post or subreddit does not exist, was removed, banned or is private; no_results = Reddit returned no posts (empty listing for these settings, user without posts, query without results); error = invalid input or source failure.
messagestringStatus rows only: what happened, in plain words.
errorCodestringStatus rows only: machine code (INVALID_INPUT, SOURCE_BLOCKED, ...); null for not_found and no_results.
modestringMode of the run.
inputstringYour subreddit, query, post URL or username as given.
sourcestringData source: Reddit.
fetchedAtstringTime this row was read from Reddit, ISO 8601 UTC.
Input settings (11)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Mode requiredmodestring"subreddit"
Subredditssubredditsarray["apify"]
Search queriessearchQueriesarray
Post URLspostUrlsarray
Usernamesusernamesarray
Max posts per targetmaxPostsinteger10
Max comments per postmaxCommentsPerPostinteger0
Post sortsortstring"new"
Time range (top and search)timeFilterstring"all"
Comment sortcommentSortstring"top"
Proxyproxyobject{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure