# Omio Trip Detail API Documentation

<p><strong>Omio Trip Detail API Documentation</strong> 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.</p>

- **Documentation:** [https://scrappa.co/docs/omio-api/omio_trip](https://scrappa.co/docs/omio-api/omio_trip)
- **API group:** Omio API
- **Endpoint:** `GET https://scrappa.co/api/omio/trip`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `search_id` | string | Yes | The search id from search_meta.search_id of a search response. |
| `trip_id` | string | Yes | The trip_id of one result of that search. |

## Example response

```json
{
    "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

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A required parameter is missing or invalid. This response is not billable. |
| 404 | Resource Not Found | The search, trip or route was not found or has expired. This response is not billable. |
| 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. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
