Sri Lanka Bus Route Numbers — Find the Number by Town
Type where you are and where you are going, and get the bus number — all 470 gazetted inter-provincial routes, searchable by town pair or by number, with the Normal, Semi-Luxury, AC and Super-Luxury classes licensed on each. No signup, source cited below.
How it works
This is a lookup, not a calculation. There is no formula to get wrong, so the whole value sits in one place: whether the transcription is faithful and whether your search honestly reaches it.
The dataset
Every row comes from the Ministry of Transport & Highways table Inter Provincial Full Bus Fare, published over the imprint of the Chairman, National Transport Commission — the authority issuing inter-provincial route permits under the National Transport Commission Act No. 37 of 1991. The sheet carries 481 rows in three tables: the main inter-provincial table (439 routes), a Super-Luxury table (11) and an expressway table (31). Super-Luxury rows merge onto their matching inter-provincial row; expressway rows stay separate, because an “EX” number is its own permit rather than a variant of an existing one.
The PDF is a two-column landscape sheet, so it was read by word bounding box rather than by text flow, which interleaves the halves and invents rows. One row needed a judgement call — route 57/87 is drawn with its fare cells about 12 points above its number — and it is documented in the data file.
How service classes are derived
One rule, applied uniformly: a class is recorded for a route if and only ifthat class’s fare column carries a figure rather than a dash. A dash means no service of that class is gazetted on the number — so the tool says “not gazetted”, never “unavailable”. Operators come and go between fare revisions, and a licence table cannot tell you what turned up at the stand this morning. That rule yields 53 routes with licensed AC out of 470 — which is why checking before a ten-hour trip is worth thirty seconds.
How town names are matched
The source spells the same town more than one way — Vauniya and Vavuniya, Baticaloa and Batticaloa, Matara and Mathara, Kataragama and Katharagama, thirty-odd more. Left alone those variants split a town in two and hide routes, so the 235 printed spellings fold onto 213canonical names; matching ignores case, spaces, hyphens and accents; and the printed spelling stays on every row, shown whenever it differs. The fold is not cosmetic — Colombo to Kataragama only finds the expressway bus because “Katharagama” folds to “Kataragama”. Where the right spelling is genuinely unclear, nothing folds: Sripura and Siripura look like one name spelt twice, but they are two places and the table cannot tell you which row is which.
How a number is matched
A query is normalised — uppercased, spaces dropped, dash and slash styles unified — then matched in three widening tiers, each labelled separately so a near-match is never dressed up as an exact hit. First the exact number. Then the rest of the trunk permit, everything before the first dash or slash, so “87” pulls in 87-2 and 87/759 but never route 8. Then through services carrying your number as one of their permits — how you find that permit 87 also runs inside 314/580/87 from Badulla. 181 of the 470 routes are joint-permit numbers, so that last tier matters more than the numbering suggests.
Anything that is not a route number is refused rather than coerced: “87.5” is never read as route 875, and a town name matching six terminals is reported as ambiguous with the six offered.
Worked examples
Dataset cross-check
A lookup tool has no formula to verify, so what has to be verifiable is that the transcription is internally consistent and that every search path agrees with every other. Five checks run over the shipped dataset, and the page will not claim they passed unless they did.
| Check | Result |
|---|---|
| Rows accounted for (inter-provincial + Super-Luxury + expressway) | 439 + 11 + 31 = 481 |
| Distinct routes shipped | 470 |
| Duplicate (number, origin, destination) keys | none |
| Route numbers that fail normalisation | none |
| Super-Luxury rows reconciled to an inter-provincial row | 11 of 11 |
| Routes unreachable by their own town pair or own number | none |
| Source spellings folded to canonical town names | 235 → 213 |
| Search keys accepted (canonical + printed + alternates) | 271 |
All five checks pass against the source tables as read on 2026-09-22. The Super-Luxury reconciliation is the load-bearing one: one of its 11 rows spells Batticaloa correctly where the main table prints “Baticaloa”, so it fails the moment spelling folds stop working.
What the service-class badges mean
| Class | What it is | Routes |
|---|---|---|
| Normal | The standard stage-fare bus — no air-conditioning, no reserved seating. Run by both SLTB and private operators. Gazetted on every route in the table. | 439 |
| Semi-Luxury | Cushioned seating and more luggage room, no air-conditioning guaranteed. Carries its own fare column in the source table. | 136 |
| AC | Air-conditioned service. Gazetted on a minority of routes, so this is the column worth checking before a long trip. | 53 |
| Super-Luxury | Inter-city semi-sleeper class with reserved seating. Listed in a separate 11-row table on the same Ministry sheet, all of them long northern and eastern runs out of Colombo. | 11 |
| Expressway | Highway bus running on E01/E03/E04 under an "EX"-prefixed permit. Gazetted at a single route-flat fare rather than per class. | 31 |
Counts are of route numbers carrying a fare figure in that class’s column of the Ministry table, not of buses. Source: NTC fare revision of December 2021 (sheet dated 2022-01-04).
Frequently asked questions
Sources & references
- Ministry of Transport & Highways — Inter Provincial Full Bus Fare (English)
- National Transport Commission — the authority issuing inter-provincial route permits
- National Transport Commission — per-route timetable sheets (used to confirm terminal names)
- Sri Lanka Transport Board — cross-reference for state-operated terminals
The route table was last downloaded and re-read end to end on 2026-09-22. Its rupee figures are deliberately not shown here: they are the NTC fare revision of December 2021 (sheet dated 2022-01-04) and were superseded by NTC Gazette Extraordinary No. 2424/35 of 21 March 2025, which the bus fare calculator implements. Route numbers are stable between fare revisions; fares are not.
Out of scope in this version, and deliberately so: departure times and frequencies (the published per-route sheets are dated 2019 and revised per operator — a timetable wrong by twenty minutes is worse than none), Colombo city and intra-provincial numbers, intermediate stops, and live tracking or seat booking.
Related tools
Comments & feedback
Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.
Spotted a route that is wrong, missing, or spelt in a way the search does not find?
Email me at [email protected] — most fixes ship within 24 hours.