Did New York's January 2025 congestion pricing rollout change taxi demand, trip speeds, or revenue? A before/after analysis built entirely in SQL.
On January 5, 2025, New York City began charging vehicles a toll to enter Manhattan's Central Business District. This project compares NYC yellow taxi trip data from July-December 2024 (before the toll) against July-December 2025 (after), using the same six calendar months a year apart so the comparison isn't skewed by normal seasonal swings in ridership.
The data comes directly from the NYC Taxi & Limousine Commission, the city agency that publishes every taxi trip's pickup/dropoff time, location, distance, and fare. All analysis below was done in SQL using DuckDB, with no spreadsheet or external tool involved in the calculations themselves.
The box below is a full SQL query tool running live in your browser (via Datasette Lite) - nothing is sent to a server. It's loaded with five tables, each described below. Try one of the example queries, or write your own.
Open in a full browser tabmonthly_summary - one row per month, with trip counts, average fare, average trip duration, total congestion fee revenue collected, and the percent change from the prior month.
| Column | Meaning |
|---|---|
| trip_month | The calendar month this row summarizes |
| period | "before" (2024) or "after" (2025) |
| trip_count | Total taxi trips that month |
| avg_fare | Average total amount paid per trip, in dollars |
| avg_duration_min | Average trip length, in minutes |
| total_congestion_fees | Total congestion pricing fees collected that month |
| pct_change_mom | Percent change in trip count vs. the previous month |
daily_with_rolling - one row per calendar day across the full 12 months, with 7-day and 28-day rolling average trip counts, useful for spotting trends without day-to-day noise.
borough_comparison - trip volume and duration (including median and 90th-percentile duration) split by Manhattan vs. all other boroughs, for both time periods.
zone_rank_shift - the 20 busiest Manhattan pickup zones, showing each zone's popularity rank before and after, and how much that rank moved.
congestion_revenue - month-by-month congestion fee revenue for the "after" period only, including a running cumulative total.
Copy any of these into the query box above.
SELECT * FROM monthly_summary ORDER BY trip_month;
SELECT pickup_area, period, trip_count, median_duration_min FROM borough_comparison ORDER BY pickup_area, period;
SELECT Zone, before_rank, after_rank, rank_change FROM zone_rank_shift ORDER BY rank_change DESC LIMIT 10;
SELECT trip_month, total_fee_revenue, cumulative_revenue FROM congestion_revenue ORDER BY trip_month;
Overall taxi trip volume rose about 11% year-over-year across the six-month window, so the toll does not appear to have suppressed total taxi demand. That growth was uneven, however: trips originating in Manhattan grew a modest 7%, while trips in the other boroughs grew 36%, and median trip duration outside Manhattan dropped by almost 4 minutes even as Manhattan's own median duration ticked up slightly, a pattern consistent with some demand shifting toward, and traffic easing in, the outer boroughs. Rankings among Manhattan's busiest pickup zones barely moved, with the largest shift being only 3 spots. The congestion fee itself generated a steady $1.75M-$2.19M per month, totaling roughly $12.2M over July-December 2025.