Reddit Video Scraper & Downloader
Download v.redd.it videos from any subreddit or Reddit user, with audio muxed in plus metadata. Filter by sort, time, and duration. No login or API key.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
sources,subreddits,users(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.03 per Reddit video downloaded = $30 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Reddit video downloaded | One downloaded Reddit video. | $0.03 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.00005 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-11, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
sources | Any mix of subreddits and Reddit user profiles: 'oddlysatisfying', 'r/aww', 'u/GallowBoob', or a full reddit URL. Works for ANY source. | array |
subreddits | Optional alias — plain subreddit names, merged into sources. | array |
users | Optional — Reddit usernames (without u/), merged into sources. | array |
sort | top, hot (trending), new (latest), rising, or controversial. | string |
time | Time window for top/controversial. E.g. all time, this year, this week. | string |
maxPostsPerSource | How many video posts to return/download per source. | integer |
downloadVideos | Download the best-quality muxed MP4 (with audio) to the key-value store. Off = return metadata + playlist URLs only. | boolean |
minDurationSeconds | Skip videos shorter than this. 0 = no limit. | integer |
maxDurationSeconds | Skip videos longer than this. 0 = no limit. | integer |
dedupeAcrossRuns | Remember video IDs between runs so the same video isn't returned twice. | boolean |
What you get
A structured dataset — each result includes fields like:
authorcreatedUtcdashPlaylistdurationSecondsfetchedAthasAudiohlsPlaylistidpreviewUrlredditVideoIdresolutionsourceNamesourceTypesubreddittitlevideoUrlurlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
17 ready-to-run use cases
Download r/AnimalsBeingDerps Clips for YT Shorts
Faceless Shorts creators can download the week's top animal videos from r/aww and r/AnimalsBeingDerps as edit-ready MP4 clips under 60 seconds.
r/oddlysatisfying Video Downloader for Compilations
Top satisfying and ASMR videos from r/oddlysatisfying, downloaded as MP4 clips ready to stitch into compilation videos for YouTube and TikTok.
Daily New Viral r/nextfuckinglevel Video Feed
A deduped daily feed of brand-new rising videos from r/nextfuckinglevel, so repost channels can grab viral Reddit clips before they spread elsewhere.
r/nba & r/sports Highlight Clip Downloader
Pull the day's top highlight clips from r/nba, r/soccer and r/sports as short MP4s, ready for sports editors to package into recap Shorts and Reels.
Reddit UGC Video Swipe File for Ad Creative
Ecommerce marketers get a swipe file of authentic product and gadget videos from Reddit to model high-converting UGC-style ad creative.
Reddit Brand Mention Video Monitor & Downloader
Weekly monitoring of new video posts about your brand across subreddits, with clips downloaded so you never miss an unboxing, review, or complaint.
r/PublicFreakout Clip Scraper for Reaction Channels
Reaction and news-commentary channels get the week's top public-freakout and viral-incident clips from Reddit, filtered by video length.
r/Cooking & r/foodporn Recipe Video Downloader
Source top recipe videos from r/Cooking, r/foodporn and r/GifRecipes each month as downloadable clips for your food Reels and TikToks.
Reddit DIY & Meal-Prep B-Roll Clip Downloader
Short B-roll clips from r/MealPrepSunday, DIY and maker subreddits, length-filtered to layer under voiceover and how-to content.
Top r/funny & r/WatchPeopleDieInside Clips Weekly
Grab the week's funniest clips from r/funny, r/WatchPeopleDieInside and r/Wellthatsucks as ready-to-post MP4s for meme pages and comedy compilations.
r/wallstreetbets & r/sportsbook Reaction Videos
Finance and betting commentators can pull weekly top video posts from r/wallstreetbets, r/sportsbook and r/CryptoCurrency for reaction content.
Archive All Videos From a Reddit User Profile
Every video a Reddit user has posted, downloaded straight from their profile sorted by top, building a full media archive of any creator's clips.
r/CrazyFuckingVideos Metadata Scraper (No Download)
Video URLs, upvotes and titles from r/CrazyFuckingVideos without downloading files, a lightweight feed for ranking clips or powering an app.
Labeled Reddit Video Dataset for ML Training
ML engineers can assemble thousands of short Reddit clips labeled by subreddit and filtered to 3-30s, a dataset ready for action-recognition models.
Short Reddit Clips Under 60 Seconds for Shorts
Need clips that fit a Short or Reel? Cap duration at 60 seconds and download the best videos from r/nextfuckinglevel as ready-to-post MP4s.
Multi-Subreddit Reddit Video Dataset Builder
Videos collected across r/funny, r/Damnthatsinteresting and r/BeAmazed to seed a training or content dataset from multiple subreddits at once.
Reddit Video URLs & Metadata Only (No Download)
v.redd.it playlist URLs and post metadata from r/PublicFreakout, returned without heavy downloads for your own video processing pipeline.
Related tools in Social Media Scrapers
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Telegram Channel Scraper
Scrape public Telegram channels without login or an API key. Get posts with text, date, views, media, plus channel title and subscriber count.
Pinterest Search Scraper
Scrape Pinterest search results by keyword. Get pins as JSON: image/video URLs, destination links, save and comment counts. No login, paginated.
Bluesky Scraper
Scrape Bluesky posts by keyword or handle. Get post text, URLs, likes, reposts, and full profiles as clean JSON. No login or API key needed.
Mastodon Scraper
Scrape public Mastodon posts from any instance by hashtag, account, or timeline. Clean text, author, engagement and media as JSON. No login or key.
Lemmy Scraper
Scrape public Lemmy posts from any instance by feed, community, or keyword. Get title, author, score, comments and more as JSON. No login needed.
Reddit Text Cleaner — TTS-Ready Narration
Turn raw Reddit posts into TTS-ready narration. Strips markdown, links and edit stamps, expands AITA/MIL/TIFU, splits into sentences. No AI, instant.
Where this tool sits
- Categories
- Social Media Scrapers
- Platforms
Reddit Video Scraper & Downloader
Find and download videos from any subreddit or Reddit user profile. No API key, no login, no app registration. Point it at a list of sources and you get back the post metadata plus a muxed MP4 with audio for each video. Built for reposting, faceless content pipelines, and building video datasets.
$0.03 per video record returned, plus a small one-off fee each time a run starts. Flat rate — no volume tiers, no plan gates, no subscription. The start fee is $0.00005 today and becomes $0.002 on 30 August 2026; the $0.03 per-video price is not changing.
How it works
It discovers video posts through Reddit's public RSS feeds (so it doesn't touch the rate-limited JSON API), then for each video post it pulls the best-quality v.redd.it stream and muxes the separate video and audio tracks back together with ffmpeg into a single MP4.
Input
sources is the only required field. You can mix subreddits and user profiles in any format: oddlysatisfying, r/aww, u/GallowBoob, or a full Reddit URL.
| Field | Required | Notes |
|---|---|---|
sources | yes | Array of subreddits and/or user profiles. Accepts r/aww, u/name, bare names, or full URLs. |
sort | no | top, hot, new, rising, or controversial. Defaults to top. |
time | no | Time window for top/controversial: hour, day, week, month, year, all. Defaults to week. |
maxPostsPerSource | no | How many video posts to return per source, 1-50. Defaults to 10. |
downloadVideos | no | true downloads the muxed MP4 to the key-value store. false returns metadata and playlist URLs only. Defaults to true. |
minDurationSeconds / maxDurationSeconds | no | Skip videos outside this range. 0 means no limit. |
dedupeAcrossRuns | no | Remembers video IDs between runs so the same clip isn't returned twice. Defaults to true. |
proxyConfiguration | no | Rotating Apify datacenter addresses, used to read the subreddit feeds; the video files are downloaded directly. Metered groups (RESIDENTIAL, GOOGLE_SERP) are not offered and are swapped for datacenter automatically; your own custom proxy URLs are used exactly as given. |
Output
Each dataset item is one video post with its id, title, subreddit, author, url, createdUtc, and the hlsPlaylist / dashPlaylist stream URLs. When downloadVideos is on, the item also carries videoKey, videoUrl, resolution, durationSeconds, videoBytes, and hasAudio pointing at the MP4 saved in the key-value store. If a download fails the record still pushes, with a downloadError field explaining why.
A row is written for every video post found, whether or not the MP4 came down with it. Three fields tell you which case you are looking at:
| Field | Meaning |
|---|---|
videoKey / videoUrl | The MP4 is in the key-value store. Normal case. |
downloadError | The download was attempted and failed (network, stream error, ffmpeg). Transient — re-running usually fixes it. |
videoSkipped, videoSkipCode, videoSkipReason | The download was deliberately not made, because of the size limits below. videoSkipCode is OVERSIZED_VIDEO or RUN_SIZE_BUDGET_EXHAUSTED. |
videoDowngradedFrom | The clip was stored at a lower resolution than its best, to fit the per-clip size limit. The resolution you got is in resolution. |
In every one of those cases the hlsPlaylist and dashPlaylist URLs on the row are complete and public, so you can always fetch the clip yourself.
Size limits
The MP4s are stored on this Actor's own key-value store, and that storage is paid for by us, not by you — so there is a ceiling on it. Two limits apply:
- Per clip: 100 MB. Before downloading anything, the Actor reads the stream manifest and estimates the size of each available quality. If the best quality would exceed the limit, it steps down the quality ladder to the largest one that fits and stores that (you will see
videoDowngradedFromon the row). Only if even the lowest quality is over the limit is the clip refused, and in that case nothing is downloaded at all. - Per run: 1024 MB total across all sources. Once a run has stored that much video, the remaining posts still return full metadata rows but no MP4.
In practice neither limit is reachable with normal use: v.redd.it clips are typically well under 20 MB, so the per-run budget covers roughly 50-plus videos. If you are pulling large numbers of long videos, split the work across several runs.
Example
{
"sources": ["r/oddlysatisfying", "u/GallowBoob"],
"sort": "top",
"time": "week",
"maxPostsPerSource": 10,
"downloadVideos": true,
"proxyConfiguration": { "useApifyProxy": true }
}
Pricing
| Event | When | Price |
|---|---|---|
| Actor start | Once per run, per GB of run memory | $0.00005, rising to $0.002 on 30 August 2026 |
| Video record | Each video row written to the dataset | $0.03 |
The start fee is going up because a run that finds no videos at all — pointed at a text-only subreddit, say — still returns zero rows and so bills nothing beyond the start fee, while the container it ran in is not free. At $0.002 that case covers itself. On any run that actually returns videos the change is immaterial: it is under a tenth of one video's price, once, for the whole run.
Billing follows the dataset, one charge per row. Two things worth knowing before you set maxPostsPerSource:
- With
downloadVideos: falseyou still get a row per video post — metadata plus the HLS/DASH playlist URLs — and that row is charged at the same $0.03. - If a download fails, or a clip is skipped on size, the row is still written — with
downloadErrororvideoSkipReasonexplaining why — and it is charged like any other row. The metadata and playlist URLs on those rows are complete, which is what you are paying for.dedupeAcrossRuns(on by default) is your main protection against paying twice for the same clip.
A run over three subreddits at the default 10 posts each returns up to 30 rows, so about $0.90.
No API key of any kind is required, and there is no AI step in this actor — nothing here calls a model.
Notes
Reddit-hosted video only. Clips over 100 MB are stored at a reduced quality, or refused outright if even the lowest quality is over the limit — see Size limits above. The v.redd.it mux path doesn't cover external embeds like YouTube or Imgur links posted to a subreddit. Feed reads rotate a fresh datacenter IP per attempt; if you are pulling a lot of sources at once and hit throttling, spread the run out or supply your own proxy servers as custom proxy URLs.