# Vimeo AI Transcript Extractor (`sian.agency/vimeo-ai-transcript-extractor`) Actor

Vimeo video transcript extractor. Address by video URL or bulk list. Returns a transcript from the video's own captions or AI speech-to-text, with word-level timestamps, SRT and WebVTT, optional translation, and full video metadata.

- **URL**: https://apify.com/sian.agency/vimeo-ai-transcript-extractor.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Videos, AI, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.84 / 1,000 transcribed videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Vimeo Transcript Extractor — Video to Text + SRT 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Instagram Transcript](https://img.shields.io/badge/Store-Instagram%20Transcript-E4405F)](https://apify.com/sian.agency/instagram-ai-transcript-extractor?fpr=sian) [![TikTok Transcript](https://img.shields.io/badge/Store-TikTok%20Transcript-25F4EE)](https://apify.com/sian.agency/best-tiktok-ai-transcript-extractor?fpr=sian) [![YouTube Transcript](https://img.shields.io/badge/Store-YouTube%20Transcript-FF0000)](https://apify.com/sian.agency/youtube-ai-transcript-extractor?fpr=sian)

#### 🎉 Public Vimeo videos to clean text — captions when they exist, speech-to-text when they don't

##### Built for editors, researchers, agencies and RAG pipelines that need SRT, WebVTT and metadata in one run

***

### 🔎 What is the Vimeo AI Transcript Extractor — and when should you use it?

The **Vimeo AI Transcript Extractor** turns a public Vimeo video URL into a transcript, timestamped segments, SRT/WebVTT files and creator metadata. It uses the video's own caption track when there is one and transcribes the audio when there isn't. No Vimeo account. No API key.

**Use it when you need:** a Vimeo transcript, subtitle files, word timestamps, optional translation, or video metadata from a public or unlisted link.

**Use something else when:** the video is on YouTube, Instagram, TikTok or Facebook. Use [YouTube AI Transcript Extractor](https://apify.com/sian.agency/youtube-ai-transcript-extractor?fpr=sian) for YouTube. Use [Instagram AI Transcript Extractor](https://apify.com/sian.agency/instagram-ai-transcript-extractor?fpr=sian) for Reels.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/vimeo-ai-transcript-extractor

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want Vimeo video transcripts using the Apify Actor `sian.agency/vimeo-ai-transcript-extractor`.

Use it when I need: a public Vimeo transcript, SRT or WebVTT subtitles, timestamped segments, optional translation, and video metadata.

Don't use it when: the video is on YouTube — use youtube-ai-transcript-extractor instead.

How to call it: pass `vimeoUrl` for one video or `bulkUrls` for many. Leave `captionMode` on `auto` unless you want captions-only or AI-only. Audio transcription is capped at 30 minutes per video.

Start with this input:
{
  "vimeoUrl": "https://vimeo.com/76979871",
  "captionMode": "auto"
}

Ask me which Vimeo URLs to transcribe, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Transcribe this Vimeo staff film and give me an SRT file.*
- *Pull transcripts from these five Vimeo links and list title, duration and language.*
- *Translate this Vimeo transcript into French and keep the original timing.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/vimeo-ai-transcript-extractor.md](https://apify.com/sian.agency/vimeo-ai-transcript-extractor.md).

***

### 📋 Overview

**Paste a Vimeo URL. Get the spoken text back.** Editors, researchers and agencies use it when they need subtitles, a searchable archive, or clean text for an LLM.

**Why teams pick this actor:**

- ✅ **Captions first**: uses the video's own track when one exists
- ⚡ **AI fallback**: transcribes the audio when there is no public track — failed URLs are never billed
- 🎯 **Timestamped output**: segments, optional speaker labels, SRT and WebVTT
- 💰 **Pay per success**: failed URLs are not billed
- 💎 **Same family as our Instagram, TikTok, Facebook and YouTube extractors**
- ✨ **NEW**: bulk lists, translation into 100+ languages, full video metadata on every row

***

### ✨ Features

- 📝 **Native captions**: reads the public text track Vimeo already publishes
- 🎙️ **Speech-to-text fallback**: covers videos that never uploaded captions
- 📜 **SRT + WebVTT**: drop the files into an editor the same day
- 🔤 **Word timestamps**: available on the AI path
- 🗣️ **Speaker labels**: optional, on the AI path
- 🌍 **100+ language translation**: paid add-on, charged per 1,000 characters
- 📦 **Bulk lists**: five videos on a free Apify plan, unlimited when you pay
- 👤 **Creator metadata**: title, duration, owner, thumbnail, embed URL

***

### 🎬 Quick Start

Open a public Vimeo video. Copy the URL. Run the actor. Read the dataset.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~vimeo-ai-transcript-extractor/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"vimeoUrl": "https://vimeo.com/76979871"}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Copy the Vimeo URL

Use the address bar on a public video. Channel, player and unlisted-hash links all work.

#### Step 2: Paste it into the actor

Single field for one video. Bulk list for many.

#### Step 3: Run and export

Open the dataset. Download JSON, CSV or the SRT field.

**That's it. In about a minute you will have:**

- The full transcript
- Timestamped segments
- SRT and WebVTT text

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| vimeoUrl | string | No | One public Vimeo video URL or numeric id |
| bulkUrls | array | No | Many URLs for one run |
| captionMode | string | No | auto, captions, or ai |
| speakerDiarization | boolean | No | Speaker labels on the AI path |
| translateTo | string | No | Paid translation target |

**Example:**

```json
{
  "vimeoUrl": "https://vimeo.com/76979871"
}
```

**Bulk processing:**

```json
{
  "bulkUrls": [
    { "url": "https://vimeo.com/76979871" },
    { "url": "https://vimeo.com/347119375" }
  ]
}
```

***

### 📤 Output

Results land in the Apify dataset. Typical fields:

| Field | Type | Description |
|-------|------|-------------|
| transcript | string | Full spoken text |
| segments | array | Timestamped cues |
| srtSubtitles | string | SRT file body |
| vttSubtitles | string | WebVTT file body |
| detected\_language | string | Caption or audio language |
| transcriptSource | string | captions or ai |
| videoTitle | string | Vimeo title |
| duration | number | Length in seconds |
| ownerName | string | Uploader name |
| thumbnailUrl | string | Poster image |
| vimeoUrl | string | Canonical video URL |

**Example:**

```json
{
  "transcript": "Here at Vimeo, there's always one thing on our minds.",
  "detected_language": "en",
  "transcriptSource": "captions",
  "videoTitle": "The New Vimeo Player (You Know, For Videos)",
  "duration": 62,
  "ownerName": "Vimeo",
  "vimeoUrl": "https://vimeo.com/76979871",
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. Subtitle a client film

**An editor needs SRT tonight.**

**Input:** the Vimeo review link
**Output:** SRT + WebVTT + full text
**Use:** drop the file into Premiere or Resolve

#### 2. Archive a conference channel

**A researcher wants searchable talk text.**

**Input:** a bulk list of session URLs
**Output:** one row per talk
**Use:** load JSON into a notes vault or database

#### 3. Localise a product video

**A marketer needs French copy from an English Vimeo cut.**

**Input:** URL + translateTo FR
**Output:** original transcript plus translatedTranscript
**Use:** captions and landing-page copy

#### 4. Feed a RAG pipeline

**An agency indexes spoken product demos.**

**Input:** scheduled bulk run
**Output:** clean text + metadata
**Use:** chunk and embed

#### 5. Accessibility pass

**A university publishes public lectures on Vimeo.**

**Input:** each lecture URL
**Output:** captions even when the file had none
**Use:** publish WebVTT next to the player

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/vimeo-ai-transcript-extractor').call({
  vimeoUrl: 'https://vimeo.com/76979871'
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].transcript);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/vimeo-ai-transcript-extractor').call(
    run_input={'vimeoUrl': 'https://vimeo.com/76979871'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item.get('transcript'))
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~vimeo-ai-transcript-extractor/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"vimeoUrl": "https://vimeo.com/76979871"}'
```

#### Automation workflows

1. **Trigger**: schedule or webhook
2. **HTTP request**: start this actor
3. **Process**: read the dataset
4. **Action**: save SRT, notify, or translate

***

### 📊 Performance & Pricing

#### FREE Apify plan

- **5 videos** per run — same transcript quality
- No credit card required
- Good for a first test

#### PAID Apify plan

- **Unlimited** videos per run
- Translation add-on
- Pay per successful transcript

You only pay for rows that produced a transcript.

[View current pricing](https://apify.com/sian.agency/vimeo-ai-transcript-extractor?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many videos can I process?**
A: Free Apify plan: 5 per run. Paid plan: unlimited.

**Q: Does it work with private videos?**
A: No. Public and unlisted videos only.

**Q: What if the video has no captions?**
A: Auto and AI mode transcribe the audio instead, up to 30 minutes per video. Captions-only mode returns an error and does not charge.

**Q: What output formats are available?**
A: JSON, CSV, Excel from the dataset. SRT and WebVTT as fields on each row.

**Q: How accurate is the transcript?**
A: Native captions match what the uploader published. Speech-to-text quality follows the audio: clean voice tracks do better than music beds.

**Q: How long does a run take?**
A: A captioned one-minute video is usually under 30 seconds. Speech-to-text follows audio length.

**Q: Is this legal?**
A: We only read publicly available pages and tracks. See the legal section.

***

### 🐛 Troubleshooting

**"Not a usable Vimeo URL"**

- Use the full https://vimeo.com/ID link
- Channel and player links also work

**"This Vimeo video is private or restricted"**

- Open the URL in a private window
- Password and private videos cannot be read

**"No public captions and no downloadable audio"**

- The file is DRM-only and has no text track
- Try another public video, or ask the owner for a caption file

**Empty transcript**

- Silent or music-only clips produce no speech
- You are not charged when there is no transcript

***

### ⚖️ Is it legal to scrape data?

Our actors do not extract private user data such as email addresses. They only extract what the uploader chose to share publicly. We believe they are safe when used for ethical purposes by Apify users.

Results can still contain personal data. Personal data is protected by the **GDPR** in the European Union and by other rules around the world. Do not scrape personal data unless you have a legitimate reason. If you are unsure, consult a lawyer.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### ⚠️ Trademark Disclaimer

Vimeo is a trademark of Vimeo.com, Inc. This actor is not affiliated with, endorsed by, or sponsored by Vimeo. It reads publicly available pages and caption tracks.

***

### 🤝 Support

**Join our support community**

- Open an issue on the actor page
- Browse [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian)
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/vimeo-ai-transcript-extractor/changelog.md

# Actor input Schema

## `vimeoUrl` (type: `string`):

🎬 **SINGLE VIDEO:** transcribe one public Vimeo video per run.

📱 Open the video → copy the address bar → paste here.

✅ **Works:** vimeo.com/ID, player.vimeo.com/video/ID, channel and showcase links, unlisted videos with a hash, bare numeric IDs.

❌ **Not supported:** private videos, password pages, DRM-only videos with no captions, live events still in progress.

💡 For several videos use **Bulk Vimeo URLs** below instead.

## `bulkUrls` (type: `array`):

🚀 **BULK PROCESSING:** transcribe many public Vimeo videos in a single run.

💰 **Tier limits:** FREE accounts **5 URLs per run**; paid accounts unlimited.

📝 **Bulk edit** — paste one URL per line.
📁 **Upload a .txt file** — line breaks and commas all work.
🔗 **+ Add** — enter URLs one at a time.

⚠️ Provide **either** a single URL **or** bulk URLs — at least one is required.

## `captionMode` (type: `string`):

📝 **WHERE THE TEXT COMES FROM.**

• **Auto (default)** — use the video's own captions when they exist; transcribe the audio when they don't.
• **Captions only** — never transcribe. Videos with no public track return an error and are not charged.
• **AI only** — always transcribe the audio, even when captions exist.

💡 Auto is the cheapest path for captioned professional videos and still covers videos that have none. Audio transcription is capped at 30 minutes per video.

## `speakerDiarization` (type: `boolean`):

🗣️ **WHO SAID WHAT:** labels every segment and word with a speaker id when the audio is transcribed.

🆓 **Free** on both free and paid accounts.

💡 Only applies when the AI path runs. Native caption tracks have no speaker ids.
Leave it off for single-speaker videos — off is faster.

## `translateTo` (type: `string`):

🔒 **Paid plans only** — free-tier runs keep the original language, uncharged.

🌍 Translates into **100+ languages**. Source language is auto-detected.

💰 **Charged per 1,000 transcript characters** (a short film credit is usually 1 unit).

📊 Adds `translatedTranscript`; `transcript`, `segments` and timestamps stay in the source language.

## Actor input object example

```json
{
  "vimeoUrl": "https://vimeo.com/76979871",
  "captionMode": "auto",
  "speakerDiarization": false
}
```

# Actor output Schema

## `vimeoTranscripts` (type: `string`):

Dataset of transcripts, timestamped segments, SRT/VTT and video metadata

## `scrapingSummary` (type: `string`):

HTML summary of successful and failed videos with key metrics

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "vimeoUrl": "https://vimeo.com/76979871",
    "captionMode": "auto"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/vimeo-ai-transcript-extractor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "vimeoUrl": "https://vimeo.com/76979871",
    "captionMode": "auto",
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/vimeo-ai-transcript-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "vimeoUrl": "https://vimeo.com/76979871",
  "captionMode": "auto"
}' |
apify call sian.agency/vimeo-ai-transcript-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/vimeo-ai-transcript-extractor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/EJbxtJIhmgT9vQoJq/builds/4xbo9wzLC4ZPzCagq/openapi.json
