NYC Yellow Taxi Trips dataset

Every yellow taxi trip the New York City Taxi and Limousine Commission recorded as picked up in January 2026, read from the TLC's own monthly file. Each trip carries when it began, its hour and day of the week, its distance, whether it began at one of the three airports, and whether its record is complete. The month comes to 3,724,882 trips.
Load it
These commands install arc, Meridian’s open-source Protocol runner, clone the open-analytics repository and run this Protocol, which writes build/trips.parquet in open-analytics/examples/nyc-yellow-taxi.
curl -fsSL https://install.meridian.online/arc | bash
git clone https://github.com/meridian-online/open-analytics
cd open-analytics/examples/nyc-yellow-taxi && arc runarc runs the Protocol’s SQL on DuckDB 2.x, which its installer puts in place when no DuckDB is on your PATH, saying what to add to PATH; the last step, which describes the Parquet, needs finetype 0.6.54 or later on your PATH.
Columns
| Name | Type | Description |
|---|---|---|
| pickup_time | datetime | When the meter was engaged, in New York local time as the TLC records it. |
| pickup_date | date | The date of pickup_time. |
| pickup_hour | integer | The hour of pickup_time, 0 to 23. |
| weekday | string | The day of the week of pickup_time, as its ISO number and short name, so '1 Mon' sorts before '7 Sun'. |
| trip_miles | number | The trip's distance as the taximeter reported it, in miles, capped at 30 so a few implausible distances do not set a chart's scale. |
| pickup_place | string | JFK Airport, LaGuardia Airport or Newark Airport when the trip began in that taxi zone, and elsewhere otherwise. |
| trip_record | string | complete, or the first of negative fare, zero distance and no passenger count that applies to the record. |
Source and licence
Licence
Sources
Meridian hosts none of this data: the Protocol downloads it, from the address its fetch step names, when you run it.
The steps
5 stepsduckdb >=1.2Every step runs in order. op: steps are typed, versioned operators; sql: steps are DuckDB models.
- 01fetch_tripsop: http_fetch@1
Fetch the TLC's monthly file, yellow_tripdata_2026-01.parquet (about 64 MB), pinned by sha256.
producesbuild/yellow_tripdata_2026-01.parquetwithurl: https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2026-01.parquet out: build/yellow_tripdata_2026-01.parquet sha256: 8b3933fe6f0d7b6d8826613c0dd724edc680ff7c49e2bd4c7635c05102728637 headers: User-Agent: Meridian Protocol (open-analytics demo; research@meridian.online) - 02raw_tripssql: models/01_raw_trips.sql
Read January 2026's yellow taxi trips as the TLC publishes them.
readsbuild/yellow_tripdata_2026-01.parquetproducesraw_tripsmodelmodels/01_raw_trips.sql - 03tripssql: models/02_trips.sql
Keep the trips picked up in January (the file carries a few outside it), add the hour and day of the week, cap the distance at 30 miles, mark pickups at JFK, LaGuardia and Newark, and say whether each record is complete.
producestripsmodelmodels/02_trips.sql - 04export_tripsop: parquet_export@1
Write build/trips.parquet, the file this Protocol ends in, on your own disk. ORDER BY ALL makes the bytes reproducible.
readstripsproducesbuild/trips.parquetwithinput: trips dest: build/trips.parquet compression: zstd order_by: ALL - 05describeop: datapackage_describe@1
Emit datapackage.json from the built Parquet: finetype types every column, and descriptor.overrides.json adds the curated title, licence, sources and per-field prose.
readsbuild/trips.parquetdescriptor.overrides.jsonproducesdatapackage.jsonwithparquet: build/trips.parquet overrides: descriptor.overrides.json out: datapackage.json