Loom Transcript API: Captions and Monitoring avatar

Loom Transcript API: Captions and Monitoring

Pricing

from $0.66 / 1,000 loom video scrape results

Go to Apify Store
Loom Transcript API: Captions and Monitoring

Loom Transcript API: Captions and Monitoring

Loom transcript scraper for public share, embed, iframe, and raw ID inputs. Export captions as TXT, segments, SRT, or VTT with metadata, deduplication, and NEW, UPDATED, UNCHANGED, or REMOVED monitoring events.

Pricing

from $0.66 / 1,000 loom video scrape results

Rating

0.0

(0)

Developer

GetAScraper

GetAScraper

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

9

Monthly active users

3 days ago

Last modified

Share

🎥 Loom Transcript API: Captions, Metadata and Knowledge Base Monitoring

Extract public Loom captions, metadata, subtitle files, and source-backed change events for a knowledge base, support workflow, or scheduled content audit.

Point this scraper at a public Loom share URL, embed URL, iframe snippet, or raw video ID. It returns native transcript formats and only the metadata Loom makes public. Optional monitoring keeps a source-backed history of new and changed videos. No login required.

🔍 What does this actor do?

This Actor reads public Loom videos and returns native transcripts in four formats, plus public metadata and engagement data when the source provides them. Optional monitor mode compares successful retrievals and emits NEW, UPDATED, UNCHANGED, or evidence-backed REMOVED events. It does not bypass access controls.

If a video has no native transcript, transcriptStatus is unavailable and the run still completes with available metadata. Language is included only when the native caption content explicitly states it.

🔔 Monitor a Loom knowledge base

Turn on Track new and changed videos, then schedule the same input. Each result includes NEW, UPDATED, or UNCHANGED, the specific changedFields, a transcript SHA-256 hash, and first/last-seen times. A record is marked REMOVED only when Loom explicitly returns HTTP 404. A failed request never deletes prior monitor state.

For conservative discovery, turn on Discover public Loom links from supplied Loom pages. The Actor only follows public share/embed links visibly present on that Loom page. It does not guess folder membership or bypass access controls.

🧑‍💼 Who uses this?

  • I am a customer success manager recording Loom walkthroughs for our clients. I need transcripts to publish as Zendesk help articles without paying a transcription service per video.
  • I am a content marketer repurposing 50 product demo Looms into SEO blog posts. I need clean plain text I can paste into my CMS without manually watching each video.
  • I am a compliance officer auditing our internal Loom library to confirm every customer-facing video has an accessible caption file (SRT or VTT) before our WCAG audit.
  • I am an AI engineer building a Loom-to-knowledge-base pipeline. I need timestamped transcript segments I can chunk and embed into a vector database for semantic search.
  • I am a product manager archiving sprint review Looms. I need full metadata (creator, date, view count, description) alongside the transcript so I can cross-reference with Jira tickets.

🚀 How to use

  1. Create a free account at apify.com if you do not have one.
  2. Open this actor and click Try for free.
  3. Paste one or more public Loom share URLs into the Loom video URLs field.
  4. Choose which transcript formats to include (plain text and segments are on by default).
  5. Click Save & Run.
  6. Download results from the Output tab in JSON, CSV, or Excel.

⚙️ Input

FieldTypeRequiredDescription
startUrlsarray of URLsYesPublic share URLs, embed URLs, iframe snippets, bare IDs, or public Loom pages for optional conservative discovery.
discoverFromPagesbooleanNoDiscover only visible public share/embed links from supplied Loom pages. Default: false.
transcriptFormatsarrayNoFormats to include: txt, segments, srt, vtt. Defaults to ["txt", "segments"].
skipVideosWithoutTranscriptbooleanNoSkip videos with no native captions entirely. Default: false.
includeEngagementStatsbooleanNoInclude view count, unique viewers, comments, and emoji reactions. Default: true.
includeVideoDownloadUrlbooleanNoInclude a direct MP4 download link when available. Default: true.
maxVideosintegerNoHard cap on videos processed per run. Set to 0 for no limit.
monitorModebooleanNoPersist source-backed NEW/UPDATED/UNCHANGED monitoring state. Default: false.
monitorNamestringNoOptional stable name for an independent saved monitor.
requestConcurrencyintegerNoNumber of videos to fetch in parallel. Default: 5. Decrease if you see rate-limit errors.
proxyConfigurationproxyNoProxy settings. Datacenter proxies work well for Loom. Default: Apify datacenter.

🧪 Store examples

Simple transcript

{
"startUrls": [{ "url": "https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6" }],
"transcriptFormats": ["txt", "segments"]
}

Batch subtitle export

{
"startUrls": [
{ "url": "https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6" },
{ "url": "912e89a68ccc42c5ab5096fec7cd63d6" }
],
"transcriptFormats": ["txt", "srt", "vtt"],
"maxVideos": 50
}

Recurring knowledge-base monitor

{
"startUrls": [{ "url": "https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6" }],
"monitorMode": true,
"monitorName": "support-knowledge-base",
"includeEngagementStats": false
}

📋 Data table

FieldTypeDescription
loomIdstringUnique 32-character Loom video ID.
urlstringPublic Loom share URL.
titlestringVideo title as set by the creator.
descriptionstringCreator-written video description.
privacystringVisibility setting: public, team, or private.
thumbnailUrlstringVideo thumbnail image URL.
creatorNamestringDisplay name of the video creator.
ownerIdstringCreator's Loom user ID.
ownerEmailstringCreator's email address, when publicly visible.
viewCountintegerTotal view count.
distinctViewCountintegerUnique viewer count.
commentCountintegerNumber of comments.
emojiCountintegerNumber of emoji reactions.
widthintegerVideo width in pixels.
heightintegerVideo height in pixels.
durationSecondsnumberVideo duration in seconds.
durationISO8601stringDuration in ISO 8601 format (e.g. PT5M55S).
createdAtstringISO 8601 timestamp when the video was recorded.
updatedAtstringISO 8601 timestamp of the last update.
uploadDatestringPublication date in YYYY-MM-DD format.
videoDownloadUrlstringMP4 download URL from page metadata when available. Signed URLs expire after a short period.
transcriptStatusstringWhether a native transcript was found: success or unavailable.
transcriptAvailabilitystringAVAILABLE only when native captions were supplied by Loom.
transcriptLanguagestringCaption language only where explicit native caption content supplies it.
changeTypestringNEW, UPDATED, UNCHANGED, or an evidence-backed REMOVED.
changedFieldsarrayPublished fields changed since the previous successful monitor retrieval.
transcriptHashstringSHA-256 digest of the native plain-text transcript, when available.
firstSeen / lastSeenstringMonitor timestamps for this video.
segmentCountintegerNumber of timed caption segments.
transcriptstringFull transcript as plain text. Included when transcriptFormats contains txt.
transcriptSegmentsarrayTimestamped array of {startSeconds, endSeconds, text} objects. Included when transcriptFormats contains segments.
transcriptSRTstringTranscript in SubRip subtitle format. Included when transcriptFormats contains srt.
transcriptVTTstringTranscript in WebVTT caption format. Included when transcriptFormats contains vtt.
scrapedAtstringISO 8601 timestamp when this record was extracted.

You can download the dataset in JSON, HTML, CSV, or Excel from the Output tab of any run.

📤 Sample output

{
"loomId": "912e89a68ccc42c5ab5096fec7cd63d6",
"url": "https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6",
"title": "Getting Started with Loom",
"description": "A quick walkthrough for new team members joining the onboarding flow.",
"privacy": "public",
"thumbnailUrl": "https://cdn.loom.com/sessions/thumbnails/912e89a6-00001.jpg",
"creatorName": "Chanel Lovell",
"ownerId": "a1b2c3d4e5f6",
"ownerEmail": "chanel@loom.com",
"viewCount": 3842,
"distinctViewCount": 2107,
"commentCount": 14,
"emojiCount": 23,
"width": 1920,
"height": 1080,
"durationSeconds": 355,
"durationISO8601": "PT5M55S",
"createdAt": "2023-08-19T00:19:41.112Z",
"updatedAt": "2023-09-02T14:30:00.000Z",
"uploadDate": "2023-08-19",
"videoDownloadUrl": "https://cdn.loom.com/sessions/raw/912e89a6.mp4?signature=abc123",
"transcriptStatus": "success",
"segmentCount": 87,
"transcript": "Hey, Chanel here from the Loom team. I'm going to show you how to get started with Loom...",
"transcriptSegments": [
{ "startSeconds": 1.154, "endSeconds": 4.774, "text": "Hey, Chanel here from the Loom team." },
{ "startSeconds": 4.774, "endSeconds": 7.704, "text": "I'm going to show you how to get started with Loom." }
],
"transcriptSRT": "1\n00:00:01,154 --> 00:00:04,774\nHey, Chanel here from the Loom team.\n\n2\n00:00:04,774 --> 00:00:07,704\nI'm going to show you how to get started with Loom.",
"transcriptVTT": "WEBVTT\n\n00:00:01.154 --> 00:00:04.774\nHey, Chanel here from the Loom team.\n\n00:00:04.774 --> 00:00:07.704\nI'm going to show you how to get started with Loom.",
"scrapedAt": "2026-06-29T12:00:00.000Z"
}

💰 Pricing

The local PPE configuration charges the Processed Loom video event only for a successfully retrieved video that is not an unchanged monitor row. Failed retrievals, removed evidence, unchanged monitor rows, and dataset audit rows have no result charge. Current Store tiers are:

VolumePrice per 1,000 processed videos
Free$0.88
Bronze$0.81
Silver$0.74
Gold and above$0.66

There are no monthly subscriptions or minimum commitments.

⭐ Enjoying Loom Transcript Scraper?

⭐ ⭐ ⭐ ⭐ ⭐
If this is saving you the cost of a separate transcription service for every Loom video, tell us about it.
A 5-star rating takes 10 seconds and helps other support teams and content marketers find this Actor. Your feedback also tells us what to build next.
★  Rate this Actor on Apify

✨ Tips

  • Batch large libraries. Paste up to hundreds of URLs at once. Use maxVideos to run a sample first and confirm results before committing a full run.
  • LLM pipelines. Use the segments format to get pre-chunked text with start and end timestamps. Each segment maps cleanly to a vector database chunk without any additional splitting logic.
  • Subtitle workflows. Add srt or vtt to transcriptFormats if you need caption files for video players or accessibility tools. Both formats are included in the same run at no extra cost.
  • Unavailable transcripts. Loom only generates native transcripts for videos where the creator enables captions. If transcriptStatus is unavailable, the video likely has captions disabled. The actor still returns all available metadata for that video.

❓ FAQ

Does this actor work on private Loom videos?

No. This actor only reads public Loom share URLs accessible without a login. Videos set to "private" or restricted to a specific workspace return no data.

What happens if a video has no transcript?

The actor still extracts all available metadata (title, creator, views, thumbnail, dates) and sets transcriptStatus to unavailable. You are not charged for runs where the transcript extraction fails.

How fresh is the data?

Every run fetches live data directly from Loom. Results reflect the current state of the video page at the time of the run, including the latest view count, comment count, and any updated description.

This actor only reads publicly accessible Loom pages, the same pages any browser user can open without logging in. You are responsible for complying with Loom's terms of service and applicable data protection laws in your jurisdiction. For questions or custom solutions, contact the author at devanshtiwari365@gmail.com.

🔗 Other actors