Loom Video Downloader: MP4, Transcript & Metadata
Pricing
from $1.20 / 1,000 video records
Loom Video Downloader: MP4, Transcript & Metadata
Turn any public Loom share link into a downloadable MP4 URL, full transcript, VTT captions and rich metadata in one run. No login required. Handles share links, embed links, iframe snippets and raw video IDs.
Pricing
from $1.20 / 1,000 video records
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
📹 Loom Video Downloader: MP4, transcript, metadata and change events
Turn any public Loom link into a signed MP4 URL, a full transcript, subtitles, rich video details, and source-backed knowledge-base change events. No login, no password, no browser extension. Paste a share link, an embed link, an embed snippet, a raw video ID, or an optional public Loom folder/page for discovery.
🔍 What does the Loom Video Downloader do?
The Loom Video Downloader turns a Loom link into structured data and, if you want it, the actual video file. Point it at one or more Loom videos that were shared as "anyone with the link", and for each one you get:
- A direct signed video link from Loom. Its expiry is exposed when Loom publishes it, and it is not a permanent URL.
- The full transcript, both as clean readable text and as timestamped lines
- Subtitles (VTT captions) for editors and subtitle files
- Title, description, duration, resolution, view count, owner name and avatar, and thumbnails
- An honest source status for every video: downloadable, private, download disabled, unavailable, or explicit failure, never a guess
- Optional
snapshotor statefulchangesmonitoring for a knowledge base
Because it runs on the Apify platform, you also get scheduling, ready-made integrations, run monitoring, and exports in JSON, CSV, or Excel.
💡 Why use the Loom Video Downloader?
Most Loom tools do only one job: either they download the video, or they pull the transcript, never both. This one does both, plus the metadata, in a single pass.
- I am a content creator repurposing my Loom walkthroughs into blog posts and social clips, and I need the transcript and the video file in one step.
- I am a customer support lead archiving every Loom recording my team sends to customers, so nothing gets lost when a workspace changes hands.
- I am an AI or automation builder feeding Loom transcripts into a summarizer or knowledge base, and I need clean, timestamped text without manually copying captions.
- I am an agency or consultant backing up client demo recordings and onboarding videos before a Loom account gets cancelled or a link expires.
- I am a course creator pulling subtitles and video files from a batch of recorded lessons to publish somewhere else.
🚀 How to use the Loom Video Downloader
- Click Try for free at the top of this page.
- Paste one or more Loom links into Loom videos. Share links, embed links, embed snippets, and raw video IDs all work.
- Choose whether to include the transcript and captions (both on by default).
- Enable Discover from public pages only when a supplied Loom folder/page should be scanned for visible links.
- Choose
snapshotfor every current row, orchangeswith a stable State key for scheduled knowledge-base monitoring. - Turn on Download and store the video file only if you need a run-storage copy, not just the signed link. This takes longer and costs more for large videos.
- Set Max items to cap how many videos you want processed, then press Start.
- Download the dataset in JSON, CSV, or Excel, or connect it to Google Sheets, Make, Zapier, or your own app.
New here? Try it with a single link first to see the output shape before running a larger batch.
📥 Input
Set these fields in the Console form, or pass them as JSON.
| Field | Type | Required | Description |
|---|---|---|---|
| Loom videos | array of strings | Yes | Share links, embed links, embed snippets, or raw video IDs, one per line. |
| Start URLs | array | No | Alias accepting URL objects with an optional inputId; useful for discovery pages. |
| Discover from public pages | boolean | No | Extract visible public share/embed links from supplied Loom pages. Default false. |
| Monitor mode | snapshot or changes | No | snapshot emits current rows. changes emits NEW, UPDATED, EXPIRED, REAPPEARED, and failures while suppressing unchanged rows. |
| State key | string | Required for changes | Stable name for one monitoring scope. Keep it unchanged across scheduled runs. |
| Max items | integer | No | Maximum number of videos to process. Leave empty to process every video you listed. |
| Include full transcript | boolean | No | Attach the clean transcript text and timestamped lines. On by default. |
| Include captions (VTT) | boolean | No | Attach subtitle file content and its link. On by default. |
| Download and store the video file | boolean | No | Save the actual video file to this run's storage, not just the link. Off by default, since it takes longer and costs more for large videos. |
| Proxy configuration | object | No | Network settings. The default works for almost everyone. |
📤 Output
Every video becomes one row with everything about it in one place. Here is a shortened example:
{"videoId": "230fc263c6784be7a0a4840a8c8f6216","canonicalUrl": "https://www.loom.com/share/230fc263c6784be7a0a4840a8c8f6216","title": "Loom 101 Webinar","durationSeconds": 3224,"width": 2400,"height": 1350,"totalViews": 109,"ownerName": "Brittany Soinski","thumbnailUrl": "https://cdn.loom.com/sessions/thumbnails/230fc263...jpg","mediaUrl": "https://cdn.loom.com/sessions/transcoded/230fc263...mp4?Policy=...","mediaUrlExpiresAt": "2026-07-03T04:14:40.000Z","mediaFormat": "mp4","transcriptText": "All right everybody, let's go ahead and get started...","captionsUrl": "https://cdn.loom.com/mediametadata/captions/230fc263...vtt","downloadable": true,"status": "ok","changeType": "NEW","changedFields": [],"firstSeenAt": "2026-07-03T03:59:40.417Z","lastSeenAt": "2026-07-03T03:59:40.417Z","retrievedAt": "2026-07-03T03:59:40.417Z"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The Output tab has three ready-made views: Videos, Transcripts, and Downloads.
📊 Data table
Main fields returned for every video. Empty fields are dropped, so every value you see is real.
| Field | Type | Description |
|---|---|---|
| videoId | string | The Loom video ID resolved from your input. |
| sourceUrl | string | The supplied public share URL or discovery page used for this observation, when available. |
| inputId | string | Your supplied source identifier, when provided. |
| retrievedAt | string | UTC time the source was retrieved. |
| stateKey | string | The selected monitoring scope, when provided. |
| monitorMode | string | snapshot or changes for the run. |
| canonicalUrl | string | Direct share link to the video on Loom. |
| title | string | Video title. |
| description | string | Video description, when the owner added one. |
| durationSeconds | number | Video length in seconds. |
| width / height | number | Video resolution in pixels. |
| totalViews | number | Total view count, when available. |
| ownerName | string | Display name of the person who recorded the video. |
| ownerAvatarUrl | string | Link to the owner's profile picture. |
| thumbnailUrl | string | Static thumbnail image. |
| animatedThumbnailUrl | string | Animated preview thumbnail, when available. |
| mediaUrl | string | Direct, ready-to-download video link. |
| mediaUrlExpiresAt | string | Expiry decoded from Loom's signed URL policy, when available. Signed media URLs can expire. |
| mediaFormat | string | File format of the video link, typically mp4. |
| transcriptText | string | Full transcript as clean, readable text. |
| transcriptPhrases | array | Transcript broken into timestamped lines. |
| captionsVtt | string | Raw subtitle file content. |
| captionsUrl | string | Direct link to the subtitle file. |
| downloadable | boolean | Whether a video link was found for this video. |
| privacy / availability | string | Loom fields returned by the public source, only when Loom publishes them. |
| status | string | ok, private, download_disabled, not_found, failed, or monitor-generated expired. |
| statusReason | string | Plain-language explanation when status is not ok. |
| errorCode | string | Stable code for explicit source/input failures, when present. |
| changeType | string | NEW, UPDATED, EXPIRED, REAPPEARED, or UNCHANGED. |
| changedFields | array | Source fields that changed since the prior successful observation. Signed URLs are excluded. |
| firstSeenAt / lastSeenAt | string | State-backed lifecycle timestamps for the stable videoId. |
| savedFile | object | Stored file details, only present when file download was turned on. |
| scrapedAt | string | When this row was collected, in ISO 8601 UTC. |
💰 Pricing
This Actor uses pay per result, so you only pay for the videos you actually receive data for. Runs that return nothing cost nothing, and there are no monthly subscriptions or hidden fees. Turning on file download costs more per video since it moves the actual video file, and is billed separately from the standard result. Start with a small batch to preview the data before scaling up.
⭐ Enjoying Loom Video Downloader?
|
⭐ ⭐ ⭐ ⭐ ⭐ If this is saving you from stitching together separate download and transcription tools, tell us about it. A 5-star rating takes 10 seconds and helps other content creators and support teams find this Actor. Your feedback also tells us what to build next. |
| ★ Rate this Actor on Apify |
❓ FAQ
Does this work on private or password-protected videos?
No, and it should not. This Actor only resolves videos that were shared as "anyone with the link", the same access level Loom itself gives any visitor holding that link. Private, workspace-only, and password-protected videos are reported with a clear status instead of being bypassed.
Why does a video sometimes show no video link?
Some video owners turn off downloads, or the video may no longer be publicly shared. When that happens, the row still comes back with a clear download_disabled, private, not_found, or failed status and a plain-language reason, instead of a broken or fake link.
Do I need a Loom account or API key?
No. The Actor needs no login, no password, and no account connection. Just paste a link and press start.
Can I get both the transcript and the video file in the same run?
Yes. Every video's metadata, transcript, captions, and signed video link come back together in one row, and you can additionally turn on file storage if you want a copy in run storage. Loom signed URLs can expire, so the Actor never claims that mediaUrl is permanent.
Why is savedFile missing on a very long recording?
Unusually long recordings, well beyond a typical Loom clip, can be too large to safely store in one run. When that happens, you still get the full metadata, transcript, captions, and signed video link, just not a stored copy. This is a deliberate safety limit, not a bug.
🛟 Support
Found a bug, or need an extra field? Open an issue on the Issues tab of this Actor and it will be reviewed. Custom versions and larger batch runs are available on request.
🔗 Other actors
- Loom Transcript Scraper ↗ - a lighter, API-fast option for pulling just Loom transcripts and metadata.
- Streamable Video Downloader ↗ - turns Streamable links into direct MP4 download URLs.
- Twitch Scraper ↗ - extracts channels, live streams, clips, and games from Twitch.
- Viewstats YouTube Analytics & Rankings Scraper ↗ - pulls YouTube channel analytics and rankings.
- Bulk Image Downloader ↗ - downloads images in bulk with full metadata and hashes.