Scrapers.lat logo scrapers.lat
Travel

Deutsche Bahn Train Times, Fares & Routes Scraper

Scrape German and European train connections from bahn.de: departure and arrival times, duration, transfers, ICE/IC/RE train types and cheapest fares across 5500+ stations. Export to JSON, CSV or Excel.

30 fields per record JSON · CSV · Excel · API Pay per use
deutsche-bahn-scraper.json 200 OK
{
  "from": "Berlin Hbf",
  "to": "München Hbf",
  "departure": "2026-07-26T08:36:00",
  "arrival": "2026-07-26T12:46:00",
  "durationMinutes": 250,
  "transfers": 0,
  "trainTypes": ["ICE"],
  "trains": ["ICE 1005"],
  "price": 149.99
}
What you get

Every run returns clean, typed records, ready for your CRM, spreadsheet or database.

  • One clean record per result, deduped and normalized
  • Stable schema in JSON, CSV or Excel, or read it via the Apify API
  • Pay per use in the cloud, nothing to install or maintain
Fields it returns
FromToDepartureArrivalDuration MinutesTransfersTrain TypesTrainsPriceCurrencyPrice ClassDeparture PlatformArrival PlatformOperators
Sample output

A real example record, exactly the shape you receive.

FromToDepartureArrival
Berlin HbfMünchen Hbf2026-07-26T08:36:002026-07-26T12:46:00
Berlin HbfMünchen Hbf2026-07-26T08:36:002026-07-26T12:52:00
Berlin HbfMünchen Hbf2026-07-26T09:36:002026-07-26T13:43:00
GET /deutsche-bahn-scraper
{
  "from": "Berlin Hbf",
  "to": "München Hbf",
  "departure": "2026-07-26T08:36:00",
  "arrival": "2026-07-26T12:46:00",
  "durationMinutes": 250,
  "transfers": 0,
  "trainTypes": ["ICE"],
  "trains": ["ICE 1005"],
  "price": 149.99
}

Frequently asked questions

Which countries and stations does this cover?

It covers the full Deutsche Bahn network across Germany plus cross-border European connections that bahn.de sells, including hubs like Wien Hbf, Zurich HB, Amsterdam Centraal and Paris. You can search any of the 5500+ stations and cities in the bahn.de timetable by name.

How many connections can I get per run?

Set Max Items to control the count. The scraper works forward in time from your chosen departure and keeps going until it reaches your limit, so you can collect dozens of connections for a single route and date.

Can I search by arrival time instead of departure?

Yes. Set Time refers to "Arrive by" and the scraper returns connections that arrive at or before the time you set, instead of departing from it. You can also pick first or second class and cap the number of transfers.

Why is the price sometimes empty?

Some cross-border or regional connections do not have a single through ticket on bahn.de, so no combined price is returned and the price is left empty while the times, legs and train types are still captured. Enable fare details to also pull every individual fare offer where available.

Do I need to configure a proxy?

No. A German residential proxy is enabled by default, so you do not need to configure anything to retrieve live connections and prices reliably. Station search works without it.

Ready when you are.

Run the scraper live on Apify right now, or have us build one tailored to exactly what you need.