Reddit Video Scraper & Downloader - MP4 With Audio avatar

Reddit Video Scraper & Downloader - MP4 With Audio

Pricing

from $30.00 / 1,000 reddit video downloadeds

Go to Apify Store
Reddit Video Scraper & Downloader - MP4 With Audio

Reddit Video Scraper & Downloader - MP4 With Audio

Download Reddit videos as one MP4 with the audio in it. Point it at any subreddit or user. A v.redd.it clip is two files: the picture and the sound. That is why videos saved off Reddit play silent. Each row has the title, author, subreddit, duration and resolution. $0.03 per video record.

Pricing

from $30.00 / 1,000 reddit video downloadeds

Rating

5.0

(1)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

2

Monthly active users

3 days ago

Last modified

Share

Reddit Video Scraper: v.redd.it clips as one MP4 with the sound in it

Point it at subreddits or Reddit profiles and it hands back the video posts, each as a single MP4 with the audio already joined on. Post title, author, subreddit, resolution and duration ride along on the same row.

The reason this actor exists: Reddit keeps a v.redd.it upload as two separate streams, picture and sound. Save one off the site the usual way and it plays silent. And the thing to know before you set the limit high: a row is written for every video post found, whether or not the MP4 came down with it, and every row counts.

InputSubreddit names, user profiles, or reddit.com URLs
OutputOne row per video post, with the MP4 in the run's key-value store
Ceiling50 video posts per source, per run
Account neededNone
Price$0.03 per video record

🎬 What Reddit Video Scraper does

It walks the sources you name, finds the posts that hold a Reddit-hosted video, and for each one pulls the picture and the sound and writes them out as one playable MP4. The file lands in the run's key-value store and the row carries a link straight to it.

Resolution, duration and file size come back on the row, so you can sort or filter after the fact without opening anything. dedupeAcrossRuns is on by default and remembers the last 5,000 clips it gave you, which is what stops a daily run handing you the same top post all week.

If you only want the metadata and the stream URLs, turn downloadVideos off. Read the cost section before you do, because that choice does not change what a row costs.

📥 What you give it

{
"sources": ["r/oddlysatisfying", "u/GallowBoob"],
"sort": "top",
"time": "week",
"maxPostsPerSource": 10
}
FieldDefaultWhat it is
sourcesnone, requiredSubreddits and profiles, mixed freely: aww, r/aww, u/name, or a full link.
subreddits, usersnoneOlder aliases. Anything here is merged into sources.
sorttoptop, hot, new, rising or controversial.
timeweekThe window for top and controversial. Ignored by the other sorts.
maxPostsPerSource10Video posts per source. 1 to 50. This is your spend cap.
downloadVideostrueOff returns the row and the stream URLs, with no MP4 saved.
minDurationSeconds, maxDurationSeconds0, 0Skip clips outside the range. 0 means no limit. Only applied while downloadVideos is on.
dedupeAcrossRunstrueSkips clips this actor already delivered to you.
proxyConfigurationApify defaultLeave it alone unless the run has to leave through your own servers. Your own URLs are used exactly as given.

sources is required. Leave it empty and the run falls back to r/oddlysatisfying and bills for whatever it finds there.

📤 What you get back

A real row from a real run, with the store link cut short so the block stays readable:

{
"id": "1wdm51d",
"title": "Glitter sand art",
"subreddit": "oddlysatisfying",
"sourceType": "subreddit",
"sourceName": "oddlysatisfying",
"url": "https://www.reddit.com/r/oddlysatisfying/comments/1wdm51d/glitter_sand_art/",
"author": "Creams0da",
"createdUtc": 1789146320,
"redditVideoId": "ektskeqhaxoh1",
"hlsPlaylist": "https://v.redd.it/ektskeqhaxoh1/HLSPlaylist.m3u8",
"dashPlaylist": "https://v.redd.it/ektskeqhaxoh1/DASHPlaylist.mpd",
"previewUrl": "https://external-preview.redd.it/bXh2OHBjbGhheG9oMcLBnvTxs7...",
"fetchedAt": "2026-09-14T05:46:18.371Z",
"resolution": "479x854",
"hasAudio": true,
"durationSeconds": 63,
"videoKey": "video-1wdm51d.mp4",
"videoUrl": "https://api.apify.com/v2/key-value-stores/rpbf4iFIiYMDYIQPi/records/video-...",
"videoBytes": 8653209
}
FieldWhat it is
videoKey, videoUrlWhere the MP4 sits in the run's key-value store, and a link to it.
videoBytesSize of the stored file. resolution and durationSeconds describe that same file.
hasAudioWhether the source stream listed an audio track. It is read off the stream, not off the finished file.
hlsPlaylist, dashPlaylistReddit's own stream URLs. Present on every row, including the ones where nothing was saved.
urlThe Reddit thread, not the video file.
videoDowngradedFromPresent when the clip was stored a quality step down to fit the size cap.

🧾 Reading the output

Every row in the dataset is a video record and every one of them is charged, so it is worth knowing which of the three shapes you are holding:

RowHow to spot itWhat happened
The normal onevideoKey and videoUrl are setThe MP4 is stored and ready
Skipped on sizevideoSkipped with a videoSkipCodeNothing was downloaded, metadata and stream URLs are complete
FaileddownloadErrorThe fetch went wrong on that attempt, stream URLs are still complete

videoSkipCode is one of two values:

CodeWhat it means
OVERSIZED_VIDEOOver 100 MB even at the lowest quality on offer, so it was left alone.
RUN_SIZE_BUDGET_EXHAUSTEDThis run had already stored its 1,024 MB of video. Later posts return metadata only.

Clips between those two extremes are not refused. The actor steps down the quality ladder to the best version that fits and tells you it did, in videoDowngradedFrom.

A run that finds nothing to download writes no dataset row at all. It puts a note in the key-value store instead, under SAMPLE_AND_NOTICES, saying either NO_VIDEO_POSTS_IN_RANGE or ALL_POSTS_ALREADY_SEEN. Those notes are not video records and are not billed as one.

▶️ How to run it

  1. Open Reddit Video Scraper and click Try for free.
  2. Put your subreddits and profiles into Sources, one per line.
  3. Pick a Sort and, for top or controversial, a Time range.
  4. Set Max videos per source. Start at 5 while you see what comes back.
  5. Click Start. The MP4s appear under Storage, and the rows download as JSON, CSV or Excel.

💰 How much does it cost?

$0.03 per video record. Flat on every Apify plan, no volume tiers.

One record is one row. Three subreddits at 10 videos each is up to 30 rows, so about $0.90.

Be deliberate about two of them, because they are records like any other. A row where the clip was skipped on size or the download failed is still a record. So is a row from a run with downloadVideos turned off, where the only thing you get is the metadata and the stream URLs. dedupeAcrossRuns is what stops you buying the same clip twice.

💡 What people use it for

  • Collecting clips from a niche subreddit for editing, without saving thirty silent files by hand.
  • Feeding a faceless video pipeline that needs the audio present to work at all.
  • Building a small labelled video set, where the post title doubles as a weak caption.
  • Following one creator's profile and picking up whatever they post that week.

🚧 What it does not do

  • Reddit-hosted video only. A YouTube, Imgur or Streamable link posted to a subreddit is not a v.redd.it upload and is skipped.
  • A failed or skipped download still counts as a record. The metadata and stream URLs on those rows are complete, which is what the record covers.
  • The duration filters only apply while downloadVideos is on. Turn downloading off and every video post comes back, however long it is.
  • Duration is confirmed after the file arrives. A clip that turns out to sit outside your range is dropped from the results rather than delivered.
  • No paging. One page of posts per source, capped at 50.
  • hasAudio describes the source stream, not the file that was written.
  • No comments, no post body. This is about the video. For post text, use the scraper linked below.

🧭 Which Reddit actor do you need?

If you wantUse
Videos as playable MP4s with the soundThis one
Posts and their full body text from a subreddit or profileReddit Scraper
Posts matching a keywordReddit Search Scraper
Post text cleaned up for narrationReddit Text Cleaner

❓ Questions people ask

Do I need a Reddit account? No. Nothing to paste and nothing that expires.

Why do clips downloaded from Reddit normally play silent? Because the picture and the sound are two separate files on Reddit's side. This actor joins them before saving.

Where do the MP4s go? Into the run's key-value store, under the Storage tab. The videoUrl on each row points at that record.

Can I keep the files forever? Copy them somewhere of your own. Apify clears unnamed run storage after a while, and Reddit's own stream URLs do not last either.

What if a subreddit has no videos this week? No records are written, so there is nothing to bill for. The note in the key-value store tells you which of the two reasons it was.

Is scraping Reddit legal? This reads public posts only. The content still belongs to whoever made it, so check before you republish anything. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the sources you asked for and the run ID, and the log shows us what the run saw.