Loom Transcript Scraper And Formatter avatar
Loom Transcript Scraper And Formatter

Pricing

$5.00/month + usage

Go to Apify Store
Loom Transcript Scraper And Formatter

Loom Transcript Scraper And Formatter

Developed by

Matthew James

Matthew James

Maintained by Community

Grabs and formats transcripts from Loom in plain text, VTT, and SRT, along with other video metadata. Supports multispeaker meetings. Easy to implement in your automation workflows.

3.4 (5)

Pricing

$5.00/month + usage

7

51

10

Issues response

1.1 days

Last modified

9 days ago

Quick Start Loom

Features

  • Gets Loom transcript from URLs, useful for incorporating into your workflow automations.
  • Multi-speaker support: Automatically detects and labels speakers in multi-speaker Loom videos.
  • Flexible formatting: Choose between preserving individual timestamp accuracy or grouping consecutive speaker segments for readability.
  • Gets extra video details like creator name, upload date, and duration.
  • Supports multiple URLs.
  • Returns errors if unsuccessful and which URLs it had problems with.

Headers and Descriptions for Extracted Data

Basic Fields

  • Creator: Display name of the account that uploaded the Loom.
  • Title: Title of the Loom.
  • Transcript: The transcript of the Loom in plain text (with line breaks between speakers for multi-speaker content).
  • Transcript VTT: The transcript of the Loom in VTT format (with speaker labels when available).
  • Transcript SRT: The transcript of the Loom in SRT format (with speaker labels when available).
  • URL: The input URL of the Loom.
  • Duration: The duration of the Loom in HH:MM:SS format.
  • Duration ISO8601: The duration of the Loom in ISO8601 format.
  • Upload Date: The upload date of the Loom in YYYY-MM-DD format.
  • UploadDate ISO8601: The upload date of the Loom in ISO8601 format.
  • Error: Any errors encountered.

Multi-Speaker Fields

  • Speakers: Array of speaker names detected in the video (null for single-speaker content).
  • Speaker Count: Number of unique speakers detected (null for single-speaker content).
  • Speaker Segment Grouping: Boolean indicating whether consecutive speaker segments were grouped together.

Configuration

Speaker Segment Grouping

The speakerSegmentGrouping parameter controls how multi-speaker transcripts are formatted:

  • false (default): Preserves individual segment timing accuracy. Each phrase gets its own timestamp, ideal for precise timing requirements.
  • true: Groups consecutive segments from the same speaker together for improved readability, combining timestamps for speaker sections.

Example difference:

  • Individual segments: Short, precise timestamps per phrase
  • Grouped segments: Longer, combined sections per speaker turn

Example Output

Single-Speaker Content

[
{
"url": "https://www.loom.com/share/3dd45fa63b3748cd816c8f9549febcc9",
"transcript": "In this video, I'm going to show you how to get this actor set up and integrated into your workflows right away. So we're going to want to get the endpoint here. And we want to make sure that we get the endpoint that is here that says run actor synchronously and get data set items. Next, I'm going to copy this example input here. Now in your platform of choice, make sure you have a manual set up to send an HTTP post request to your own unique URL. And now I'm going to paste in the example input here. This actor supports multiple URLs, but for the sake of this example, I'm just going to use one URL for now. The example loom I'm going to use is this demo from loom itself here. I'm going to copy this link. I'm going to go back and I'm going to paste this in here. Now ideally, this would be a variable, but for the sake of this test, I'm just going to hard-code it. Now I'm going to run and test this step. All right, so the results came back. Let's open this up. And we'll see the URL of the loom that we transcribed. This is the entire transcript of that loom. And we'll see that there are no errors here. If there is an error, it will tell you what the error was. So for example, if you're trying to transcribe a private or you are all that's not formatted correctly, basically you'll see the error here, but error null is a good thing, which means that there is no error that came in. And then from here, we can just send this transcript into an LLM, into ChatGPT or Cloud or anything like that. Another step. And we also have the loom URL here as a reference so that way we know where the transcript came from. All right. Hope this helps. Thanks, guys.",
"transcriptVTT": "WEBVTT\n\n00:00:02.000 --> 00:00:08.000\nIn this video, I'm going to show you how to get this actor set up and integrated into your workflows right away.\n\n00:00:08.000 --> 00:00:18.000\nSo we're going to want to get the endpoint here. And we want to make sure that we get the endpoint that is here that says run actor synchronously and get data set items.\n\n00:00:18.000 --> 00:00:30.000\nNext, I'm going to copy this example input here. Now in your platform of choice, make sure you have a manual set up to send an HTTP post request to your own unique URL.\n\n00:00:30.000 --> 00:00:40.000\nAnd now I'm going to paste in the example input here. This actor supports multiple URLs, but for the sake of this example, I'm just going to use one URL for now.\n\n00:00:40.000 --> 00:00:48.000\nThe example loom I'm going to use is this demo from loom itself here. I'm going to copy this link. I'm going to go back and I'm going to paste this in here.\n\n00:00:48.000 --> 00:00:55.000\nNow ideally, this would be a variable, but for the sake of this test, I'm just going to hard-code it. Now I'm going to run and test this step.\n\n00:00:55.000 --> 00:01:02.000\nAll right, so the results came back. Let's open this up. And we'll see the URL of the loom that we transcribed.\n\n00:01:02.000 --> 00:01:12.000\nThis is the entire transcript of that loom. And we'll see that there are no errors here. If there is an error, it will tell you what the error was.\n\n00:01:12.000 --> 00:01:25.000\nSo for example, if you're trying to transcribe a private or you are all that's not formatted correctly, basically you'll see the error here, but error null is a good thing, which means that there is no error that came in.\n\n00:01:25.000 --> 00:01:31.000\nAnd then from here, we can just send this transcript into an LLM, into ChatGPT or Cloud or anything like that.\n\n00:01:31.000 --> 00:01:38.000\nAnother step. And we also have the loom URL here as a reference so that way we know where the transcript came from.\n\n00:01:38.000 --> 00:01:40.056\nAll right. Hope this helps. Thanks, guys.",
"transcriptSRT": "1\n00:00:02,000 --> 00:00:08,000\nIn this video, I'm going to show you how to get this actor set up and integrated into your workflows right away.\n\n2\n00:00:08,000 --> 00:00:18,000\nSo we're going to want to get the endpoint here. And we want to make sure that we get the endpoint that is here that says run actor synchronously and get data set items.\n\n3\n00:00:18,000 --> 00:00:30,000\nNext, I'm going to copy this example input here. Now in your platform of choice, make sure you have a manual set up to send an HTTP post request to your own unique URL.\n\n4\n00:00:30,000 --> 00:00:40,000\nAnd now I'm going to paste in the example input here. This actor supports multiple URLs, but for the sake of this example, I'm just going to use one URL for now.\n\n5\n00:00:40,000 --> 00:00:48,000\nThe example loom I'm going to use is this demo from loom itself here. I'm going to copy this link. I'm going to go back and I'm going to paste this in here.\n\n6\n00:00:48,000 --> 00:00:55,000\nNow ideally, this would be a variable, but for the sake of this test, I'm just going to hard-code it. Now I'm going to run and test this step.\n\n7\n00:00:55,000 --> 00:01:02,000\nAll right, so the results came back. Let's open this up. And we'll see the URL of the loom that we transcribed.\n\n8\n00:01:02,000 --> 00:01:12,000\nThis is the entire transcript of that loom. And we'll see that there are no errors here. If there is an error, it will tell you what the error was.\n\n9\n00:01:12,000 --> 00:01:25,000\nSo for example, if you're trying to transcribe a private or you are all that's not formatted correctly, basically you'll see the error here, but error null is a good thing, which means that there is no error that came in.\n\n10\n00:01:25,000 --> 00:01:31,000\nAnd then from here, we can just send this transcript into an LLM, into ChatGPT or Cloud or anything like that.\n\n11\n00:01:31,000 --> 00:01:38,000\nAnother step. And we also have the loom URL here as a reference so that way we know where the transcript came from.\n\n12\n00:01:38,000 --> 00:01:40,056\nAll right. Hope this helps. Thanks, guys.",
"title": "Loom Transcript Grabber Overview",
"uploadDateISO8601": "2024-12-06T14:17:58.802Z",
"durationISO8601": "PT100.056S",
"uploadDate": "2024-12-06",
"duration": "00:01:40",
"creator": "Matthew James",
"error": null,
"speakers": null,
"speakerCount": null,
"speakerSegmentGrouping": false
}
]

Multi-Speaker Content

[
{
"url": "https://www.loom.com/share/multi-speaker-example",
"transcript": "Welcome to our team meeting.\nJohn Doe: Thank you for joining today. Let's start with the project updates.\nJane Doe: The frontend development is progressing well. We should have the new features ready by next week.\nJohn Doe: That's great news. How about the backend integration?\nJane Doe: We're working on the API endpoints and should have them completed soon.",
"transcriptVTT": "WEBVTT\n\n00:00:00.000 --> 00:00:02.500\nWelcome to our team meeting.\n\n00:00:02.500 --> 00:00:08.000\nJohn Doe: Thank you for joining today. Let's start with the project updates.\n\n00:00:08.000 --> 00:00:15.000\nJane Doe: The frontend development is progressing well. We should have the new features ready by next week.",
"transcriptSRT": "1\n00:00:00,000 --> 00:00:02,500\nWelcome to our team meeting.\n\n2\n00:00:02,500 --> 00:00:08,000\nJohn Doe: Thank you for joining today. Let's start with the project updates.\n\n3\n00:00:08,000 --> 00:00:15,000\nJane Doe: The frontend development is progressing well. We should have the new features ready by next week.",
"title": "Team Meeting - Project Updates",
"uploadDateISO8601": "2024-12-07T10:30:00.000Z",
"durationISO8601": "PT180S",
"uploadDate": "2024-12-07",
"duration": "00:03:00",
"creator": "John Doe",
"error": null,
"speakers": ["John Doe", "Jane Doe"],
"speakerCount": 2,
"speakerSegmentGrouping": false
}
]

Usage for Workflows

Payload to add your own custom inputs when making an API call:

{
"loomUrls":[
{
"url":"https://www.loom.com/share/valid-video-id"
},
{
"url":"https://www.loom.com/share/invalid-video-id"
},
{
"url":"https://www.example.com"
}
],
"speakerSegmentGrouping": false
}

Parameters:

  • loomUrls: Array of Loom URLs to process (required)
  • speakerSegmentGrouping: Boolean to control speaker segment formatting (optional, default: false)

Example of output with errors / invalid URLs

[
{
"url": "https://www.loom.com/share/valid-video-id",
"transcript": "The transcript of the Loom",
"transcriptVTT": "WEBVTT\n\n00:00:00.000 --> 00:00:05.000\nThe transcript of the Loom",
"transcriptSRT": "1\n00:00:00,000 --> 00:00:05,000\nThe transcript of the Loom",
"title": "Title of the Loom.",
"uploadDateISO8601": "2024-01-01T00:00:00.000Z",
"durationISO8601": "PT100S",
"uploadDate": "2024-01-01",
"duration": "00:01:40",
"creator": "Creator Name",
"error": null,
"speakers": null,
"speakerCount": null,
"speakerSegmentGrouping": false
},
{
"url": "https://www.loom.com/share/invalid-video-id",
"transcript": null,
"transcriptVTT": null,
"transcriptSRT": null,
"title": null,
"uploadDateISO8601": null,
"durationISO8601": null,
"uploadDate": null,
"duration": null,
"creator": null,
"error": "Transcript not found",
"speakers": null,
"speakerCount": null,
"speakerSegmentGrouping": false
},
{
"url": "https://www.example.com",
"transcript": null,
"transcriptVTT": null,
"transcriptSRT": null,
"title": null,
"uploadDateISO8601": null,
"durationISO8601": null,
"uploadDate": null,
"duration": null,
"creator": null,
"error": "404 page not found",
"speakers": null,
"speakerCount": null,
"speakerSegmentGrouping": false
}
]

Make sure to call with /run-sync-get-dataset-items so that you can use the response within the workflow.