Skip to content
Scrappa Get API key
Trainline API 1 credit/request

Trainline Journeys Page API Documentation

GET https://scrappa.co/api/trainline/journeys/page

Trainline Journeys Page API Documentation Read more journeys of a search. Pass the search_id of the search answer. The answer has a new search_id for the page after this one and previous_search_id with the id you passed. The journeys are later or earlier departures than the ones you already have, never the first page again.

Trainline Journeys Page API Documentation 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/trainline/journeys/page
Auth header
x-api-key
Cost
1 credit/request
search_id = 1234567890
Response preview
200 OK
{
    "data": {
        "page": "next",
        "currency": "GBP",
        "journeys": [
            {
                "id": "96428796-46b3-4c76-93a6-0ccf6a3b2ddb",
                "legs": [
                    {
                        "origin": {
                            "code": "urn:trainline:atoc:loc:EUS1444",
                            "name": "London Euston",
                            "latitude": 51.5284,
                            "timezone": "Europe/London",
...

Parameters

Start with the required fields, then add optional filters only when your use case needs them.

Runnable path

1 required parameter needed before sending a request.

4 optional filters available.

search_id string Required

search_id of a journey search answer.

Example value 1234567890
direction string Optional

outward or inward. Defaults to outward.

Example value example
page string Optional

next or previous. Defaults to next.

Example value 1
transport_mode string Optional

all, train or coach. Use the same value as in the search.

Example value example
currency string Optional

GBP or EUR. Use the same value as in the search.

Example value USD

Response Schema

Example response fields are illustrative; inspect the JSON before integrating.

Example response fields

Scan these fields before integrating.

data meta success
JSON Response
200 OK
{
    "data": {
        "page": "next",
        "currency": "GBP",
        "journeys": [
            {
                "id": "96428796-46b3-4c76-93a6-0ccf6a3b2ddb",
                "legs": [
                    {
                        "origin": {
                            "code": "urn:trainline:atoc:loc:EUS1444",
                            "name": "London Euston",
                            "latitude": 51.5284,
                            "timezone": "Europe/London",
                            "longitude": -0.1346,
                            "short_code": "EUS",
                            "country_code": "GB"
                        },
                        "carrier": {
                            "code": "urn:trainline:atoc:carrier:VT",
                            "name": "Avanti West Coast"
                        },
                        "cancelled": false,
                        "reservable": true,
                        "destination": {
                            "code": "urn:trainline:atoc:loc:MAN2968",
                            "name": "Manchester Piccadilly",
                            "latitude": 53.4767,
                            "timezone": "Europe/London",
                            "longitude": -2.229,
                            "short_code": "MAN",
                            "country_code": "GB"
                        },
                        "distance_km": 280,
                        "arrival_time": "2026-11-03T12:19:00+00:00",
                        "timetable_id": "W34102",
                        "train_number": "VT707000",
                        "departure_time": "2026-11-03T10:13:00+00:00",
                        "transport_mode": "train",
                        "arrival_platform": "6",
                        "bike_restriction": "ALLOWEDWITHRESERVATION",
                        "duration_minutes": 126,
                        "departure_platform": "14",
                        "replacement_service": false,
                        "reservation_mandatory": true
                    }
                ],
                "offers": [
                    {
                        "id": "99cb7a8a-920c-409f-affd-c3b9d625d524",
                        "fares": [
                            {
                                "id": "965709bf-072b-4f40-8706-384427167bb4",
                                "code": "urn:trainline:atoc:fare:SVS",
                                "name": "Off-Peak Single",
                                "tags": [
                                    "flex:any-off-peak",
                                    "refundable:yes"
                                ],
                                "price": null,
                                "terms": [
                                    "urn:trainline:noncon:atoc:rfndbl",
                                    "urn:trainline:noncon:atoc:anyoffpeak"
                                ],
                                "category": "Off-Peak",
                                "passengers": 1,
                                "valid_until": {
                                    "inward": null,
                                    "outward": "2026-11-04T04:30:00+00:00"
                                },
                                "availability": {
                                    "status": "AVAILABLE",
                                    "remaining": null
                                },
                                "travel_class": "Standard",
                                "passenger_types": [
                                    {
                                        "name": "Adult",
                                        "max_age": null,
                                        "min_age": 16
                                    }
                                ],
                                "validity_period": "P1D",
                                "delivery_methods": [
                                    "AtocMTicket",
                                    "AtocETicket",
                                    "AtocKiosk",
                                    "AtocUkSecondClassPost",
                                    "AtocUKInternationalPost",
                                    "AtocUKSpecialDelivery",
                                    "AtocIndirectETicket"
                                ],
                                "route_restriction": "Travel is allowed via any permitted route.",
                                "per_passenger_price": null
                            }
                        ],
                        "vendor": null,
                        "fare_code": "urn:trainline:atoc:fare:SVS",
                        "fare_name": "Off-Peak Single",
                        "full_price": {
                            "amount": 79.8,
                            "currency": "GBP"
                        },
                        "section_id": "3393fcba-ae9a-424a-a56a-db18195d99ce",
                        "description": "Any off-peak train.",
                        "total_price": {
                            "amount": 79.8,
                            "currency": "GBP"
                        },
                        "travel_classes": [
                            "Standard"
                        ],
                        "included_extras": [
                            {
                                "name": "Allocated seating",
                                "group": "seatSelection",
                                "quantity": 1
                            },
                            {
                                "name": "WiFi",
                                "group": "wifi",
                                "quantity": 1
                            },
                            {
                                "name": "Power socket",
                                "group": "electricSocket",
                                "quantity": 1
                            },
                            {
                                "name": "1 suitcase (max 30x70x90cm), 1 small carry-on bag, 1 handbag",
                                "group": "luggage",
                                "quantity": 1
                            }
                        ],
                        "available_extras": [
                            {
                                "name": "Bike",
                                "group": "bicycle",
                                "quantity": 4
                            },
                            {
                                "name": "Allocated seating",
                                "group": "seatSelection",
                                "quantity": 1
                            },
                            {
                                "name": "WiFi",
                                "group": "wifi",
                                "quantity": 1
                            },
                            {
                                "name": "Power socket",
                                "group": "electricSocket",
                                "quantity": 1
                            },
                            {
                                "name": "1 suitcase (max 30x70x90cm), 1 small carry-on bag, 1 handbag",
                                "group": "luggage",
                                "quantity": 1
                            }
                        ],
                        "fare_change_conditions": [
                            "Flexible ticket only valid at specific off-peak times of the day.",
                            "Your  journey must be on off-peak trains on the date specified. Off-peak times vary by route - our journey planner only shows off-peak tickets on trains for which they are valid.",
                            "Can be booked in advance or purchased on the day of travel.",
                            "Refundable until 23:59 the day before the ticket becomes valid for travel. Non-refundable if purchased on the day of travel.",
                            "You can change the time of your journey without changing your tickets. If you wish to change your date of travel or Class of ticket, you will need to buy a new ticket and apply for a refund on your current ticket.",
                            "Yes - normal railcard and child discounts available.",
                            "Break of journey is generally permitted unless prohibited for the journey that you are making. If you intend to break your journey, please contact us to check if it is permitted. You can always break your journey where necessary to change train.",
                            "Mobile Tickets and etickets aren't valid for travel on London Underground. See our FAQs for more info.",
                            "SVS",
                            "View information about wheelchair spaces and accessibility on board your train here www.nationalrail.co.uk/on-the-train/accessible-train-travel-and-facilities. Find out how to book travel assistance here www.nationalrail.co.uk/help-and-assistance/passenger-assist."
                        ],
                        "requires_travel_together": false
                    },
                    {
                        "id": "76338dc6-0974-4b17-9abb-591d9a53ca6f",
                        "fares": [
                            {
                                "id": "2d8d72c1-2da3-477f-b456-826bada7d533",
                                "code": "urn:trainline:atoc:fare:SOS",
                                "name": "Anytime Single",
                                "tags": [
                                    "flex:anytime",
                                    "refundable:yes"
                                ],
                                "price": null,
                                "terms": [
                                    "urn:trainline:noncon:atoc:rfndbl",
                                    "urn:trainline:noncon:atoc:anytime"
                                ],
                                "category": "Peak",
                                "passengers": 1,
                                "valid_until": {
                                    "inward": null,
                                    "outward": "2026-11-05T04:30:00+00:00"
                                },
                                "availability": {
                                    "status": "AVAILABLE",
                                    "remaining": null
                                },
                                "travel_class": "Standard",
                                "passenger_types": [
                                    {
                                        "name": "Adult",
                                        "max_age": null,
                                        "min_age": 16
                                    }
                                ],
                                "validity_period": "P2D",
                                "delivery_methods": [
                                    "AtocMTicket",
                                    "AtocETicket",
                                    "AtocKiosk",
                                    "AtocUkSecondClassPost",
                                    "AtocUKInternationalPost",
                                    "AtocUKSpecialDelivery",
                                    "AtocIndirectETicket"
                                ],
                                "route_restriction": "Travel is allowed via any permitted route.",
                                "per_passenger_price": null
                            }
                        ],
                        "vendor": null,
                        "fare_code": "urn:trainline:atoc:fare:SOS",
                        "fare_name": "Anytime Single",
                        "full_price": {
                            "amount": 193,
                            "currency": "GBP"
                        },
                        "section_id": "3393fcba-ae9a-424a-a56a-db18195d99ce",
                        "description": "Travel any time of day.",
                        "total_price": {
                            "amount": 193,
                            "currency": "GBP"
                        },
                        "travel_classes": [
                            "Standard"
                        ],
                        "included_extras": [
                            {
                                "name": "Allocated seating",
                                "group": "seatSelection",
                                "quantity": 1
                            },
                            {
                                "name": "WiFi",
                                "group": "wifi",
                                "quantity": 1
                            },
                            {
                                "name": "Power socket",
                                "group": "electricSocket",
                                "quantity": 1
                            },
                            {
                                "name": "1 suitcase (max 30x70x90cm), 1 small carry-on bag, 1 handbag",
                                "group": "luggage",
                                "quantity": 1
                            }
                        ],
                        "available_extras": [
                            {
                                "name": "Bike",
                                "group": "bicycle",
                                "quantity": 4
                            },
                            {
                                "name": "Allocated seating",
                                "group": "seatSelection",
                                "quantity": 1
                            },
                            {
                                "name": "WiFi",
                                "group": "wifi",
                                "quantity": 1
                            },
                            {
                                "name": "Power socket",
                                "group": "electricSocket",
                                "quantity": 1
                            },
                            {
                                "name": "1 suitcase (max 30x70x90cm), 1 small carry-on bag, 1 handbag",
                                "group": "luggage",
                                "quantity": 1
                            }
                        ],
                        "fare_change_conditions": [
                            "Flexible ticket with no time restrictions on when you can travel.",
                            "Your journey must be on the date, or the day after the date, specified on the ticket.",
                            "Can be booked in advance or purchased on the day of travel.",
                            "Refundable until 23:59 the day before the ticket becomes valid for travel. Non-refundable if purchased on the day of travel.",
                            "If you wish to travel on a date outside of the ticket validity period or change the Class of ticket, you will need to buy a new ticket and apply for a refund on your current ticket.",
                            "Yes - normal railcard and child discounts available.",
                            "You may start, break and resume, or end your journey at any intermediate station along the route of travel.",
                            "Mobile Tickets and etickets aren't valid for travel on London Underground. See our FAQs for more info.",
                            "SOS",
                            "View information about wheelchair spaces and accessibility on board your train here www.nationalrail.co.uk/on-the-train/accessible-train-travel-and-facilities. Find out how to book travel assistance here www.nationalrail.co.uk/help-and-assistance/passenger-assist."
                        ],
                        "requires_travel_together": false
                    }
                ],
                "changes": 0,
                "carriers": [
                    {
                        "code": "urn:trainline:atoc:carrier:VT",
                        "name": "Avanti West Coast"
                    }
                ],
                "sellable": true,
                "co2_grams": 9828,
                "distance_km": 280,
                "arrival_time": "2026-11-03T12:19:00+00:00",
                "departure_time": "2026-11-03T10:13:00+00:00",
                "live_confidence": null,
                "bike_restriction": "ALLOWEDWITHRESERVATION",
                "duration_minutes": 126,
                "unsellable_reason": null,
                "cheapest_total_price": {
                    "amount": 79.8,
                    "currency": "GBP"
                }
            }
        ],
        "warnings": null,
        "direction": "outward",
        "search_id": "9d18bc36-37ba-48dc-bc87-17974b123922",
        "expires_at": "2026-10-20T15:58:15+00:00",
        "journey_count": 1,
        "transport_mode": "all",
        "inward_journeys": null,
        "previous_search_id": "1ab6ab81-b316-4f2e-ba21-df3055a8e3cc",
        "requires_inward_call": false
    },
    "meta": {
        "billable": true,
        "endpoint_family": "journeys_page"
    },
    "success": true
}

Errors

Handle these documented responses before retrying or showing customer-facing failures.

422

Validation Error

A required parameter is missing or invalid. This response is not billable.

{
    "errors": {
        "origin": [
            "The origin is a station id from the stations endpoint."
        ]
    },
    "message": "The request validation failed"
}
404

Resource Not Found

The search id is unknown or has expired. This response is not billable.

{
    "meta": {
        "billable": false,
        "retryable": false,
        "endpoint_family": "journeys_page"
    },
    "error": {
        "code": "NOT_FOUND",
        "message": "Trainline found no match. Use station ids from the stations endpoint and ids from a fresh search."
    },
    "success": false
}
503

Upstream Unavailable

Trainline did not answer in time. Scrappa retries on other exits first. This response is not billable. Retry after a few seconds.

{
    "meta": {
        "billable": false,
        "retryable": true,
        "endpoint_family": "journeys_page"
    },
    "error": {
        "code": "UPSTREAM_UNAVAILABLE",
        "message": "The Trainline service is temporarily unavailable. Please retry."
    },
    "success": false
}

Generate Code with AI

Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.

Try It Live

Test this endpoint in our interactive playground with real data.