Loom Video Downloader avatar

Loom Video Downloader

Pricing

from $0.90 / 1,000 saved videos

Go to Apify Store
Loom Video Downloader

Loom Video Downloader

Download public Loom videos from share URLs, embed URLs, iframe snippets, or raw video IDs. Export MP4 assets when available, media URLs, transcripts, WebVTT captions, thumbnails, owner data, views, duration, and metadata.

Pricing

from $0.90 / 1,000 saved videos

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Loom Video Downloader downloads public Loom videos from share URLs, embed URLs, iframe snippets, or raw Loom video IDs. It saves one dataset row per public video with media links, metadata, thumbnails, transcripts, WebVTT captions, and an MP4 file in Apify key-value storage when the asset can be assembled safely.

Use this Loom video downloader when you already have Loom links and need a repeatable way to archive videos, review team knowledge, export transcripts, build internal search, prepare content notes, or feed a workflow through the Apify API. You do not need Loom cookies, a Loom login, or a Loom API key.

For a small first run, keep the prefilled Loom video and start the Actor. Once the output shape looks right, paste your own Loom share links, embed links, iframe snippets, or raw video IDs.

✅ What this Actor does

  • Accepts public Loom share URLs such as https://www.loom.com/share/VIDEO_ID.
  • Accepts public Loom embed URLs such as https://www.loom.com/embed/VIDEO_ID.
  • Accepts iframe snippets that contain a Loom embed URL.
  • Accepts raw 32-character Loom video IDs.
  • Saves one dataset row per successfully processed public Loom video.
  • Adds source fields such as input, inputIndex, videoId, canonicalUrl, and embedUrl.
  • Adds video metadata such as title, description, duration, size, thumbnails, owner name, views, privacy, and scrape time when Loom exposes it.
  • Adds Loom transcript text and timestamped transcript phrases when available.
  • Adds WebVTT captions when Loom provides captions for the video.
  • Adds HLS or DASH media URLs when Loom exposes them.
  • Saves an MP4 asset to Apify key-value storage when the video can be assembled during the run.
  • Skips invalid, private, password-protected, permission-only, deleted, or unavailable Loom videos without saving failure rows.

This Actor is focused on known public Loom videos. It does not crawl Loom folders, search workspaces, use private Loom accounts, bypass passwords, or create new AI transcripts for videos that do not expose public transcript data.

📦 Data you can export

Each output row represents one public Loom video. Fields can include:

  • input and inputIndex - the submitted target and its position in your list.
  • videoId, canonicalUrl, and embedUrl - stable Loom identity and source links.
  • title, description, durationSeconds, durationMs, width, and height.
  • thumbnailUrl and animatedThumbnailUrl.
  • ownerName and ownerAvatarUrl when Loom exposes the owner.
  • totalViews and uniqueViews when visible.
  • downloadable, downloadEnabled, downloadableBy, privacy, and availability flags.
  • media.hlsUrl, media.dashUrl, and media.format.
  • transcript.text, transcript.phrases, transcript.status, and transcript.language.
  • captions.vtt and captions.sourceUrl.
  • savedFile.storageKey, savedFile.downloadUrl, savedFile.contentType, and savedFile.fileSizeBytes when an MP4 is saved.
  • status, statusReason, and scrapedAt.

Rows may contain null values when Loom does not expose a field for a public video. If MP4 saving is not available for one video, the row still includes source media URLs and a plain statusReason.

🚀 How to run it

  1. Open the Actor input tab.
  2. Paste Loom targets into Loom videos. You can mix share URLs, embed URLs, iframe snippets, and raw video IDs.
  3. Set Maximum videos if you want to cap the run.
  4. Start the Actor.
  5. Open the dataset to export JSON, CSV, Excel, XML, RSS, or use the results through the Apify API.

The Actor pushes accepted video rows during the run, so you can inspect results before a large batch finishes.

🧾 Input example

{
"targets": [
"https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
"https://www.loom.com/embed/e41353f2fe1c43eba6c6829693e0f2c5",
"e41353f2fe1c43eba6c6829693e0f2c5"
],
"maxItems": 25
}

📄 Output example

{
"input": "https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
"inputIndex": 0,
"videoId": "e41353f2fe1c43eba6c6829693e0f2c5",
"canonicalUrl": "https://www.loom.com/share/e41353f2fe1c43eba6c6829693e0f2c5",
"embedUrl": "https://www.loom.com/embed/e41353f2fe1c43eba6c6829693e0f2c5",
"title": "Eric Yuan: Simplicity Scales",
"description": null,
"durationSeconds": 210,
"thumbnailUrl": "https://cdn.loom.com/sessions/thumbnails/example.jpg",
"ownerName": "Loom",
"downloadable": true,
"media": {
"hlsUrl": "https://luna.loom.com/id/example/resource/hls/playlist.m3u8",
"dashUrl": "https://cdn.loom.com/sessions/raw/example-manifest.mpd",
"format": "dash"
},
"transcript": {
"status": "success",
"language": null,
"text": "All right. This is the lesson...",
"phrases": [
{
"startSeconds": 1.14,
"text": "All right. This is the lesson..."
}
],
"sourceUrl": "https://cdn.loom.com/..."
},
"captions": {
"vtt": "WEBVTT\n\n1\n00:00:01.140 --> 00:00:05.730\n...",
"sourceUrl": "https://cdn.loom.com/..."
},
"savedFile": {
"storageKey": "loom-video-e41353f2fe1c43eba6c6829693e0f2c5.mp4",
"downloadUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/loom-video-e41353f2fe1c43eba6c6829693e0f2c5.mp4?disableContentDisposition=true",
"contentType": "video/mp4",
"fileSizeBytes": 56272893
},
"status": "ok",
"statusReason": null,
"scrapedAt": "2026-06-11T18:00:00.000Z"
}

💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each public Loom video row saved to the dataset. Invalid, private, password-protected, permission-only, deleted, or unavailable targets are skipped and are not saved as dataset rows.

⚠️ Limits and caveats

This Actor works with public Loom videos only. It cannot access private videos, workspace-only videos, password-protected videos, deleted videos, or videos that require a Loom login.

MP4 saving depends on the media files Loom exposes during the run. If the MP4 asset cannot be assembled or stored for one public video, the Actor still saves the video row with source media URLs, metadata, transcript, captions when available, and a clear statusReason.

Transcript and caption fields appear only when Loom exposes transcript or WebVTT data for that video. The Actor does not create new transcripts with speech-to-text.

❓ FAQ

🔐 Do I need a Loom account?

No. The Actor is built for public Loom videos and does not ask for Loom cookies, a login, or an API key.

📥 Does it save MP4 files?

Yes, when Loom exposes media that can be assembled during the run. The saved MP4 appears in savedFile. If MP4 saving is unavailable for one video, the row still includes source media URLs.

📝 Does it return Loom transcripts?

Yes, when Loom exposes transcript data for the public video. The Actor returns plain transcript text and timestamped transcript phrases.

🎬 Can I download private or password-protected Looms?

No. Private, permission-only, password-protected, deleted, or login-required videos are skipped. This Actor does not bypass Loom access controls.

🗂️ Can it crawl a Loom folder?

No. Paste direct Loom video targets. Folder crawling and workspace library sync are outside this Actor.

📝 Changelog

  • 0.1: Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

🔗 Other actors

Made with ❤️ by Maxime Dupré