# Vimeo API

> Vimeo returns public video details, creator information, and engagement counts as a workflow and API.

Vimeo (Vimeo.com) Get video returns a public video’s title, description, tags, length, upload date, thumbnail, and link; it needs a video link. Get video also returns creator details and like, play, and comment counts, which may be null when hidden.

- Page: https://fous.com/tools/vimeo
- Handle: `@vimeo`
- Category: [Entertainment](https://fous.com/tools/category/entertainment)
- Source website: https://vimeo.com
- Last verified: Sep 29, 2026

## Methods

### Get video

Operation `get_video`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a public Vimeo video’s title, creator, counts, length, upload date, description, tags, thumbnail, and link. Counts are null when not shown by the creator; private, deleted, and password-protected videos are unavailable.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `video` | string | yes | `"https://vimeo.com/22439234"` | A Vimeo video link, for example https://vimeo.com/76979871. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "video"
  ],
  "properties": {
    "video": {
      "type": "string",
      "description": "A Vimeo video link, for example https://vimeo.com/76979871.",
      "examples": [
        "https://vimeo.com/22439234",
        "https://vimeo.com/76979871"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "video": "https://vimeo.com/22439234"
    },
    {
      "video": "https://vimeo.com/76979871"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `tags` | array |  | Video tags. |
| `title` | string or null | `"The Mountain"` | Video title. |
| `length` | string or null | `"3:05"` | Video length in minutes and seconds, or hours, minutes and seconds. |
| `video_id` | string or null | `"22439234"` | Vimeo video ID. |
| `like_count` | integer or null | `104323` | Number of likes, or null when hidden. |
| `play_count` | integer or null | `79120060` | Number of plays, or null when hidden. |
| `video_link` | string or null | `"https://vimeo.com/22439234"` | Link to the video on Vimeo. |
| `description` | string or null |  | Video description as plain text. |
| `upload_date` | string or null | `"2011-04-15"` | Date the video was uploaded (YYYY-MM-DD). |
| `creator_name` | string or null | `"TSO Photography"` | Name of the video creator. |
| `comment_count` | integer or null | `2736` | Number of comments, or null when hidden. |
| `length_seconds` | integer or null | `185` | Video length in seconds. |
| `creator_profile_link` | string or null | `"https://vimeo.com/terjes"` | Link to the creator’s Vimeo profile. |
| `thumbnail_image_link` | string or null | `"https://i.vimeocdn.com/video/145027281-cf3e3e047a52e2210b26bbcf42fcde909a80a7dd023a757b95af01936d065ec0-d_640?region=us` | Link to the video thumbnail image. |

**Example input**

```json
{
  "video": "https://vimeo.com/22439234"
}
```

**Example output**

```json
{
  "tags": [
    "hd",
    "tenerife",
    "sky"
  ],
  "title": "The Mountain",
  "length": "3:05",
  "video_id": "22439234",
  "like_count": 104323,
  "play_count": 79120060,
  "video_link": "https://vimeo.com/22439234",
  "description": "Follow on:\n\nhttps://facebook.com/TSOphotography for more photos, videos and updates.\n\nThis was filmed between 4th and 11th April 2011. I had the pleasure of visiting El Teide.\n\nSpain´s highest mountai…",
  "upload_date": "2011-04-15",
  "creator_name": "TSO Photography",
  "comment_count": 2736,
  "length_seconds": 185,
  "creator_profile_link": "https://vimeo.com/terjes",
  "thumbnail_image_link": "https://i.vimeocdn.com/video/145027281-cf3e3e047a52e2210b26bbcf42fcde909a80a7dd023a757b95af01936d065ec0-d_640?region=us"
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@vimeo",
  "visibility": "public",
  "operation": "get_video",
  "version": 1,
  "input": {
    "video": "https://vimeo.com/22439234"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@vimeo\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_video\",\n  \"version\": 1,\n  \"input\": {\n    \"video\": \"https://vimeo.com/22439234\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@vimeo",
  "visibility": "public",
  "operation": "get_video",
  "version": 1,
  "input": {
    "video": "https://vimeo.com/22439234"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/vimeo`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_video`: Get video. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-vimeo https://api.fous.com/mcp/tools/vimeo --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Review public video details before adding them to a content catalog.
- Track visible likes, plays, and comments across videos.
- Organize videos by creator, upload date, or tags.
- Link video records to their Vimeo pages and thumbnails.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Vimeo tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Vimeo account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from vimeo.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What is the title, length, and upload date of a video?

Get video returns the video’s title, length, and upload date when given its Vimeo link.

### How many likes, plays, or comments does a video have?

Get video returns like, play, and comment counts when shown by the creator; hidden counts are null.

### Who created a video, and what tags does it have?

Get video returns the creator’s name and profile link, along with the video’s tags.

## Related

- [YouTube API](https://fous.com/tools/youtube.md): YouTube returns public video, caption, comment and channel details, company channels, and the latest weekly Top Songs chart; inferred dates and some counts may be approximate.
- [TikTok API](https://fous.com/tools/tiktok.md): TikTok returns public profiles and totals, recent pinned-first videos, and public video details and engagement; private content unavailable, and feeds may be incomplete or empty.
- [Bilibili API](https://fous.com/tools/bilibili.md): Bilibili provides public video details and statistics, plus current overall or category rankings; movie rankings omit some video details.
- [Dailymotion API](https://fous.com/tools/dailymotion.md): Watch and share videos on Dailymotion.
- [Pexels API](https://fous.com/tools/pexels.md): Pexels offers free stock photos and videos, with searches returning up to 80 results in Pexels search order.
- [Letterboxd API](https://fous.com/tools/letterboxd.md): Letterboxd provides films with ratings, cast, location-dependent watch services and popular reviews, plus popularity-ranked lists by time period, genre and decade; some details may be unavailable.
- [SoundCloud API](https://fous.com/tools/soundcloud.md): SoundCloud lets people listen to and share music, find public tracks with play stats, and browse artists’ tracks, with popular lists limited to 30.
- [Twitch API](https://fous.com/tools/twitch.md): Twitch returns channel profiles, live status, up to 10 broadcasts, top streams, viewer-ranked categories, up to 100 public videos/clips, and 1–30-day schedules; counts change.
- [All Entertainment tools](https://fous.com/tools/category/entertainment)
