VOOZH about

URL: https://apify.com/jungle_synthesizer/deutsche-bahn-timetable-scraper

⇱ Deutsche Bahn Scraper - German Train Schedules & Delays · Apify


👁 Deutsche Bahn Timetable Scraper - Schedules & Real-Time Delays avatar

Deutsche Bahn Timetable Scraper - Schedules & Real-Time Delays

Pricing

Pay per event

Go to Apify Store

Deutsche Bahn Timetable Scraper - Schedules & Real-Time Delays

Scrape Deutsche Bahn (bahn.de) journey plans, train schedules, platforms, transfers, real-time delays, and occupancy forecasts. Supports ICE, IC/EC, RE, RB, S-Bahn across Germany plus international DB routes (AT, CH, FR, NL, BE, PL, DK).

Pricing

Pay per event

Rating

0.0

(0)

Developer

👁 BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

2

Monthly active users

22 days ago

Last modified

Share

Deutsche Bahn Timetable Scraper - German Train Schedules, Times & Delays API

Scrape journey plans, German train schedules, and real-time delays from Deutsche Bahn (bahn.de), the largest rail operator in Europe. This bahn.de API scraper returns ICE, IC/EC, IR, RE, RB, and S-Bahn timetables with platforms, transfers, real-time delays, occupancy forecasts, and segment-level routing across Germany plus international DB routes (AT, CH, FR, NL, BE, PL, DK).


Deutsche Bahn Timetable Scraper Features

  • Pulls journey plans from the bahn.de Reiseauskunft (HAFAS) JSON API.
  • Returns ~5 connections per request and paginates by advancing the search time forward, so you get a continuous list of departures rather than five and a polite shrug.
  • Resolves station names automatically — pass "Berlin Hbf" or an EVA/IBNR code, the scraper handles the lookup.
  • Surfaces real-time delay (departure_time_realtime) when bahn.de has it, alongside the scheduled time.
  • Captures train type (ICE, IC, EC, IR, RE, RB, S, U, Bus), train number, operating carrier (DB Fernverkehr, Flixtrain, ODEG, etc.), and per-segment platforms.
  • Exposes occupancy forecasts for both 1st and 2nd class (0-4 scale) and a flat list of risNotizen advisories like construction work or board-only stops.
  • Supports both 1st and 2nd class fare classes, plus a long-distance-only filter that strips S-Bahn and regional trains.
  • Pure JSON API — no browser, no captcha solving, no fragile selectors.

Who Uses German Train Schedule & Delay Data?

  • Travel aggregators — Feed schedules into trip planners or fare comparison front-ends without paying for a commercial HAFAS licence.
  • Mobility researchers — Build datasets of train frequencies, transfer patterns, and on-time performance across the German rail network.
  • Logistics planners — Track route options for time-sensitive freight or business travel, including platform-level detail.
  • Fare comparison tools — Cross-reference DB schedules against Flixtrain, ÖBB, SNCF, and other operators.
  • Travel-tech startups — Prototype itinerary products against a stable API surface before committing to a paid integration.

How Deutsche Bahn Timetable Scraper Works

  1. Provide an origin and destination — station names like "Berlin Hbf" or numeric EVA/IBNR codes both work.
  2. The scraper resolves each station against bahn.de's autocomplete endpoint, then queries the journey API for the requested date and time.
  3. Each batch returns about five connections; the scraper advances the search time and queries again until it hits maxItems or runs out of departures within a 24-hour window.
  4. Records save as flat JSON with all the fields you'd expect, plus a deeplink back to bahn.de for each journey.

Input

{
"origin":"Berlin Hbf",
"destination":"München Hbf",
"date":"",
"time":"",
"fareClass":"2",
"includeLocalTrains":true,
"maxItems":50,
"proxyConfiguration":{
"useApifyProxy":true,
"apifyProxyGroups":["RESIDENTIAL"]
}
}
FieldTypeDefaultDescription
originstring"Berlin Hbf"Departure station name (e.g. "Berlin Hbf", "München Hbf") or EVA/IBNR code.
destinationstring"München Hbf"Arrival station name or EVA/IBNR code.
datestringtomorrowTravel date in YYYY-MM-DD format. Empty defaults to tomorrow.
timestring"08:00"Departure time in HH:MM (24h). Empty defaults to 08:00.
fareClassstring"2""1" for 1st class, "2" for 2nd class.
includeLocalTrainsbooleantrueInclude S-Bahn, RE, RB, U-Bahn, Tram, Bus. Set to false to restrict to ICE/IC/EC/IR.
maxItemsinteger50Maximum journey records to return.
proxyConfigurationobjectApify ResidentialStandard Apify proxy config. Residential is recommended for production runs.

Long-distance only example

{
"origin":"Hamburg Hbf",
"destination":"Frankfurt(Main)Hbf",
"includeLocalTrains":false,
"fareClass":"1",
"maxItems":30
}

EVA code example

{
"origin":"8011160",
"destination":"8000261",
"date":"2026-05-15",
"time":"07:00",
"maxItems":100
}

Deutsche Bahn Timetable Scraper Output Fields

{
"journey_id":"21d88e04_3",
"origin_station":"Berlin Hbf",
"origin_id":"8011160",
"destination_station":"München Hbf",
"destination_id":"8000261",
"departure_time":"2026-04-26T08:36:00",
"departure_time_realtime":"",
"arrival_time":"2026-04-26T12:46:00",
"arrival_time_realtime":"",
"duration_minutes":250,
"transfers":0,
"train_segments":[
"ICE 1005 | Berlin Hbf -> München Hbf | 08:36 -> 12:46 | platforms 4/22 | DB Fernverkehr AG"
],
"platform_departure":"4",
"platform_arrival":"22",
"train_type":"ICE",
"train_number":"1005",
"train_name":"ICE 1005",
"carrier":"DB Fernverkehr AG",
"delay_minutes":null,
"cancelled":false,
"occupancy_class_1":1,
"occupancy_class_2":2,
"ris_notizen":["Hält nur zum Einsteigen"],
"bahn_de_url":"https://www.bahn.de/buchung/fahrplan/suche#sts=true&so=Berlin%20Hbf&zo=M%C3%BCnchen%20Hbf&..."
}
FieldTypeDescription
journey_idstringStable trip identifier from bahn.de (tripId).
origin_stationstringDeparture station name.
origin_idstringEVA/IBNR code for the origin.
destination_stationstringArrival station name.
destination_idstringEVA/IBNR code for the destination.
departure_timestringScheduled departure (ISO 8601 local time).
departure_time_realtimestringReal-time-adjusted departure when bahn.de has it. Empty otherwise.
arrival_timestringScheduled arrival.
arrival_time_realtimestringReal-time-adjusted arrival when available.
duration_minutesnumberTotal scheduled duration in minutes.
transfersnumberNumber of train changes.
train_segmentsarray of stringPer-leg formatted lines: train, route, times, platforms, carrier.
platform_departurestringDeparture platform at the origin.
platform_arrivalstringArrival platform at the destination.
train_typestringPrimary train type — ICE, IC, EC, IR, RE, RB, S, U, Bus.
train_numberstringPrimary train number (e.g. "1005").
train_namestringFriendly name (e.g. "ICE 1005").
carrierstringOperating carrier — DB Fernverkehr AG, Flixtrain, ODEG, and so on.
delay_minutesnumber|nullReal-time delay in minutes at origin. null when no real-time data is available.
cancelledbooleanTrue if any segment is cancelled.
occupancy_class_1number1st-class occupancy forecast (0=unknown, 1=low, 2=medium, 3=high, 4=very high).
occupancy_class_2number2nd-class occupancy forecast on the same 0-4 scale.
ris_notizenarray of stringReal-time advisories (cancellations, platform changes, board-only stops).
bahn_de_urlstringDirect deeplink into bahn.de for this trip.

FAQ

How do I scrape Deutsche Bahn schedules?

Deutsche Bahn Timetable Scraper hits the bahn.de Reiseauskunft JSON backend directly. You pass an origin, destination, and date — the scraper resolves stations, queries the journey API, and returns clean records. No browser, no captcha solving.

How much does Deutsche Bahn Timetable Scraper cost to run?

The scraper runs on pay-per-event pricing: $0.10 per actor start plus $0.001 per record. A 50-record run lands at about $0.15. Bulk operators can negotiate a custom rate.

What data can I get from bahn.de?

Deutsche Bahn Timetable Scraper returns 24 fields per journey, including station names and EVA codes, scheduled and real-time departure/arrival times, transfers, per-segment train info (type, number, platforms, carrier), occupancy forecasts for both classes, and any active real-time advisories.

Does Deutsche Bahn Timetable Scraper need proxies?

Deutsche Bahn Timetable Scraper works without proxies for small runs but ships with Apify Residential enabled by default. bahn.de sits behind Akamai, which gets uncomfortable around ~5 req/s per IP — proxies prevent that conversation.

Can I get fare data?

Deutsche Bahn Timetable Scraper does not return ticket prices. The bahn.de fare endpoint moved behind authentication in 2026 and is no longer reachable from the public web SPA. The scraper covers schedules, routing, platforms, and real-time data — everything except the price tag.

Is there a Deutsche Bahn API for train times and delays?

Deutsche Bahn does not publish an open public timetable API. This scraper reads the same bahn.de Reiseauskunft (HAFAS) JSON backend the official app uses and returns it as clean records, so you get German train times, schedules, and real-time delays through an Apify endpoint without a commercial HAFAS contract.

Does it support international DB routes?

Deutsche Bahn Timetable Scraper supports any journey routable through DB's Reiseauskunft, including international routes to Austria, Switzerland, France, Netherlands, Belgium, Poland, and Denmark. Pass any DB-recognised station name and it works.


Need More Features?

Need station-board mode, fare data, or a different rail operator? File an issue or get in touch.

Why Use Deutsche Bahn Timetable Scraper?

  • Affordable — $0.10/start + $0.001/record. A 1000-journey run is roughly $1.10, which is less than the train fare.
  • First on Apify — There is no other Deutsche Bahn scraper on the store. The commercial HAFAS licence runs into thousands of euros per year, which is a different conversation.
  • Real-time aware — Surfaces delays, cancellations, platform changes, and occupancy directly from the same feed bahn.de's app uses, so the data matches what passengers actually see.

You might also like

Deutsche Bahn Scraper - Train Schedules & Prices

studio-amba/deutsche-bahn-scraper

Scrape train connections, schedules, and prices from Deutsche Bahn (bahn.de). Extract ICE, IC, RE, and S-Bahn routes with departure/arrival times, duration, transfers, carriers, and live fares across Germany and Europe.

👁 User avatar

Studio Amba

2

Deutsche Bahn Train Tickets & Connections Scraper

jindrich.bar/deutsche-bahn-ticket-scraper

Scrape live Deutsche Bahn train connections, schedules, ticket prices, transfers, delays, and fares across Germany and Europe. Extract structured DB timetable data for travel apps, price monitoring, analytics, and AI agents.

👁 User avatar

Jindřich Bär

14

5.0

ÖBB Train Ticket and Connection Scraper

jindrich.bar/oebb-ticket-scraper

Scrape live Austrian Federal Railways train connections, schedules, ticket prices, transfers, delays, and fares across Austria and Europe. Extract structured ÖBB timetable data for travel apps, price monitoring, analytics, and AI agents.

👁 User avatar

Jindřich Bär

3

5.0

SNCF Train Ticket and Connection Scraper

jindrich.bar/sncf-train-ticket-scraper

Scrape live SNCF train connections, schedules, ticket prices, transfers, delays, and fares across France and Europe. Extract structured SNCF timetable data for travel apps, price monitoring, analytics, and AI agents.

👁 User avatar

Jindřich Bär

4

5.0

Turkish State Railways Ticket and Connection Scraper

jindrich.bar/tcdd-ticket-scraper

Scrape live TCDD train connections, schedules, ticket prices, transfers, delays, and fares across Turkey and Europe. Extract structured TCDD timetable data for travel apps, price monitoring, analytics, and AI agents.

👁 User avatar

Jindřich Bär

2

5.0

Trenitalia Train Ticket and Connection Scraper

jindrich.bar/trenitalia-ticket-scraper

Scrape live Trenitalia train connections, schedules, ticket prices, transfers, delays, and fares across Italy and Europe. Extract structured Trenitalia timetable data for travel apps, price monitoring, analytics, and AI agents.

👁 User avatar

Jindřich Bär

5

5.0

Deutsche Gerichtsentscheidungen API

fuchsblau/court-decisions-de

👁 User avatar

Matthias Nitsch

2

Deutsche Messe Exhibitor List Scraper

skython/deutsche-messe-exhibitor-list-scraper

Simple web scraper for extracting exhibitor data from Deutsche Messe trade show exhibitor lists. Extract company details using this scraping tool for B2B lead generation, event networking, and market research. Supports multiple Deutsche Messe trade fair websites with a consistent HTML structure.

17

5.0

Irish Rail Scraper - Train Fares & Schedules

studio-amba/irish-rail-scraper

Scrape train schedules, fares, and real-time data from Irish Rail (irishrail.ie). Extract Intercity, DART, Commuter, and Enterprise routes across Ireland. No login required.

👁 User avatar

Studio Amba

2

Trainline Scraper — European Train Routes & Prices

studio-amba/trainline-scraper

Scrape train routes, schedules, operators, and prices from Trainline (thetrainline.com). Covers European rail travel across 40+ countries.

👁 User avatar

Studio Amba

5