# 🚀 Vimeo Video Scraper 🛠️ (`scrapearchitect/vimeo-video-scraper`) Actor

🚀 Extract Vimeo video metadata 📊: Resolutions 🖼️, codecs 🔧, likes ❤️, comments 💬, channels 📺! Bulk URLs 🔄, proxy-ready 🌐. For devs 🛠️, analysts 📈, archivists 🗄️ No downloads needed! Fast⚡& encrypted 🛡️🚀 Vimeo Video Scraper 🛠️

- **URL**: https://apify.com/scrapearchitect/vimeo-video-scraper.md
- **Developed by:** [Scrape Architect](https://apify.com/scrapearchitect) (community)
- **Categories:** Videos, Developer tools, Automation
- **Stats:** 15 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$8.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

***

## 🚀 Vimeo Video Scraper – Metadata Extraction Suite 📊

**Unlock 50+ technical & engagement metrics** • Resolution specs 🖼️ • Codec details 🔧 • Channel analytics 📈 • Bulk URL processing 🔄

***

### 🌟 Overview

This professional-grade Vimeo scraper extracts **rich video metadata** without downloads. Perfect for:\
✅ Content analysts 📉\
✅ Video QA teams 🧪\
✅ Developer integrations 🛠️\
✅ SEO strategists 🔍\
✅ Archival projects 🗄️

**Extracts**:

- 📽️ Resolution/FPS/Codec specs
- 📅 Upload dates & timestamps
- 📊 Engagement metrics (likes/comments)
- 🖼️ Thumbnail URLs & dimensions
- 📺 Channel ownership details
- 🔧 10+ technical streaming parameters

> ⏱️ Avg. runtime: 15-45s per video • 🛡️ Auto-retry & proxy support

***

### 🔥 Key Features

#### 📊 Metadata Mastery

| Category | Extracted Data |\
|----------|----------------|\
| **Core** | Titles • Descriptions • Durations • Thumbnails |\
| **Tech** | Resolutions • FPS • Codecs • Aspect ratios • Bitrates |\
| **Engagement** | Likes • Comments • View counts (when available) |\
| **Channel** | Owner names • Profile URLs • Release timelines |

#### 🔧 Technical Insights

- **Codec Analysis**: AVC/H.264 specifications
- **Stream Anatomy**: Manifest URLs • Protocol details
- **Quality Metrics**: TBR/VBR/ABR bitrate tracking
- **DRM Status**: Has\_drm flag detection

#### 🛠️ Enterprise-Grade

- **Bulk Processing**: Handle 100+ URLs per run
- **Proxy Rotation**: Bypass geo/IP restrictions
- **Auto-Validation**: Filter invalid/broken links
- **Epoch Timestamps**: 1712053062 → "2024-04-02"

***

### ⚙️ Input Configuration

```json
{
  "video_urls": [
    {
      "url": "https://vimeo.com/693117164",
      "method": "GET"
    }
  ]
}
```

#### 📋 Input Parameters

| Field | Type | Description |\
|-------|------|-------------|\
| `video_urls` | Array | Vimeo video URLs (1-100+ items) |\
| `url` | String | Valid Vimeo link (supports embeds/private) |\
| `method` | String | `GET` (HTTP method) |

***

### 📤 Output Example (Abridged)

```json
[
  {
    "important": {
      "original_url": "https://vimeo.com/929824958?autoplay=1&muted=1&stream_id=%E2%80%A6",
      "title": "[Architect A X KCRP] A small garden by the window",
      "description": "Architect A X KCRP\n\nExecutive Producer: Jungmin Lee\n…",
      "thumbnail": "https://i.vimeocdn.com/video/1826213027-%E2%80%A6-d",
      "duration": "4m 35s",
      "upload_date": "2024-04-02",
      "like_count": 432,
      "comment_count": 12
    },
    "channel": {
      "channel": "VCRWORKS",
      "channel_url": "https://vimeo.com/vcrworks"
    },
    "video": {
      "width": 1920,
      "height": 1080,
      "fps": 24,
      "tbr": 5381,
      "format_id": "hls-fastly_skyfire-5381+…",
      "protocol": "m3u8_native+m3u8_native",
      "formats": [
        {
          "format_id": "hls-fastly_skyfire-5381",
          "url": "https://skyfire.vimeocdn.com/%E2%80%A6/media.m3u8?%E2%80%A6",
          "ext": "mp4",
          "resolution": "1920x1080",
          "fps": 24
        },
        {
          "format_id": "hls-fastly_skyfire-audio-high-English",
          "format_note": "English",
          "ext": "mp4",
          "resolution": "audio only"
        }
      ]
    },
    "audio": {
      "language": "en"
    },
    "subtitles": {
      "subtitles": {}
    },
    "technical": {
      "extractor": "vimeo",
      "timestamp": 1712053062,
      "formats": [
        {
          "format_id": "hls-fastly_skyfire-5381",
          "manifest_url": "https://…/playlist.m3u8?…",
          "has_drm": false
        }
      ]
    }
  }
]

```

#### 🗝️ Output Field Breakdown

**Core Metadata**\
| Field | Description |\
|-------|-------------|\
| `provided_resolution` | Auto-detected display resolution |\
| `upload_date` | ISO 8601 date (YYYY-MM-DD) |\
| `like_count` | Engagement metrics (if public) |

**Technical Specs**\
| Field | Description |\
|-------|-------------|\
| `vcodec` | Video compression standard |\
| `protocol` | Streaming tech (m3u8/DASH) |\
| `bitrate` | Kilobits-per-second (VBR/ABR) |

**Channel Data**\
| Field | Description |\
|-------|-------------|\
| `channel` | Account/organization name |\
| `channel_url` | Direct profile link |

***

### 🆚 Why This Scraper?

| Feature | 🚀 This Actor | 🐌 Generic Tools |\
|---------|---------------|------------------|\
| Metadata Depth | 50+ Fields | <10 Fields |\
| Codec Analysis | ✅ Full Specs | ❌ Surface-Level |\
| Bulk Capacity | 100+ URLs | Single Videos |\
| Timestamp Formats | Epoch + ISO | Single Format |\
| Enterprise Ready | Proxy + Retry | No Fail-safes |

***

### 🛠️ How It Works

1️⃣ **Add Vimeo URLs** – Single videos or entire channels\
2️⃣ **Run Actor** – Auto-detects public/private content\
3️⃣ **Get**:

- 📄 Full technical manifests
- 📈 Engagement analytics
- 📺 Channel attribution
- 🔍 Deep format analysis

***

### 💡 Use Cases

**Media Analysts**

- Benchmark video encoding quality
- Track resolution adoption rates

**Developers**

- Build video CMS integrations
- Auto-generate tech spec reports

**Archivists**

- Preserve streaming format history
- Catalog channel ownership changes

**QA Teams**

- Validate bitrate compliance
- Monitor DRM implementation

***

### ❓ Troubleshooting

**Issue**: Missing `like_count`/`comment_count`\
**Fix**:

- Source video must have public stats enabled
- Use canonical URLs (non-embeds)

**Issue**: "Invalid manifest\_url"\
**Fix**:

- Check URL format (must be Vimeo native)
- Retry with `method: GET`

***

# Actor input Schema

## `video_urls` (type: `array`):

⚠️ Important ⚠️: Enter Vimeo video URLs (one per line or multiple entries)

## Actor input object example

```json
{
  "video_urls": [
    {
      "url": "https://vimeo.com/693117164"
    },
    {
      "url": "https://vimeo.com/929824958?autoplay=1&muted=1&stream_id=Y2hhbm5lbHw5Mjd8aWQ6ZGVzY3x7InJlbW92ZV92b2RfdGl0bGVzIjpmYWxzZX0%3D"
    }
  ]
}
```

# 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 = {
    "video_urls": [
        {
            "url": "https://vimeo.com/693117164"
        },
        {
            "url": "https://vimeo.com/929824958?autoplay=1&muted=1&stream_id=Y2hhbm5lbHw5Mjd8aWQ6ZGVzY3x7InJlbW92ZV92b2RfdGl0bGVzIjpmYWxzZX0%3D"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapearchitect/vimeo-video-scraper").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 = { "video_urls": [
        { "url": "https://vimeo.com/693117164" },
        { "url": "https://vimeo.com/929824958?autoplay=1&muted=1&stream_id=Y2hhbm5lbHw5Mjd8aWQ6ZGVzY3x7InJlbW92ZV92b2RfdGl0bGVzIjpmYWxzZX0%3D" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapearchitect/vimeo-video-scraper").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 '{
  "video_urls": [
    {
      "url": "https://vimeo.com/693117164"
    },
    {
      "url": "https://vimeo.com/929824958?autoplay=1&muted=1&stream_id=Y2hhbm5lbHw5Mjd8aWQ6ZGVzY3x7InJlbW92ZV92b2RfdGl0bGVzIjpmYWxzZX0%3D"
    }
  ]
}' |
apify call scrapearchitect/vimeo-video-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapearchitect/vimeo-video-scraper"
        }
    }
}

```

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/ZLiY8fWMa98exUBgV/builds/1sFvrES09BnLTi46k/openapi.json
