13,166
Total Matches Analysed
51
Total Unique Teams
35,478
Total Goals Scored
How this site is built

Every chart on this site is generated from the Premier League's public API by a repeatable pipeline — scrape → DuckDB → dbt → CSV → static site. When data updates, ./update_all_charts.sh rebuilds everything from source.

Scrape
curl the Pulselive API (competition=8) into matches/<season>/*.json
Load
duckdb/load_*.sql read the JSON into the DuckDB raw schema
Model
dbt seed + run builds staging → core (int_matches) → marts (fct_matches)
Chart data
dbt analyses (dbt/analyses/chart_*.sql) run against fct_matches to write assets/data/*.csv
Generate
Nuxt 3 builds a static Vuetify 3 + d3.js site, baking charts into HTML for SEO
Last data update: 2026-08-08
Index of /charts
Premier League data charts · select a page below
All-Time Table/all-time-table
Most Wins/most-wins
Data Quality/data-quality
Attendances/attendances
Five-Game Streaks/five-game-streaks
Big Win Streaks/big-win-streaks
Longest Gap Between Wins/longest-winless-gaps