Skip to content

UK Bus Services Scraper

Try for free

List UK bus services from the Department for Transport's Bus Open Data Service: service numbers with route names and descriptions, origin and destination, operator, operating area, registration code and a timetable link, optionally with ordered stop lists. Filter by operator (e.g. Stagecoach), area or keyword. No login needed.

🚌 UK Bus Services Scraper

Get a clean list of UK bus services from the Department for Transport's Bus Open Data Service (BODS): every service number with its route name and description, origin and destination, operator, operating area, registration code and a link to its timetable, optionally with the ordered stop list in both directions. Filter by operator (for example Stagecoach), council area or keyword. No login and no API key needed. $2.00 per 1,000 services on the Free plan (less on paid plans) plus $2.00 per 1,000 timetable data sets read, platform usage included.

✨ Why use UK Bus Services Scraper?

  • 🗺️ Whole operators in one run — all of Stagecoach's regional companies (or Arriva, First, Go-Ahead and hundreds of smaller operators) in one table, one row per service number.
  • 🧭 Route details, not just numbers — route name, outbound and inbound description, origin, destination, via points and the towns each service calls at.
  • 🔗 Timetable link for every service — opens the service's own timetable page on BODS.
  • 🚏 Stop lists on request — the ordered stops (stop code, name, locality) in both directions, from the journey pattern the timetable runs most often.
  • 🏷️ Registration data — the registered service code, National Operator Code (NOC), operator licence and the timetable's validity dates.
  • ✅ Official open data — read from the timetables operators publish to BODS, the Department for Transport's open data service.

🎯 Use cases

  • 📋 Network inventories — list every route an operator runs, by region, for planning, research or a product catalogue.
  • 🧑‍💻 Travel apps and chatbots — feed service numbers, routes and stops into a journey assistant or a local guide.
  • 🏙️ Local government and consultancy — see which operators and services cover a council area.
  • 📈 Change tracking — schedule a weekly run and compare which services appear, end or change their route.
  • 🏡 Property and location research — find the bus services that reach a town or village.

🚀 How to use

  1. Enter one or more Bus operators as BODS lists them (for example Stagecoach), or leave it empty and choose a Geographical area instead.
  2. Optionally add Keywords (a town, a service number such as X5, Airport) to keep only matching services.
  3. Set Max services (0 = every matching service) and switch on Include stop lists if you need the stops.
  4. Click Start, then open the Bus services view or export the table as CSV, Excel or JSON.

📥 Input

FieldWhat it does
operatorsOperator (publisher) names as BODS lists them, e.g. Stagecoach, Arriva UK Bus, First Bus; a NOC such as SCOX also works
maxItemsHow many services to save (default 20, 0 = all)
includeStopsAdd ordered outbound and inbound stop lists (default off)
areasBODS geographical areas (councils/counties), e.g. Oxfordshire, Cumbria, Cardiff
keywordsKeep only services that mention one of these words (whole words, case ignored)
proxyConfigurationConnection settings; the default works

At least one operator, area or keyword is needed.

{
  "operators": ["Stagecoach"],
  "areas": ["Oxfordshire"],
  "keywords": ["Oxford"],
  "maxItems": 0,
  "includeStops": false
}

📤 Output

One row per bus service number. Main fields:

FieldMeaning
serviceNumberThe number on the bus, e.g. S1, X4, 500
routeNameRoute name from the timetable, e.g. Oxford to Carterton (via Witney)
routeDescriptionOutbound and inbound descriptions as published
origin, destination, viasStart, end and via points of the outbound direction
localities, stopCountTowns and places served, number of distinct stops
operatorNameOperating company (trading name), e.g. Stagecoach Oxfordshire
operatorRegionOperating area as the publisher describes the data set on BODS
timetableUrlThe service's timetable page on BODS
serviceCode, nationalOperatorCode, licenceNumberRegistration number, NOC and operator licence
operatingPeriodStart, operatingPeriodEndValidity of the timetable (empty end = open-ended)
serviceType, mode, publicUsestandard or flexible, transport mode, public service flag
datasetId, datasetName, datasetUrl, lastUpdatedThe BODS data set the row comes from and its last update
outboundStops, inboundStopsWith Include stop lists: sequence, stopCode (NaPTAN ATCO code), name, locality
sourceAlways Bus Open Data Service
{
  "serviceNumber": "S1",
  "routeName": "Oxford to Carterton (via Witney)",
  "operatorName": "Stagecoach Oxfordshire",
  "operatorRegion": "Stagecoach Oxfordshire",
  "routeDescription": "Outbound: Oxford to Carterton (via Witney) | Inbound: Carterton to Oxford (via Witney)",
  "origin": "Oxford",
  "destination": "Carterton",
  "vias": ["Witney"],
  "localities": ["Oxford City Centre", "Oxford", "Botley", "Cumnor", "Farmoor", "Swinford", "Eynsham", "High Cogges", "Witney", "Minster Lovell", "Brize Norton", "Carterton", "Shores Green"],
  "stopCount": 130,
  "timetableUrl": "https://data.bus-data.dft.gov.uk/timetable/dataset/25916/detail/?line=S1&service=PH0005863%3A16",
  "serviceCode": "PH0005863:16",
  "nationalOperatorCode": "SCOX",
  "licenceNumber": "PH0005863",
  "publisherName": "Stagecoach",
  "mode": "bus",
  "serviceType": "standard",
  "publicUse": true,
  "operatingPeriodStart": "2026-11-09",
  "operatingPeriodEnd": null,
  "datasetId": "25916",
  "datasetName": "Stagecoach_25916_20261112 04:01:14",
  "datasetUrl": "https://data.bus-data.dft.gov.uk/timetable/dataset/25916/",
  "lastUpdated": "2026-11-12",
  "source": "Bus Open Data Service",
  "outboundStops": [
    {"sequence": 1, "stopCode": "340000864A3", "name": "George Street", "locality": "Oxford City Centre"}
  ]
}

💰 Pricing

You pay per bus service saved and per BODS timetable data set the run reads; platform usage (compute, proxy) is included, and the stop lists cost nothing extra. Every data set in scope has to be downloaded and read in full to get its services, so the data set fee covers that work even when a keyword matches only a few services.

EventFreeStarterScaleBusiness
Bus service$2.00 / 1,000$1.90 / 1,000$1.70 / 1,000$1.50 / 1,000
Data set read$2.00 / 1,000$2.00 / 1,000$2.00 / 1,000$2.00 / 1,000

Examples: all Stagecoach services (about 2,000 services from 16 data sets) cost about $4.03 on the Free plan and $3.03 on Business. A keyword on its own reads every data set on BODS (about 920, about $1.84) plus the services it matches; add an operator or area so fewer data sets are read.

❓ FAQ

Where does the data come from? From the Bus Open Data Service, run by the UK Department for Transport. Local bus operators in England must publish their timetables there in the TransXChange format; this actor reads the published timetable data sets and their downloads.

Can I use the data? BODS says: "The Bus Open Data Service is freely available for anyone to use, providing a single location to discover and access data. As well as provide feedback to data publishers. You do not need a license to use the data." (BODS guidance). Check that page for the current terms before you build on it.

Do I need a login, API key or proxy? No. The actor reads the public BODS pages and downloads; no account or key is used.

How many services can I get? As many as BODS publishes for your filters; there is no cap. All Stagecoach services in one run are about 2,000 rows and take a few minutes; the whole of BODS is tens of thousands and takes longer, because every timetable file is read.

Why is a field empty? Operators fill the timetable files themselves. When a file has no route description, the route name is built from the published origin and destination; when a service has no end date, operatingPeriodEnd is empty.

Can I schedule it or use the API? Yes. Schedule it in the console or start it through the Scrape.ly API, and export the results as JSON, CSV or Excel.

⚠️ Limits

  • Coverage: England is covered because operators there must publish to BODS. Scotland and Wales are included only where operators chose to publish to BODS (for example Stagecoach South Wales); most Scottish services are not on BODS. London buses run by TfL contractors appear only where the operator published them.
  • Published data only: services that an operator has not published (or published with errors) are missing; BODS itself flags such services on each operator's page.
  • Areas are BODS areas: the area filter reads the data sets BODS lists for that council area, and a data set can also hold services that run mostly elsewhere. Add a keyword to narrow it down.
  • One row per service number and registration: the same number can appear more than once when it belongs to different registered services (for example route 1 in two towns of one region). When a data set holds both the current and a future timetable for a service, the one valid today is kept.
  • Stop lists follow the most frequent journey pattern in each direction; short workings and school variants are not listed separately.
  • Timetables (departure times) are not exported; use the timetableUrl link to view them.

Related actors

//From the blog\\

Latest articles

All articles

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

No credit card. No setup calls.