Rome2Rio Multi-Modal Route Scraper
Pricing
from $3.00 / 1,000 results
Rome2Rio Multi-Modal Route Scraper
Scrape Rome2Rio trip-planning results - compare flight, train, bus, car, ferry, and rideshare options between any two cities or airports, with durations, price ranges, and operators.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape Rome2Rio trip-planning results — compare every reliable way to get from one place to another: flight, train, bus, car, ferry, rideshare, and walking. Get durations, price ranges, operators, and distances for every route option Rome2Rio surfaces for a city, town, or airport pair. HTTP-only, no login, no cookies required.
What this actor does
- Single-route or batch search — look up one origin/destination pair, or supply an array of pairs to scrape many routes in one run
- Every transport mode Rome2Rio returns: flight, train, bus, car/drive, ferry, rideshare, walk — including multi-leg combinations (e.g. "train to the airport, then fly")
- Filters: transport mode, max duration, max price
- Sort: recommended (site order), cheapest first, fastest first
- Operators surfaced where shown (e.g. Amtrak, Eurostar, Flixbus, Greyhound)
- Empty fields are omitted — a field only appears on a record when real data was found for it
Output per route option
origin,destination— canonicalized place names for the routemode— primary transport mode for this option (flight/train/bus/car/ferry/rideshare/walk)modes— every mode involved for multi-leg options (e.g.["car", "ferry"])title— Rome2Rio's own label for the option (e.g.Train (Amtrak),Drive 337.4 km)operators[]— named carrier(s), when shown (e.g.Amtrak,Flixbus)durationMinutes,durationText— total travel timepriceMin,priceMax,currency— quoted fare rangedistanceKm— driving distance, for car-only optionsstraightLineDistanceKm— general point-to-point distance between origin and destination, present on every option regardless of modeposition— Rome2Rio's own rank/order for this option (1 = top result)deepLink— link to the full Rome2Rio itinerary/schedule page for this optionsourceUrl— the Rome2Rio search page this was scraped fromrecordType: "routeOption",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
origin | string | New York | Starting city, town, address, or airport. Ignored if routePairs is set. |
destination | string | Boston | Ending city, town, address, or airport. Ignored if routePairs is set. |
routePairs | array | – | Batch mode: [{"origin": "...", "destination": "..."}, ...] — scrapes multiple routes in one run |
transportMode | string | any | Keep only options using this mode: any / flight / train / bus / car / ferry / rideshare / walk |
maxDurationMinutes | int | – | Drop options longer than this many minutes |
maxPrice | number | – | Drop options whose cheapest quoted price exceeds this |
sortBy | string | recommended | recommended / cheapest / fastest |
maxItems | int | 50 | Hard cap on emitted route options (1–1000) |
proxyConfiguration | object | AUTO | Apify proxy (free AUTO datacenter group); not strictly required |
Examples
Example: simple city-to-city search
{"origin": "New York","destination": "Boston","maxItems": 20}
Example: only flights, cheapest first
{"origin": "Paris","destination": "London","transportMode": "flight","sortBy": "cheapest"}
Example: batch multiple routes in one run
{"routePairs": [{ "origin": "Berlin", "destination": "Prague" },{ "origin": "Munich", "destination": "Zurich" }],"maxItems": 100}
Example: fast options only, budget capped
{"origin": "Los Angeles","destination": "San Francisco","maxDurationMinutes": 180,"maxPrice": 100,"sortBy": "fastest"}
Use cases
- Travel planning tools — pull live multi-modal options into a trip-comparison UI
- Fare-tracking dashboards — snapshot price ranges across modes for a route over time
- Travel content/SEO — power "how to get from X to Y" articles with real operator and fare data
- Corporate travel booking — compare cost/time tradeoffs across transport modes for a route
- Market research — see which operators and modes Rome2Rio surfaces as viable for a given city pair
Data Source / Limitations
Data comes from Rome2Rio's public trip-summary pages (rome2rio.com/s/<origin>/<destination>), which render duration and price ranges without requiring login. Rome2Rio determines the actual origin/destination match when a place name is ambiguous (e.g. multiple cities sharing a name) — the actor reports back whichever place Rome2Rio resolved to. Prices are indicative ranges as shown on the summary page, not live booking quotes; for exact schedules and booking, follow the deepLink for an option. If no viable route exists between two places, or all results are excluded by filters, the actor returns 0 records with a clear status message rather than failing.
Rome2Rio protects its pages with Cloudflare bot-management for all visitors, including real browsers (a one-time JS challenge that resolves automatically in a browser tab). This means deepLink and sourceUrl values open normally when clicked in a browser, but a bare command-line request (e.g. plain curl) to those URLs may receive a challenge page instead of the itinerary — this is Rome2Rio's own site-wide protection, not a broken or mistyped link.
FAQ
Is this affiliated with Rome2Rio? No — this is an independent, third-party actor that reads Rome2Rio's public search-results pages.
Why do some options have no operators field?
Rome2Rio only names a specific carrier for some options (e.g. "Train (Amtrak)"); others are generic (e.g. "Bus") because the site doesn't attribute a single operator on the summary page.
Why is distanceKm only present on some records?
Rome2Rio only shows an explicit driving distance for car/drive options on the summary page — other modes don't include a comparable figure. straightLineDistanceKm (point-to-point distance) is present on every option regardless of mode.
What currency are prices in?
Prices are consistently shown in USD by Rome2Rio's summary page regardless of route location, locale, or currency query parameters — the currency field reflects whatever symbol/code is actually found on the page.
Does transportMode filter change what Rome2Rio itself returns?
No — Rome2Rio always returns its full set of route options; the transportMode filter is applied by the actor after fetching so you only receive the modes you asked for.
What happens if the two places can't be matched to a real route? The actor returns 0 records and sets a status message explaining that no route was found — this is treated as a clean, valid result, not an error.