Open, curated datasets of notable things across history and culture. movies, music, games, books, people, companies, inventions, landmarks, art and more, compiled and enriched from public sources into clean, consistent CSVs.
4,531 records across 14 datasets. Plain CSV, one file per category. No build step needed to use the data — just read the files.
This repository is the single source of truth. Everything else is built on it:
| Explorer | archiva.vetustas.net |
Browse, search, sort and filter every dataset, with interactive charts (value counts, histograms, choropleth maps). |
| Public API | api.vetustas.net |
Token-less, rate-limited JSON API. Per-dataset endpoints with filters. Docs at docs.vetustas.net. |
| The Game | vetustas.net |
A trivia / guessing game powered by these datasets. |
| File | Records | What |
|---|---|---|
datasets/movies.csv |
440 | Films, with IMDb ratings, director, genre, runtime |
datasets/tv.csv |
329 | TV series, seasons/episodes, network, creator |
datasets/anime.csv |
268 | Anime, studio, format, AniList scores |
datasets/games.csv |
272 | Video games, developer, publisher, series |
datasets/music.csv |
309 | Albums, label, tracks, certifications, popularity |
datasets/literature.csv |
315 | Books, author, type, language |
datasets/fine-art.csv |
292 | Paintings & sculptures, artist, movement, medium |
datasets/landmarks.csv |
289 | Buildings & sites, architect, country |
datasets/people.csv |
502 | Notable people, occupation, nationality |
datasets/companies.csv |
398 | Companies, founding, industry, type |
datasets/inventions.csv |
296 | Inventions & discoveries, inventor, category |
datasets/events.csv |
497 | Historical events, type, era |
datasets/football-clubs.csv |
234 | Football clubs |
datasets/basketball-clubs.csv |
90 | Basketball clubs |
- UTF-8 CSV,
\r\nline endings, header row first. - Every row has a frozen
id— a UUIDv4 that is permanent and globally unique. It never changes and is never reused, even if a record is corrected. It's the stable key to reference a record over time. - Dates use signed
YYYY[-MM[-DD]], truncated to the real precision (a year-only fact isYYYY, notYYYY-01-01). BC dates are negative,-YYYY. - Image columns (
poster/cover/logo/crest/image) hold URLs to externally hosted files (this repo doesn't store the images). - Controlled-vocabulary columns (
genre,type,category,movement,era) are normalized to a small canonical set per dataset.
It's just CSV — open it in anything (pandas, a spreadsheet, csv in any
language):
import csv
with open("datasets/movies.csv") as f:
for row in csv.DictReader(f):
print(row["title"], row["release_date"], row["imdb_rating"])import fs from "fs";
const movies = fs
.readFileSync("datasets/movies.csv", "utf-8")
.split("\n")
.slice(1)
.map((line) => line.split(","))
.map(([id, title, release_date, imdb_rating]) => ({
id,
title,
release_date,
imdb_rating,
}));Or query it live, without cloning anything, via the public API:
curl "https://api.vetustas.net/v1/movies?genre=Sci-Fi&min_rating=8&year_min=2000"Full endpoint reference and filters: docs.vetustas.net.
The datasets are generated and maintained by a set of Node + Python scripts
under scripts/. You only need these to add or refresh data —
using the data needs nothing but the CSVs.
npm install
cp .env.example .env # add API keys where a source needs one (e.g. TMDB)
npm run expand:movies # one scraper per category (expand:tv, expand:games, …)
npm run backfill:id # stamp UUIDs onto new rows
npm run validate # schema, unique ids, date checks📖 Full script reference — every command, what it does, and its arguments, is
in scripts/README.md.
Requires Node 18+ and Python 3.8+.
Dual-licensed:
- Datasets (
datasets/) — CC BY-SA 4.0. Free to use, share and adapt (including commercially) with attribution; derivatives stay open under the same license. - Code (
scripts/) — MIT.
Data is compiled from public sources, each under its own terms.
See datasets/LICENSE for the full attribution and source notes.
Contributions welcome and very needed. corrections, new records, new sources. See CONTRIBUTING.md for the rules and how to submit a PR.