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

Omio Trip Detail API Documentation

GET https://scrappa.co/api/omio/trip

Omio Trip Detail API Documentation Open one trip of an earlier search. Pass the search_id from search_meta.search_id and the trip_id of a result. The answer has the same trip object as the search with every leg, the changes between legs and the fare offers. A trip is served from the stored search for about two hours, so the call is fast. After that the search has expired and the answer is a not found error. Run a new search then. For a search made with return_date, the answer also has trip_type round_trip, the return_date and return_options: the return trips for this outbound, cheapest first. Each return option has round_trip_price, the total price of outbound and return together. Omio gives these in a second lookup for the chosen outbound, so the call takes a few seconds and has upstream_calls above 0. If Omio gives no return trips, the call fails and is not billed.

Omio Trip Detail API Documentation 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/omio/trip
Auth header
x-api-key
Cost
1 credit/request
search_id = 1234567890 trip_id = 1234567890
Response preview
200 OK
{
    "data": {
        "trip": {
            "legs": [
                {
                    "mode": "train",
                    "tags": [],
                    "class": null,
                    "index": 0,
                    "company": "FlixTrain",
                    "line_number": "FlixTrain",
                    "arrival_time": "2026-11-14T15:29:00.000+01:00",
                    "arrival_zone": "Europe/Berlin",
                    "departure_time": "2026-11-14T09:57:00.000+01:00",
...

Parameters

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

Runnable path

2 required parameters needed before sending a request.

search_id string Required

The search id from search_meta.search_id of a search response.

Example value 1234567890
trip_id string Required

The trip_id of one result of that search.

Example value 1234567890

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": {
        "trip": {
            "legs": [
                {
                    "mode": "train",
                    "tags": [],
                    "class": null,
                    "index": 0,
                    "company": "FlixTrain",
                    "line_number": "FlixTrain",
                    "arrival_time": "2026-11-14T15:29:00.000+01:00",
                    "arrival_zone": "Europe/Berlin",
                    "departure_time": "2026-11-14T09:57:00.000+01:00",
                    "departure_zone": "Europe/Berlin",
                    "duration_minutes": 332,
                    "marketing_company": null,
                    "no_change_for_next_segment": false
                },
                {
                    "mode": "bus",
                    "tags": [],
                    "class": null,
                    "index": 1,
                    "company": "FlixBus",
                    "line_number": "FlixBus",
                    "arrival_time": "2026-11-15T02:20:00.000+01:00",
                    "arrival_zone": "Europe/Paris",
                    "departure_time": "2026-11-14T17:45:00.000+01:00",
                    "departure_zone": "Europe/Berlin",
                    "duration_minutes": 515,
                    "marketing_company": null,
                    "no_change_for_next_segment": false
                }
            ],
            "mode": "bus",
            "price": {
                "currency": "EUR",
                "amount_minor": 5600
            },
            "stops": 1,
            "offers": [
                {
                    "type": "ONE_WAY",
                    "class": null,
                    "price": {
                        "currency": "EUR",
                        "amount_minor": 5600
                    },
                    "is_available": true,
                    "discount_cards": [],
                    "availability_rank": 99,
                    "unavailability_reasons": []
                }
            ],
            "arrival": {
                "city": "Paris",
                "name": "Paris, Quai de Bercy (Bercy Seine)",
                "type": "busstation",
                "latitude": 48.83632528252408,
                "iata_code": null,
                "longitude": 2.3793135252719426,
                "position_id": 16834868,
                "country_code": "FR"
            },
            "changes": [
                {
                    "type": "transfer",
                    "after_leg": 0,
                    "to_position_id": 16904720,
                    "duration_minutes": 136,
                    "from_position_id": 16904720
                }
            ],
            "trip_id": "5607700354612381189-1045-bus-1",
            "provider": {
                "id": 1045,
                "code": "meinfernbus_flixbus",
                "name": "FlixBus",
                "logo_url": "https://static.omio.design/web/logos/31/meinfernbus_flixbus.png",
                "toc_codes": [],
                "iata_codes": []
            },
            "departure": {
                "city": "Berlin",
                "name": "Berlin Hbf",
                "type": "station",
                "latitude": 52.525102698597905,
                "iata_code": null,
                "longitude": 13.369429982803336,
                "position_id": 334196,
                "country_code": "DE"
            },
            "journey_id": "26271589",
            "is_bookable": true,
            "outbound_id": "5607700354612381189",
            "arrival_time": "2026-11-15T02:20:00.000+01:00",
            "tickets_left": null,
            "departure_time": "2026-11-14T09:57:00.000+01:00",
            "original_price": null,
            "is_split_ticket": false,
            "duration_minutes": 983,
            "selling_companies": [
                "FlixBus"
            ],
            "service_providers": [
                "Flixbus"
            ],
            "is_routed_connection": false
        },
        "currency": "EUR",
        "search_id": "EEEEB9FDC8C6C4EA495BBAAB911D3E2D8",
        "search_meta": {
            "source": "cache",
            "upstream_calls": 0
        }
    },
    "meta": {
        "billable": true,
        "endpoint_family": "trip_detail"
    },
    "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": {
        "trip_id": [
            "The trip_id of a result of that search is required."
        ]
    },
    "message": "The request validation failed"
}
404

Resource Not Found

The search, trip or route was not found or has expired. This response is not billable.

{
    "meta": {
        "billable": false,
        "retryable": false,
        "endpoint_family": "trip_detail"
    },
    "error": {
        "code": "NOT_FOUND",
        "message": "The requested Omio resource was not found."
    },
    "success": false
}
503

Service Unavailable

Omio could not be reached, did not finish the search in time, or answered with an unexpected shape. This response is not billable.

{
    "meta": {
        "billable": false,
        "retryable": true,
        "endpoint_family": "trip_detail"
    },
    "error": {
        "code": "UPSTREAM_UNAVAILABLE",
        "message": "The Omio API 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.