this2that

How to export a list of all your Vimeo videos

Vimeo has no button that exports your video library as a list. Here are four ways to get every title, link, date, privacy setting and play count into Google Sheets, Excel or a CSV file, from a handful of videos to many thousands.

Updated October 2026
Free tool

Short on time? Export the whole list in a few clicks, as a Google Sheet, Excel and CSV.

Export my video list →

What Vimeo itself offers

The one export Vimeo's help center documents is for analytics. On a paid plan you can open a report under Analytics and export it as a CSV, downloaded or emailed to you. That file is performance data (views and the other metrics of the report) for the filters you pick, and Vimeo's analytics FAQ says it holds only the top-level numbers and that exporting needs a paid membership.

It is not a list of your library. For a CSV of all your uploaded videos, Vimeo's article on exporting analytics tells you to contact support. If you would rather not wait on a support ticket, the four ways below get the list yourself.

Method 1: copy it by hand

For up to a dozen or so videos, open your Vimeo library and copy each title and link into a sheet. Add the columns you care about (privacy, date) as you go. It is free and needs nothing but time, and it stops being reasonable somewhere around the second page of videos.

Method 2: the Vimeo API, with a short script

If you can run a script, the API gives you everything, for free. You need a personal access token with the Private scope (so private and unlisted videos are included). Then ask for your videos 100 at a time and follow the paging.next link until there is none. This Python script uses only the standard library and writes a CSV that Excel opens cleanly:

import csv, json, urllib.request

TOKEN = "your-vimeo-token"
API = "https://api.vimeo.com"
path = "/me/videos?per_page=100&fields=uri,name,link,duration,created_time,privacy.view,stats.plays"

with open("vimeo-videos.csv", "w", newline="", encoding="utf-8-sig") as f:
    out = csv.writer(f)
    out.writerow(["id", "title", "link", "seconds", "created", "privacy", "plays"])
    while path:
        req = urllib.request.Request(API + path, headers={
            "Authorization": "bearer " + TOKEN,
            "Accept": "application/vnd.vimeo.*+json;version=3.4",
        })
        page = json.load(urllib.request.urlopen(req))
        for v in page["data"]:
            out.writerow([
                v["uri"].split("/")[-1], v["name"], v["link"], v["duration"],
                v["created_time"], (v.get("privacy") or {}).get("view"), (v.get("stats") or {}).get("plays"),
            ])
        path = (page.get("paging") or {}).get("next")  # None after the last page

Add any other field to the fields list (tags, description, folder as parent_folder.name) and a column for it. On a big library, mind Vimeo's request limits: the script stops at the first error, so for thousands of videos add a pause when Vimeo answers 429. Our post on Vimeo API rate limits explains how they work.

Method 3: a sync tool like Coupler

Sync tools keep a spreadsheet up to date on a schedule. Coupler's Vimeo source, for example, signs in to your Vimeo account and pulls your own videos, private ones included, with plays, likes and comments, into Google Sheets or Excel and refreshes them.

These are subscription products built for data that keeps changing, like a dashboard of plays. For a one-off list of what is in your library, they are more than you need.

Method 4: this2that's free export

The free video list export does the API work for you, with no code and no row limit:

  1. Create a Vimeo token (two minutes) and sign in to this2that.
  2. Paste the token and choose where the list goes: a Google Sheet, files, or both.
  3. Start the export. Most libraries take a few minutes; we email you the links when it is ready.

You get one row per video with its ID, title, folder, description, link, duration, upload, modified and release dates, privacy, resolution, language, tags, likes, comments, plays, status, thumbnail, embed code and file size, plus a Summary tab with the totals. It works on every Vimeo plan. File sizes are filled in on Standard and above, with a token that has the Video Files scope, where Vimeo gives out download links; on Free, Starter and Plus that column stays blank.

Into Google Sheets

With this2that, pick the Google Sheet delivery and the list is written straight into your Drive as a native Sheet. With a CSV from anywhere else, open Google Sheets and use File, Import, Upload, then choose to insert a new sheet. Sheets reads UTF-8 files correctly, so titles in any language come through.

Into Excel

Open the .xlsx file and you are done. A CSV is where Excel trips: a file saved as plain UTF-8 shows accented and non-Latin titles as garbled characters when you double-click it. this2that and the script above both write UTF-8 with a byte order mark, which Excel recognises. For any other CSV, use Data, From Text/CSV, and set the file origin to UTF-8.

As a CSV file

A CSV is the most portable choice: Numbers, LibreOffice, Airtable, Notion and most databases import it. Keep the video ID column, since titles repeat and IDs never do. If you plan to re-host your library, the ID and link columns are what you will match the moved files against.

Next step

The list is the map. Want the videos too?

A list doesn't copy the files. this2that copies the original videos to your computer or Google Drive, folders included, paid once per library size. The first 10 videos or 3 GB are free.

Frequently asked questions

Related