Dataset

Operator coverage

Which intercity carriers serve which pairs of places, as one downloadable graph. It maps the reach of every carrier we hold, across every country they run in.

The graph holds 293,523 directed legs between 11,241 places, carried by 2,093 operators across 211 countries. 56.1% are mapped from an operator’s published service area covering both ends, which is evidence the carrier serves the corridor.

Version 1.0.0Data current to 14 September 2026CC BY 4.0

  • 293,523Legs
  • 2,093Operators
  • 11,241Places
  • 211Countries reached

What a leg in this file claims

164,657 of 293,523 legs, 56.1% of the graph, are mapped from an operator’s service area.

Derived
164,657 legs, 56.1%. The carrier’s own published service area, a mapped route relation or an archival route file covers both places at a distance its mode plausibly carries people. Read it as: this carrier probably serves this corridor.
Observed
128,866 legs, 43.9%. A register names the carrier and both endpoints: an interstate coach authorisation, an interdepartmental timetable, or a port connection with a sailing seen on the snapshot date.
Measured
Every leg carries its basis in the file, so a reader can filter the graph on it and cite exactly the subset they used.
Where the observed legs are
61,910 of the 128,866 observed legs touch Brazil, because its regulator publishes interstate coach authorisations and most regulators do not. 161 countries carry at least one observed leg and 50 carry none.

Evidence by mode

Air is built from a carrier feed rebuilt daily, filled in from an archive where that feed has never carried the pair. Rail comes from operator service areas and mapped route relations, and coach adds the national registers that publish authorisations.

All 293,523 legs, split by the mode of the carriers on them. No leg in the file mixes two modes.
ModeLegsOperatorsObservedDerivedDerived share
Train105,80845614,78691,02286.0%
Coach116,41072485,90030,51026.2%
Flight60,17565326,65233,52355.7%
Ferry11,1302561,5289,60286.3%

Coverage is concentrated

366,697 operator and leg pairs across 2,093 carriers, sorted by how much of the graph each one carries and cut into ten equal groups.

  1. 67.8%1 to 10%
  2. 15.4%11 to 20%
  3. 8.2%21 to 30%
  4. 4.2%31 to 40%
  5. 2.1%41 to 50%
  6. 1.1%51 to 60%
  7. 0.6%61 to 70%
  8. 0.3%71 to 80%
  9. 0.2%81 to 90%
  10. 0.1%91 to 100%
The busiest tenth of carriers holds 67.8% of every operator and leg pair in the file, and the smallest carrier in that group already holds 390 legs. The median carrier holds 26, the busiest holds 10,044.
Busiest 1%
21 carriers, 24.7% of all operator and leg pairs.
Busiest 5%
105 carriers, 52.5% of all operator and leg pairs.
Busiest 10%
209 carriers, 67.8% of all operator and leg pairs.
Busiest 25%
523 carriers, 87.9% of all operator and leg pairs.
Busiest 50%
1,047 carriers, 97.6% of all operator and leg pairs.

Operators by country

The graph reaches 211 countries. The 20 with the most legs are below, and the full table is in coverage_by_country.csv.

A leg that crosses a border is counted once in each of its two countries, so these legs add up to more than the file has rows.
CountryCarriers servingLegsCross borderObservedPlaces
Brazil26763,8650.6%96.9%1,384
India12829,1286.3%71.6%1,041
United States26119,23619.9%17.1%847
Germany30018,68047.7%18.6%345
China20015,63413.2%19.4%748
United Kingdom24213,35134.4%19.7%340
Russia21013,32217.4%0.1%503
Italy23312,91548.6%29.0%294
Spain20411,48338.6%21.0%207
Japan1899,8158.2%19.9%546
France2328,66355.9%33.1%139
Poland1077,74650.0%14.4%131
Türkiye1896,37232.3%36.1%225
Indonesia705,6669.7%41.9%238
Thailand1454,87324.1%81.1%157
Netherlands1404,70560.3%22.4%90
Philippines1324,23011.9%34.3%256
Canada1124,06541.5%30.8%155
Austria1203,77988.6%21.4%29
Greece1803,60159.1%30.0%99

Where the graph is thin

An absent row looks exactly like an absent service.

One mode only
71 of the 211 countries the graph reaches are reached by a single mode. For 71 of them that mode is air: flights are in the file and there is no surface network at all.
Barely reached
13 countries carry fewer than ten legs. 152 of the 11,241 places in the gazetteer carry no leg at all.
In the registry, not in the graph
4 country codes have a registered carrier and no place in the gazetteer: CS, FO, NR, SZ. Those carriers contribute nothing to the graph.
A code that is no longer a country
The operator registry still files a carrier under CS, withdrawn from ISO 3166-1 in 2006. The row is kept and flagged rather than remapped.

What this file is not

Six things this file does not hold.

Not a timetable
Departure times, arrival times, calendars, fares, vehicles and seat counts all sit outside this file.
Frequency is a weight
The frequency column rises with how much evidence stands behind a leg: one count per authorisation row for an observed coach leg, a route weight for an air leg. It is not departures per day and it is not comparable between modes.
Detour is a constant
The detour factor is one number per mode, applied to the great circle distance when a journey time is worked out. It is not a measured path ratio for the corridor it sits on.
Direction is mostly symmetry
The file holds 254,862 directed place pairs, and 252,128 of them also carry the opposite direction. A pair that appears one way only is usually how a register filed it.
Endpoints are settlements
Places come from a settlement gazetteer, so a corridor whose endpoint is too small to appear in it is missing entirely rather than marked absent.
Absence is not evidence
Register-backed coverage follows the regulators that publish openly, and grows with each new register we read.

Download

Version 1.0.0, as a Frictionless data package. Every resource carries a Table Schema describing every column, including how each one was built.

legs.csv is served gzipped; the uncompressed 41MB original is in the repository and in the archived release.
FileRowsSizeSHA-256
data/coverage_by_country.csv21533 kB657a4ff21a871f63
data/legs.csv.gz293,5232.8 MBde5815bfddbdddea
data/legs.parquet293,5232.4 MB3ec5000ce6365c9b
data/operators.csv2,093360 kB3798e2faf5754ace
data/places.csv11,2411.6 MB16bcff0bafc6cc73
datapackage.json39 kBb54112e199ac65ec
Citation
Orlero (2026). Operator coverage, version 1.0.0. https://orlero.com/en-gb/data/operator-coverage
Licence
CC BY 4.0. It also covers the EU database right, and attribution is the only condition.
DOI
Pending. Cite the URL and the version.
Rebuild it
node tools/data/operator-coverage-package.mjs regenerates every file here from the source graph. The output is deterministic, so the same commit gives the same bytes.

Where the graph came from

Attribution is given per package rather than per row: one leg can carry a carrier from a mapped route relation and another from an authorisation register, so a single source column on the row would be false about one of them.

Upstream feeds and their terms. The OpenFlights and OpenStreetMap contributions are ODbL, which carries a share alike obligation onto a derived database.
SourceLicenceLast refreshed upstream
GeoNamesCC BY 4.0Rebuilt daily
Virtual Radar Server standing dataCC0 1.0Rebuilt daily
OpenFlights routes and airlinesODbL 1.06 August 2014
OurAirportsPublic domainRebuilt daily
Mobility DatabaseCC0 1.0 for the catalogue; each feed carries its own licenceContinuously maintained
ANTT, Brazil: interstate coach authorisationsCC BY 4.0Continuously maintained
MTOP, Uruguay: interdepartmental coach timetablesCC BY 4.0Continuously maintained
Ferryhopper port connection graphNo published open licence12 September 2026
OpenStreetMap route relations, via OverpassODbL 1.0Continuously maintained

How Orlero separates derived from observed

Plan with Ori

Ori, the trip planner

Ask it something like this