SNCF Scraper - French Train Schedules & Prices avatar

SNCF Scraper - French Train Schedules & Prices

Pricing

from $9.00 / 1,000 sncf train connections

Go to Apify Store
SNCF Scraper - French Train Schedules & Prices

SNCF Scraper - French Train Schedules & Prices

Scrape SNCF Connect train connections, schedules, displayed ticket prices, operators, seat availability hints, and onboard services.

Pricing

from $9.00 / 1,000 sncf train connections

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

8 days ago

Last modified

Security

Limited permissions

Share

SNCF Scraper searches the public SNCF Connect booking flow for one one-way route and date and returns one record per train connection: departure and arrival times, duration, direct or connecting, operator (TGV INOUI, OUIGO, TER, INTERCITÉS, Eurostar), displayed second- and first-class fares with seat-count hints, and onboard services. It needs no SNCF account and never books or pays.

What data does it return?

Each dataset item is one connection listed on the SNCF Connect results page:

FieldDescription
origin, destinationStation labels shown by SNCF Connect (nearby stations such as Marne-la-Vallée can appear for a Paris search)
departureTime, arrivalTimeISO timestamps in Europe/Paris
durationMinutesJourney duration
direct, changesDirect journey flag and number of changes
carrier, trainTypeDisplayed operator and normalized family (tgv-inoui, ouigo, ter, intercites, eurostar or other)
lowestPrice, faresDisplayed EUR fares by class (second, first), with hints such as "2 places à ce prix"
servicesOnboard services such as Wi-Fi, bar car or bicycle space
sourceUrl, searchedAtResults page and retrieval time

Prices and availability are live snapshots of what SNCF Connect displays. They are not a quote, booking or inventory guarantee.

{
"origin": "Paris - Gare De Lyon - Hall 1 & 2",
"destination": "Lyon Part Dieu",
"departureTime": "2026-10-28T09:00:00.000+01:00",
"arrivalTime": "2026-10-28T10:56:00.000+01:00",
"durationMinutes": 116,
"changes": 0,
"direct": true,
"carrier": "TGV INOUI",
"trainType": "tgv-inoui",
"services": ["Wifi à bord", "Voiture bar", "Espace vélo payant"],
"lowestPrice": 47,
"currency": "EUR",
"fares": [{ "className": "second", "price": 47, "currency": "EUR", "priceFrom": false, "availabilityText": "2 places à ce prix" }],
"source": "SNCF Connect"
}

How do I use it?

{
"from": "Paris Gare de Lyon",
"to": "Lyon Part-Dieu",
"departureTime": "08:00",
"directOnly": false,
"trainType": "all",
"priceMode": "prices",
"maxResults": 5,
"maxLoadMoreClicks": 0
}
  • from, to: station names as SNCF Connect shows them. City names such as Paris or Lyon are resolved to the best matching station.
  • departureDate: YYYY-MM-DD in Europe/Paris. Leave it empty to search tomorrow; past dates are rejected.
  • departureTime: earliest departure hour (HH:mm). SNCF Connect lists connections around that hour.
  • directOnly, trainType: filters applied to the listed connections.
  • priceMode: prices returns fares; schedules returns timetables without fares.
  • maxResults: 1–50 connections, default 5. maxLoadMoreClicks: 0–8 extra result pages, default 0. The first page usually lists about 6 connections; each extra page loads the next journeys (2 extra pages returned 12 connections in testing). Extra pages stop early when SNCF offers no more or the run's time budget is reached; OUTPUT.loadMoreClicks reports how many were loaded.

Run diagnostics are written to the OUTPUT record with an outcome of DATA, EMPTY, BLOCKED, REJECTED or FAILED. Diagnostics never go into the connection dataset.

Current status (2026-11-02)

SNCF Connect protects its site with a bot check that sometimes refuses a search. The Actor then retries in a new browser session, at most twice and at most once on a mobile-network IP. If every session is refused, the run ends as FAILED with outcome BLOCKED, zero train-connection charges and a status message saying so; retry later. The Actor never solves CAPTCHAs or signs in. Some regional routes open SNCF's multimodal planner instead of ticket results; those runs also end as FAILED with zero result charges.

Pricing

Pay per event. Prices by Apify plan tier:

EventFREEBRONZESILVERGOLD and above
train-connection (one connection saved to the dataset)$0.012$0.011$0.010$0.009
apify-actor-start (per run, per started GB of memory)$0.09$0.09$0.09$0.09

The default memory is 1 GB, so a run is charged one start event. The default 5-connection run costs $0.15 on the FREE tier. A connection is saved before it is charged, the result limit is lowered to fit your remaining budget before the browser opens, and blocked or empty runs charge no train-connection events.

FAQ

Do I need an SNCF account? No. The Actor reads the public search results only. It never signs in, books or pays.

Why did my run fail with "bot check"? SNCF Connect sometimes refuses automated searches. The Actor retries in a new browser session, at most twice and at most once on a mobile-network IP; if every session is refused, the run ends as FAILED with no result charges. Retry later.

Can I search a return trip? No. Run one search per direction.

Are the prices guaranteed? No. They are the fares SNCF Connect displays at search time for one adult without discount cards.

Why do I see a station I did not ask for? SNCF Connect includes nearby stations, for example Marne-la-Vallée - Chessy for Paris to Lyon. The record shows the actual departure station.

How many connections can one run return? Up to 50 (maxResults). The first results page usually holds about 6 connections; set maxLoadMoreClicks to load more pages.

Compliance

Use this Actor in line with SNCF Connect's terms, fare display conditions and applicable law. Do not use it to automate purchases or to get around access controls.

Last verified: 2026-11-02