Passenger Ground Transportation Data Provider · Head-to-head
CTA Ridership - Daily Boarding Totals vs Eurostat Passenger Transport Statistics (tran_hv_psmod / rail_pa)
Which passenger ground transportation data provider data fits your job: CTA Ridership - Daily Boarding Totals, or Eurostat Passenger Transport Statistics. API, files, or your warehouse. Daily, weekly, or hourly.
CTA Ridership - Daily Boarding Totals
Eurostat Passenger Transport Statistics (tran_hv_psmod / rail_pa)
Where the fields line up
No shared field names. These two answer different questions.
| Field | CTA Ridership - Daily Boarding Totals | Eurostat Passenger Transport Statistics |
|---|---|---|
service_date | The transit service date the boardings are attributed to, and the natural join key against weather, event calendars and business tables. | not in this set |
day_type | Day-type code for the service date: W = Weekday, A = Saturday, U = Sunday/Holiday. Holidays ride under U regardless of which weekday they fall on. | not in this set |
bus | Total systemwide bus boardings for the service date. | not in this set |
rail_boardings | Total systemwide 'L' rail boardings for the service date. | not in this set |
total_rides | Combined bus and rail boardings for the service date. | not in this set |
freq | not in this set | Observation frequency; A marks the annual observations that make up tran_hv_psmod. |
unit | not in this set | Unit of measure - PC for percentage of total inland passenger transport, MIO_PKM for millions of passenger-kilometres, THS_PAS for thousand passengers. |
vehicle | not in this set | Inland transport mode - TRN for trains, BUS_TOT for motor coaches, buses and trolley buses, CAR for passenger cars, TRN_BUS_TOT_AVD for the sum of available train and bus data. |
geo | not in this set | Geographic entity in Eurostat nomenclature codes, from the EU27_2020 aggregate down to individual member states and EFTA countries. |
time | not in this set | Reference year of the observation. |
value | not in this set | The reported statistic in the selected unit - a modal share percentage or a passenger-kilometre volume. |
Coverage, side by side
| CTA Ridership - Daily Boarding Totals | Eurostat Passenger Transport Statistics | |
|---|---|---|
| Geographic | Not carried - the frame is fixed to the CTA systemwide account | `geo`, NUTS-style codes across 37 EU27/EFTA entities plus aggregates |
What each contains
Pick by fit, not by loyalty.
| CTA Ridership - Daily Boarding Totals | Eurostat Passenger Transport Statistics | |
|---|---|---|
| Observation date | `service_date` (one transit service date) | `time` (reference year) |
| Observed quantity | `bus`, `rail_boardings`, `total_rides` (integer boardings) | `value` typed by `unit`: `PC` shares, `MIO_PKM` million passenger-km, `THS_PAS` thousand passengers |
| Mode identification | Column-per-mode: bus against rail, summed in `total_rides` | `vehicle` dimension: `TRN`, `BUS_TOT`, `CAR`, `TRN_BUS_TOT_AVD` |
| Calendar context | `day_type`: W weekday, A Saturday, U Sunday/holiday | None carried - no weekday or holiday flag |
| Frequency declaration | Implicit - exactly one row per service date | Explicit `freq` enum (`A` annual in tran_hv_psmod) |
| Geography | Not carried - the frame is fixed to the CTA systemwide account | `geo`, NUTS-style codes across 37 EU27/EFTA entities plus aggregates |
What each does better
CTA Ridership - Daily Boarding Totals
Day-level resolution nothing annual can match. The series holds 9,312 consecutive service dates. June 30, 2026 logged 632,314 bus boardings, 459,373 rail boardings and 1,091,687 total rides; the Sunday before, June 28, printed 765,733. A question shaped like what happened to Tuesday ridership after the service change only fits a file where Tuesday exists.
Seasonality arrives as a field, not a join. Every row carries its day_type code, so weekday, Saturday and Sunday/holiday curves separate without rebuilding a holiday calendar. Demand modelers get 25 years of labeled days ready for training - see demand forecasting.
Continuity through real shocks. January 2, 2001 recorded 1,282,779 weekday rides, and the same unbroken ledger runs through the 2008 financial crisis, the COVID-19 collapse and partial recovery, and the remote-work era. Event-impact studies and elasticity estimates rarely inherit a quarter-century control series for a single network; each row is one unlinked passenger trips count per mode.
Small enough to hold whole. The full history is a few hundred kilobytes of systemwide totals, so network-wide demand questions need no station-level assembly - though a sibling dataset in the same portal family breaks the same daily rides out by 'L' station and by bus route when stop-level detail matters.
Eurostat Passenger Transport Statistics
Thirty-seven geographies against one city. tran_hv_psmod covers EU27 member states, the EFTA countries - Norway, Switzerland, Liechtenstein, Iceland - and EU aggregates on one harmonized methodology and a common nomenclature. No single-agency ledger can support the sentence Poland's rail share versus France's; this table exists precisely so such sentences survive review.
Shares, not just volumes. For 2023 the EU27_2020 aggregate reads 82.7 percent car, 8.8 percent bus and coach, and 17.3 percent train-plus-bus combined. Modal-share statements about competition between modes are things a boarding count structurally cannot make.
Rail depth behind the headline. rail_pa_total reports passengers in thousands and rail performance in millions of passenger-kilometres - 429,575 million for EU27_2020 in 2023 - running 2004 through 2025, with some quarterly series elsewhere in the related rail tables. Each observation is a country-year time series cell on a common grid.
A mandated statistical basis. Rail returns are collected under Regulation (EU) 2018/643, recasting Regulation (EC) 91/2003. Compulsion plus a shared rulebook is what keeps more than twenty national reporting paths comparable in one table.
The verdict
Verdict: sample both, pick by fit. Let the unit of analysis decide. If your question names a day, a holiday, a season or a recovery curve on one network - post-2020 transit recovery, weekend-versus-weekday divergence, fare or event impacts - CTA Ridership - Daily Boarding Totals is the instrument shaped for it. If your question names countries and shares - modal-shift analysis, market sizing by mode, policy benchmarking across the EU and EFTA - Eurostat Passenger Transport Statistics (tran_hv_psmod / rail_pa) is the only one of the two that can even pose it.
Because both records carry the same 9/10 score, neither wins on quality; they win on different questions. Cut each sample to the cities, countries, modes and date ranges you actually model, and let the returned rows - boardings by service date on one side, percentage shares and passenger-kilometres by country-year on the other - make the call rather than the brand names.
Sample both, pick by fit. See CTA Ridership - Daily Boarding Totals · See Eurostat Passenger Transport Statistics
Fair questions
Is CTA Ridership - Daily Boarding Totals better than Eurostat Passenger Transport Statistics (tran_hv_psmod / rail_pa)?
Different instruments, tied at 9/10. The CTA ledger wins whenever the question names a day - 9,312 consecutive service dates of bus, rail and total boardings with a weekday/Saturday/Sunday-holiday flag built in. Eurostat wins whenever the question names countries - harmonized modal shares for 37 EU27 and EFTA geographies back to 1990. Many teams keep both.
Which dataset covers more history?
It depends on the grain you need. The CTA series starts January 1, 2001 - that first Sunday logged 423,647 rides - and runs day by day to June 30, 2026. Eurostat's modal split reaches back to 1990 and its rail tables to 2004, but only in annual steps. Deepest calendar goes to Chicago; longest horizon goes to Europe.
Do the two datasets overlap anywhere?
Only conceptually: both quantify bus and rail demand. The CTA counts absolute boardings for one city system at day grain; Eurostat reports shares and passenger-kilometres across 37 countries at year grain. Neither can substitute for the other - one has no geography, the other no calendar texture below the year.
Which should a transit demand forecaster sample first?
Sample both, pick by fit. Training a ridership or seasonality model needs the CTA's 9,312 labeled service dates, day_type flag included. Calibrating a European market entry or modal-shift scenario needs tran_hv_psmod's country-year panel. Name your target variable and geography when requesting samples and each lands pre-cut.
Can Datadory deliver both datasets together?
Yes. Either record arrives alone or merged onto one delivery calendar, aligned on period and units so the join is settled before it reaches you - delivered daily, weekly, or hourly, your call. Specify the date windows and countries and the samples arrive with field definitions and coverage profiles attached.