Vimeo Video Downloader
Pricing
from $2.70 / 1,000 video reads
Vimeo Video Downloader
Download public and unlisted Vimeo videos by URL or ID: save full-resolution MP4 files, plus HLS/DASH stream links, direct MP4 links when offered and full metadata. Works with Apify MCP and the API.
Pricing
from $2.70 / 1,000 video reads
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
33
Total users
10
Monthly active users
a day ago
Last modified
Categories
Features
Share
What is Vimeo Video Downloader?
Vimeo Video Downloader turns Vimeo video links, IDs, channel pages, group pages or user pages into one row per video: title, description, owner, duration, resolution, upload date, thumbnail, caption tracks and the stream links Vimeo offers. Turn on saveVideosToStore and videos that Vimeo serves without copy protection are saved as MP4 files in the run's storage. Video editors, archivists, marketers, researchers and AI agents use it to collect Vimeo videos in bulk, with no Vimeo account.
Why teams use it to collect Vimeo videos
- Honest about protected videos. Many Vimeo videos are copy-protected (DRM) and play only inside Vimeo's own player. Those rows say
downloadable: false, return no fake link, and still include the details and caption tracks. You are never charged for a protected video that has nothing to deliver. - Captions in every row.
captionTrackslists each language with a ready WebVTT link, andincludeCaptionTextadds the plain text for transcripts and AI use. - Channel, group and user pages. Paste a page such as
https://vimeo.com/channels/staffpicksand the newest videos on it are read, 12 per page. - Fast and light. Videos run in parallel, and the run size follows your list size, so a 3-video job is cheap and a 500-video job is not slowed down.
- Pay per video. One charge per video delivered with a playable link, a saved file or captions. Private, removed and restricted videos come back with a reason and are free.
How to use it
Links and captions for a list of videos:
{"videoUrls": ["https://vimeo.com/22439234","https://player.vimeo.com/video/336812686"],"includeCaptionText": true}
The newest videos of a channel:
{"channelUrls": ["https://vimeo.com/channels/staffpicks"],"maxVideos": 24}
Save the video as an MP4 file (only videos without copy protection can be saved, and files are limited in size):
{"videoUrls": ["https://vimeo.com/22439234"],"saveVideosToStore": true}
| Input | What it controls |
|---|---|
videoUrls | Vimeo links or numeric IDs; unlisted links keep their hash, such as https://vimeo.com/123456/abc123 |
channelUrls | Channel, group or user pages; the newest videos on each are read. Showcases are not supported |
maxVideos | Videos to process per run, after removing duplicates (default 50; free Apify plan: 10) |
saveVideosToStore | Save each video as an MP4 file in the run's key-value store (default off) |
includeCaptionText | Add the plain text of every caption track (default off) |
proxyConfiguration | Apify Proxy settings for reading Vimeo's player data |
Output: Vimeo video data you receive
A real row for a downloadable video with captions (long values shortened):
{"id": "1070499175","title": "National Theatre: Expanding the stage globally with Vimeo","description": "Pre-pandemic, National Theatre didn't have streaming on its digital roadmap. Dis...","url": "https://vimeo.com/1070499175","duration": 79,"fps": 25,"width": 3840,"height": 2160,"uploadDate": "2025-03-28T18:57:00Z","ownerName": "Vimeo","ownerUrl": "https://vimeo.com/staff","thumbnailUrl": "https://i.vimeocdn.com/video/2042226952-aff13a0faf4e30a73c20725bfa25bd13...","downloadable": true,"downloadUrl": "https://vod-adaptive-ak.vimeocdn.com/exp=1794522541~acl=%2F236ec1a2-5d1a...","bestQuality": "hls","hlsMasterUrl": "https://vod-adaptive-ak.vimeocdn.com/exp=1794522541~acl=%2F236ec1a2-5d1a...","dashMasterUrl": "https://vod-adaptive-ak.vimeocdn.com/exp=1794522541~acl=%2F236ec1a2-5d1a...","drmProtected": false,"captionTracks": [{ "language": "en", "label": "English", "kind": "captions", "url": "https://captions.vimeo.com/captions/252891146.vtt?expires=17...", "text": "This partnership with Vimeo has really helped us b..." }],"captionLanguages": ["en", "de", "es", "fr", "ja", "ko", "pt"],"success": true}
A copy-protected video looks the same, with "downloadable": false, "drmProtected": true, "downloadUrl": null and its captionTracks.
| Field | What it contains |
|---|---|
id, url, title, description | The video and its text |
duration, width, height, fps | Length in seconds, resolution and frame rate |
uploadDate, ownerName, ownerUrl, ownerAccountType | When it was published and by whom |
thumbnailUrl, unlisted, isPrivate | Preview image and visibility |
downloadable, drmProtected | downloadable is true when a playable link is returned; drmProtected is true when Vimeo serves the video only to licensed players |
downloadUrl, bestQuality | The best available stream: a direct MP4 or an HLS playlist (empty when protected) |
progressiveStreams, hlsMasterUrl, dashMasterUrl | Direct MP4 files by quality and adaptive playlists, when Vimeo offers them |
captionTracks, captionLanguages | Caption tracks with language, label and WebVTT link (plus text when requested) |
savedFileUrl, savedFileBytes, saveSkippedReason | Link and size of the saved MP4, or why a save was skipped (too_large, not_downloadable, no_hls, save_failed) |
sourcePage | The channel, group or user page the video came from |
success, error, note | Whether the video was read, the reason when it was not, and a plain-words note |
Stream links are signed by Vimeo and stay valid for a limited time, so download or save soon after the run. OUTPUT in the default key-value store reports the run outcome, counts, the memory used and an agentSummary sentence.
Example workflow: archiving a client's video library
A video agency moves a client's portfolio off Vimeo. They paste the client's 40 video links into videoUrls with includeCaptionText on. Each row's title, description, uploadDate and caption text go into the new site's records. Unprotected videos are saved as MP4 files with saveVideosToStore; rows with drmProtected true are listed for the client to export from their own Vimeo account, and those rows cost nothing if they carry no captions.
Pricing
Startup billing and empty runs
The apify-actor-start event costs $0.00005 per startup unit. Apify charges one startup unit per GB of allocated memory, with a minimum of one unit, so most runs here pay one unit. This startup charge still applies when input is invalid, no results are found, or an upstream request fails. Statements about free, unbilled, or skipped results refer only to the corresponding result event; they do not waive the startup charge. Apify platform usage is included in the event prices and is not passed through as an additional customer charge. Check the live Pricing tab for current events, tiers, and rates. Result limits cap result events, not the entire run cost.
This Actor uses Pay per event with Store discount tiers: the more you use Apify, the lower the price per video. You pay one event per video delivered with a playable link, a saved file or caption tracks, plus the start event per run. Videos returned with a reason instead of streams, and copy-protected videos with nothing to deliver, are free.
| Example run | Videos delivered | Cost at the Bronze tier |
|---|---|---|
| Quick check | 5 | $0.016 |
| Channel page | 24 | $0.077 |
| Library batch | 100 | $0.32 |
maxVideoscaps each run, so it doubles as a cost ceiling.- Saved files are limited to 10 MB per file today. Larger files (up to 100 MB) arrive with a separate small File saved event from the date shown in the live Pricing tab.
What's new
- Copy-protected videos are now flagged
downloadable: falseinstead of returning a link that cannot play, and are not charged unless captions are delivered. - Caption tracks (and optional caption text) in every row.
- Channel, group and user pages in
channelUrls. - Parallel reading, and run memory that follows the size of your job.
- Lower prices with Store discount tiers.
Video research with AI agents (MCP)
Connect this Actor to an AI agent through Apify MCP and ask in plain language:
Get the title, length, upload date and caption languages for these three Vimeo videos, and tell me which ones I can actually download.
Agent checklist:
- Pass links or IDs in
videoUrls, or a channel page inchannelUrls. - Set
includeCaptionText: truewhen the user wants transcripts. - Set
saveVideosToStore: trueonly when the user wants files, and only small videos are saved. - Read rows with
get-dataset-items; checkdownloadablebefore sharingdownloadUrl. - Explain
drmProtectedorerrorrows in plain words, and readagentSummaryinOUTPUT.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~vimeo-video-downloader/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"videoUrls": ["https://vimeo.com/22439234"], "includeCaptionText": true}'
Related video tools from the same developer
| Your next step | Use | Why |
|---|---|---|
| When you download from many video sites | All-in-One Media Downloader | Videos or audio from many supported sites |
| When you work with Dailymotion | Dailymotion Video Downloader | Dailymotion videos to MP4 with metadata |
| When you work with YouTube | YouTube Video Downloader | Permitted YouTube videos or audio to storage |
| When you then want captions or text | YouTube Transcript Extractor | Transcripts for YouTube videos |
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| You need captions or transcripts | Turn on includeCaptionText | Plain text per language, even for protected videos |
| You need the actual video file | Turn on saveVideosToStore | One MP4 per unprotected video up to the size limit |
| Building a player or embed | Use hlsMasterUrl or dashMasterUrl | Adaptive streaming at every quality |
| Unlisted videos | Paste the full link with its hash | The same access as the share link |
| A large list or channel | Set maxVideos to the list size and run once | One row per video, duplicates removed |
Builder's note
I found that many Vimeo videos are now copy-protected: Vimeo hands out a playlist that only licensed players can open. A downloader that sells that link sells something that cannot work, so this Actor says downloadable: false plainly, keeps the details and captions that are still public, and charges only for what it delivers.
FAQ
Do I need a Vimeo account?
No. The Actor reads public and unlisted videos through their links and needs no login.
Can it download private or password-protected videos?
Videos that need a login or password come back with a reason in error and no video charge. Startup billing still applies. Unlisted videos work when you include the hash from the share link.
What does drmProtected mean?
Vimeo serves some videos only to licensed players. Those rows have downloadable: false and no stream link, because such a link would not play outside Vimeo. Details and caption tracks are still returned, and you pay only if captions are delivered.
Why was my video not saved as a file?
Only unprotected videos can be saved, and each file is limited in size. The row's saveSkippedReason says too_large, not_downloadable, no_hls or save_failed.
Which pages can I paste in channelUrls?
Vimeo channels, groups and user video pages. The newest videos are read, 12 per page, up to maxVideos. Showcases and search pages are not supported.
How long do download links last?
Vimeo signs stream links for a limited time. Saved MP4 files stay in the run's storage according to your Apify data retention.
Why does a video sometimes come back with a reason and work on a later run?
Vimeo occasionally shows a security check to automated visitors. The row explains it, the video is free, and running it again usually works.
Responsible use
This Actor downloads videos that are publicly available on Vimeo or shared with you by link. Download only videos you own or have permission to use, respect creators' copyright and licenses, and follow Vimeo's terms. Read Apify's guide on whether web scraping is legal for more context. Vimeo is a trademark of Vimeo.com, Inc. This independent Actor is not affiliated with, associated with, or endorsed by Vimeo. For questions or bugs, open a ticket in the Issues tab.