Places
/api/omio/places
Find cities, stations and airports by name
Scrappa's Omio API returns structured JSON from Omio, the European travel comparison site. Find cities, stations and airports, search train, bus and flight trips for a route and date with prices, carriers, durations, changes and every leg, read the cheapest price per day and mode, open one trip, list carriers and discount cards, and read route ratings and reviews. Prices are integer minor units with a currency. Scrappa is an independent service and is not affiliated with Omio.
Try it now
Use the first endpoint in this API family with a Scrappa API key. Every account includes 500 free monthly credits, so you can validate the response shape before buying credits.
curl -X GET "https://scrappa.co/api/omio/search?origin_id=376217&destination_id=379727&date=2027-03-14&adults=1&sort=price&limit=1" \
-H "Accept: application/json" \
-H "X-API-KEY: YOUR_API_KEY"
{
"success": true,
"data": {
"origin_id": 376217,
"destination_id": 379727,
"date": "2026-11-14",
"passengers": {
"adults": 1,
"children": 0,
"infants": 0
},
"currency": "EUR",
"sort": "price",
"sort_source": "client",
"results_count": 8,
"results_per_mode": {
"train": 1,
"bus": 3,
"flight": 4
},
"price_floor_per_mode": {
"bus": {
"amount_minor": 5200,
"currency": "EUR"
},
"flight": {
"amount_minor": 15300,
"currency": "EUR"
},
"train": {
"amount_minor": 12000,
"currency": "EUR"
}
},
"pagination": {
"page": 1,
"page_size": 2,
"total": 8,
"has_more": true
},
"search_meta": {
"search_id": "EEEEB9FDC8C6C4EA495BBAAB911D3E2D8",
"upstream_calls": 2,
"poll_count": 1,
"modes_requested": [
"train",
"bus",
"flight"
],
"modes_done": [
"flight",
"bus",
"train"
]
},
"results": [
{
"trip_id": "5607700354612381189-1045-bus-1",
"journey_id": "26271589",
"outbound_id": "5607700354612381189",
"mode": "bus",
"provider": {
"id": 1045,
"name": "FlixBus",
"code": "meinfernbus_flixbus",
"logo_url": "https://static.omio.design/web/logos/31/meinfernbus_flixbus.png",
"toc_codes": [],
"iata_codes": []
},
"price": {
"amount_minor": 5600,
"currency": "EUR"
},
"original_price": null,
"duration_minutes": 983,
"stops": 1,
"departure_time": "2026-11-14T09:57:00.000+01:00",
"arrival_time": "2026-11-15T02:20:00.000+01:00",
"departure": {
"position_id": 334196,
"name": "Berlin Hbf",
"city": "Berlin",
"type": "station",
"country_code": "DE",
"iata_code": null,
"latitude": 52.525102698597905,
"longitude": 13.369429982803336
},
"arrival": {
"position_id": 16834868,
"name": "Paris, Quai de Bercy (Bercy Seine)",
"city": "Paris",
"type": "busstation",
"country_code": "FR",
"iata_code": null,
"latitude": 48.83632528252408,
"longitude": 2.3793135252719426
},
"legs": [
{
"index": 0,
"mode": "train",
"company": "FlixTrain",
"marketing_company": null,
"line_number": "FlixTrain",
"class": null,
"departure_time": "2026-11-14T09:57:00.000+01:00",
"arrival_time": "2026-11-14T15:29:00.000+01:00",
"duration_minutes": 332,
"departure_zone": "Europe/Berlin",
"arrival_zone": "Europe/Berlin",
"no_change_for_next_segment": false,
"tags": []
}
],
"changes": [
{
"after_leg": 0,
"type": "transfer",
"duration_minutes": 136,
"from_position_id": 16904720,
"to_position_id": 16904720
}
],
"offers": [
{
"type": "ONE_WAY",
"class": null,
"price": {
"amount_minor": 5600,
"currency": "EUR"
},
"discount_cards": [],
"availability_rank": 99,
"is_available": true,
"unavailability_reasons": []
}
],
"tickets_left": null,
"is_bookable": true,
"is_split_ticket": false,
"is_routed_connection": false,
"selling_companies": [
"FlixBus"
],
"service_providers": [
"Flixbus"
]
}
]
},
"meta": {
"endpoint_family": "trip_search",
"billable": true
}
}
Structured data for real applications. Here are some ideas.
Compare train, bus and flight prices, durations and changes for the same route and date in one call.
Read the cheapest price per day and mode for a date range to pick the best day to travel.
Add place autocomplete and trip results with carriers and legs to your own travel app.
Measure how many trips, carriers and which price floor each mode has on a route.
See which carriers run a route and how their cheapest fares differ by mode.
Omio scraper API
The Omio API is built for travel price comparison, route research and travel app features. Search trips between two places on a date and get the carrier, price, duration, stops and every leg of each trip, then open one trip, read the cheapest price per day, or check the rating of a route.
Find place ids for cities, stations and airports with the places endpoint.
Search trips by train, bus and flight in one call, with up to 100 trips per page.
Sort by price, duration, departure, arrival or smart order, and filter by travel mode.
Read prices as integer minor units with a currency, never as floats.
Open a trip by id for its legs, line numbers, classes, changes and fare offers.
Search a city, station or airport by name and take its position_id as origin_id or destination_id.
Open Omio Places API docsPass both ids and a date to get trips of all modes with price, carrier, duration and legs, sorted and paged by Scrappa.
Open Omio Trip Search API docsPass a date range to read the cheapest price per day and mode, with an optional calendar minimum.
Open Omio Price Summary API docsEverything you need in one API.
/api/omio/places
Find cities, stations and airports by name
/api/omio/search
Search train, bus and flight trips with sorting and paging
/api/omio/search/summary
Cheapest price per day and mode for a date range
/api/omio/trip
Get the legs, changes and offers of one trip
/api/omio/providers
List the carriers of a search or the discount card catalogue
/api/omio/route-page
Get route rating, reviews and the booking price ladder
See how Scrappa compares to the official API.
| Feature | Scrappa | ScrapingBee / ScraperAPI |
|---|---|---|
| Omio trip data as JSON | Build your own parser | |
| Train, bus and flight in one search | ||
| Trip detail with legs and changes | ||
| Price per 1k requests | From $0.20 | Varies by credits per request |
| Unified API key | Yes (80+ APIs) | Scraping only |
| Free tier | 500 credits/month | Trial credits |
No. Scrappa is an independent service and is not affiliated with or endorsed by Omio. The Omio API returns structured JSON from public data through a Scrappa API key.
Every Scrappa account includes 500 free credits each month. After that, each request costs one credit, which works out to $0.20 to $0.30 per 1,000 requests depending on the credit pack or plan. Failed requests are never charged.
Every price is an integer in minor units (cents) with its currency, for example 13300 and EUR for 133.00 EUR. Choose the currency with the currency parameter.
The order that Omio returns is not strictly sorted by price or duration. Scrappa sorts the full result set itself and reports sort_source as client. Departure and arrival use the Omio order.
About two hours. The trip endpoint uses the search_id of a search response. After that the search has expired and you get a not found answer, which is not charged.
No. Empty answers, pages past the end, expired searches and every upstream failure are free.