Rome2Rio Scraper | Multi-Modal Travel Routes
Pricing
from $19.00 / 1,000 results
Rome2Rio Scraper | Multi-Modal Travel Routes
Get travel routes between any two cities from Rome2Rio with flight, train, bus, ferry, and car options including duration, price, frequency, operators, and segment details. Power travel apps, itinerary tools, ground transport research, and transit data pipelines worldwide.
Pricing
from $19.00 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share

✈️ Rome2Rio Scraper
🚀 Export travel routes and prices between any two cities in seconds. Train, bus, plane, rideshare, car ferry - every option Rome2Rio knows about, delivered to your dataset.
🕒 Last updated: 2026-05-21 - 📊 12 fields per record - 11+ routes per query - Worldwide coverage
The Rome2Rio Scraper extracts multi-modal travel route data directly from rome2rio.com, one of the world's most comprehensive trip-planning platforms. Enter any origin and destination - cities, airports, train stations, or regions - and get a full breakdown of every transport option: train, bus, plane, rideshare, car, ferry, and hybrid combinations.
Dataset provenance: All data is scraped in real-time from Rome2Rio's publicly accessible search results pages. No login required. Prices are sourced from Rome2Rio's live aggregation of transport providers and may vary by date.
Rome2Rio covers routes across 6 continents, aggregating data from thousands of operators. The scraper captures route names, transport modes, journey durations, price ranges, transfer counts, and operator names - everything you need to compare travel options programmatically.
| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Travel technology companies | Building flight/train comparison tools |
| Tourism research analysts | Mapping transport accessibility worldwide |
| Logistics and mobility startups | Identifying viable routes between cities |
| Academic researchers | Studying global travel patterns and costs |
| Travel bloggers and journalists | Fact-checking route options and prices |
| Price monitoring services | Tracking transport cost trends over time |
📋 What the Rome2Rio Scraper does
- Queries Rome2Rio for all available transport options between two cities
- Extracts route name, transport mode, duration, price range, and transfer count
- Parses operator names where displayed (e.g. "Eurostar" for London-Paris train)
- Captures route detail URLs for further investigation
- Works with city names, airport codes, and place names recognized by Rome2Rio
- Supports any origin-destination pair worldwide
💡 Why it matters: Rome2Rio aggregates data from thousands of transport operators that have no public API. This scraper unlocks that dataset for research, comparison tools, and travel tech products without requiring manual queries.
🎬 Full Demo
🚧 Coming soon
⚙️ Input
| Field | Type | Required | Description |
|---|---|---|---|
origin | string | Yes | Starting city or location (e.g. "London", "New York", "Tokyo") |
destination | string | Yes | Destination city or location (e.g. "Paris", "Los Angeles", "Osaka") |
maxItems | number | No | Max routes to return. Free users: capped at 10. Paid: up to 1,000,000 |
Example 1 - European city pair:
{"origin": "London","destination": "Paris","maxItems": 10}
Example 2 - Cross-continental route:
{"origin": "New York","destination": "Los Angeles","maxItems": 20}
⚠️ Good to Know: Use the city names as you would type them in Rome2Rio's search box. The scraper passes your input directly to Rome2Rio, so "NYC", "New York City", or "New York" all work. If a city pair has no results, an error record is returned explaining why.
📊 Output
| Field | Type | Description |
|---|---|---|
🖼 imageUrl | string/null | Transport mode icon URL (null - SVGs are inline) |
📌 routeName | string | Full route name (e.g. "Train (Eurostar)", "Fly London Heathrow Airport to Paris Charles De Gaulle Airport") |
🚆 transportMode | string | Primary mode (Train, Bus, Plane, Car, Rideshare, Carferry) |
🔗 url | string | Rome2Rio route detail page URL |
⏱ duration | string | Total journey time (e.g. "2h 28m", "9h 30m") |
💰 priceFrom | number/null | Minimum price in USD |
💰 priceTo | number/null | Maximum price in USD |
💵 priceRange | string/null | Human-readable range (e.g. "$170-290") |
🔄 transfers | number | Number of transfers/legs in the journey |
📏 distance | string/null | Journey distance in km (shown for some routes) |
🏢 operator | string/null | Transport operator (e.g. "Eurostar", "Flixbus") |
🕒 scrapedAt | string | ISO timestamp of when data was scraped |
❌ error | string/null | Error message if route could not be scraped |
Sample records (London to Paris):
[{"imageUrl": null,"routeName": "Train (Eurostar)","transportMode": "Train","url": "https://www.rome2rio.com/map/London/Paris?route=Train","duration": "2h 28m","priceFrom": 170,"priceTo": 290,"priceRange": "$170-290","transfers": 0,"distance": null,"operator": "Eurostar","scrapedAt": "2026-05-22T01:09:23.174Z","error": null},{"imageUrl": null,"routeName": "Rideshare","transportMode": "Rideshare","url": "https://www.rome2rio.com/map/London/Paris?route=Rideshare","duration": "5h 49m","priceFrom": 30,"priceTo": 65,"priceRange": "$30-65","transfers": 0,"distance": null,"operator": null,"scrapedAt": "2026-05-22T01:09:23.174Z","error": null},{"imageUrl": null,"routeName": "Bus","transportMode": "Bus","url": "https://www.rome2rio.com/map/London/Paris?route=Bus","duration": "9h 30m","priceFrom": 35,"priceTo": 75,"priceRange": "$35-75","transfers": 0,"distance": null,"operator": null,"scrapedAt": "2026-05-22T01:09:23.174Z","error": null}]
✨ Why choose this Actor
- Real-time data - Every run fetches live data directly from Rome2Rio, no cache
- Multi-modal coverage - Captures all transport types in one query: train, bus, plane, rideshare, car, ferry
- Structured output - Clean JSON with numeric price fields ready for analysis
- Anti-detection built in - Uses Camoufox stealth browser with residential proxies for reliable access
- Worldwide routes - Works for any city pair globally that Rome2Rio covers
- Handles complex routes - Captures multi-leg journeys (train + plane, drive + ferry)
📈 How it compares to alternatives
| Feature | This Actor | Manual search | Rome2Rio API (unofficial) |
|---|---|---|---|
| Setup time | 2 minutes | N/A | Hours of reverse engineering |
| Structured output | JSON, CSV, Excel | Manual copy | Raw HTML parsing required |
| Multi-modal | Yes (all modes) | Yes | Unreliable |
| Bulk queries | Yes | Tedious | Unknown rate limits |
| Proxy support | Residential (US) | N/A | N/A |
| Maintenance | Managed by ParseForge | N/A | None |
🚀 How to use
- Create a free account w/ $5 credit on Apify
- Go to the Rome2Rio Scraper actor page
- Enter your origin and destination cities
- Set Max Items (default: 10 for free, up to 1,000,000 for paid)
- Click Start and download your dataset as JSON, CSV, or Excel
💼 Business use cases
1. Travel comparison platforms
Build a route comparison tool that pulls real-time Rome2Rio data. Show users every way to get from A to B - train, bus, plane, rideshare - with current prices and durations, without scraping dozens of individual transport websites.
2. Tourism and accessibility research
Map the transport connectivity between any two points on earth. Use the price and duration data to quantify how accessible destinations are by different income levels or time constraints. Ideal for academic research and government tourism planning.
3. Corporate travel policy analysis
Query routes for your company's most frequent city pairs. Identify patterns - is the budget airline significantly slower than the train? Is rideshare actually cheaper for short routes? Back your travel policy decisions with real data.
4. Travel content creation
Verify route facts for travel articles, destination guides, and comparison posts. Get accurate duration and price ranges for any route pair without manual research.
🔌 Automating Rome2Rio Scraper
Connect this actor to your workflows using Apify's built-in integrations:
- Make (Integromat): Trigger on a schedule, send results to Google Sheets or Airtable
- Zapier: Connect to 5,000+ apps - auto-send route data to Slack, Notion, or email
- n8n: Build custom automation workflows with the Apify node
- Apify API: Call the actor from any language via REST API
- Webhooks: Receive dataset URLs via webhook when each run completes
🌟 Beyond business use cases
🔬 Academic research
Study global transport infrastructure development. Compare route options across different regions to understand mobility inequality and the evolution of transport networks.
🎨 Creative projects
Build interactive travel visualization tools. Power data art projects showing the web of transport connections between world cities.
🌍 Non-profit and development work
Identify underserved routes where transport options are limited or expensive. Support advocacy for better transport infrastructure in developing regions.
🧪 Experimentation
Test travel hypotheses: How does transport mode availability correlate with city size? Which modes dominate for sub-500km routes vs. long-haul? Explore with real data.
🤖 Ask an AI assistant about this scraper
You can paste this page's URL into ChatGPT, Claude, or Gemini and ask:
- "What fields does this scraper return and how can I use the price data?"
- "Write a Python script to filter these results by transportMode = 'Train'"
- "How would I use this data to build a route comparison feature?"
❓ Frequently Asked Questions
🔍 What cities can I use as origin and destination? Any city, region, airport, or location that Rome2Rio recognizes. If Rome2Rio shows routes for it, the scraper will return them.
💵 Are prices in USD? Yes, prices are shown in USD as Rome2Rio's default currency for unlocalized requests.
📊 How many routes does it return per query? Typically 6-12 routes per city pair, depending on how many transport options Rome2Rio has indexed.
🔄 How often can I run it? As often as you need. Each run fetches fresh data in real-time.
🌐 Does it work for routes outside Europe? Yes, Rome2Rio has global coverage. Routes in the Americas, Asia, Africa, and Oceania are all supported.
💸 Why are some priceFrom/priceTo fields null? Some route types (like driving via Eurotunnel) show no price estimate on Rome2Rio's listing page.
⏱ How long does a run take? Typically 10-30 seconds per query including browser startup time.
📏 Is the distance field always populated? No. Distance appears conditionally - Rome2Rio shows it for some routes (especially rideshare) but not others.
🏢 Is the operator field always populated? Only when Rome2Rio displays an operator name in parentheses next to the route name (e.g. "Train (Eurostar)").
🔒 Do I need a Rome2Rio account? No. The scraper uses publicly accessible search results that require no login.
🤖 Will the scraper break if Rome2Rio updates their site? We monitor and update the scraper for any site changes. Updates are deployed automatically.
📅 Can I scrape routes for specific dates? Rome2Rio's search results page does not support date filtering - it shows general route options and price ranges. For date-specific pricing, you'd need to follow individual booking links.
🔌 Integrate with any app
Export your dataset in any format and connect to your stack:
- Google Sheets - via Make or Zapier
- Airtable - via Make or Zapier
- Notion - via n8n or Zapier
- Slack - send route summaries automatically
- PostgreSQL / MySQL - via Apify API and your ETL tool
- BigQuery - connect via Apify's Google Cloud integrations
- Power BI / Tableau - import CSV/Excel exports
- REST API - poll the Apify dataset API directly in JSON
🔗 Recommended Actors
| Actor | Description |
|---|---|
| OurAirports Scraper | Scrape global airport data including IATA codes, coordinates, and types |
| Hostelworld Scraper | Extract hostel listings, prices, and ratings from Hostelworld |
| Numbeo Scraper | Pull cost-of-living data for cities worldwide |
💡 Pro Tip: browse the complete ParseForge collection for 100+ production-ready scrapers covering travel, finance, jobs, and more.
🆘 Need Help? Open our contact form
⚠️ Disclaimer: This actor is an independent tool and is not affiliated with, endorsed by, or connected to Rome2Rio in any way. It collects only publicly available data accessible to any web browser without authentication. Use in accordance with Rome2Rio's terms of service and applicable laws.