12go.asia Scraper - Train, Bus, Ferry, Flight Schedules (Asia)
Pricing
Pay per event
12go.asia Scraper - Train, Bus, Ferry, Flight Schedules (Asia)
Scrape multimodal transport from 12go.asia: trains, buses, ferries, flights, vans, and private transfers across 40+ Asian countries. Returns operator, vehicle class, schedules, fares, ratings, and route metadata for travel apps and aggregators.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
12go.asia Multimodal Transport Scraper
Scrape multimodal transport schedules and fares from 12go.asia. Returns trains, buses, ferries, flights, vans, and private transfers across Thailand, Vietnam, Indonesia, Malaysia, Philippines, Cambodia, Laos, Japan, India, Sri Lanka, and 30+ other countries — with operator names, schedules, fares, ratings, and direct booking links in clean JSON.
12go Asia Scraper Features
- Extracts trip data across all 12go transport modes — train, bus, ferry, flight, van, private transfer, taxi, and mixed multi-segment journeys.
- Returns a flat record per scheduled trip with operator, vehicle class, departure and arrival times, duration, transfers, price, currency, rating, route distance, and a deep link back to the 12go search page.
- Searches by city pair — supply origin, destination, and an optional travel date. Slug resolution is automatic (e.g.
Koh Samuibecomeskoh-samui,Ho Chi Minh Citybecomesho-chi-minh-city). - Currency override built in. Pick from USD, EUR, GBP, THB, VND, IDR, MYR, SGD, PHP, JPY, INR, or AUD and 12go converts at the listing currency.
- Multi-route batches in a single run — each search executes against a shared warmed session with deduplication, so the same trip never appears twice.
- Resilient session bootstrap. If a route page is briefly rate-limited, the scraper rotates the proxy session and retries automatically.
- Residential proxy support out of the box for stable runs.
Who Uses 12go Asia Data?
- Travel aggregators — feed real-time schedules and fares into route-planning apps without negotiating partner agreements.
- Backpacker booking platforms — rebuild the 12go index with your own filtering and presentation, or pull in price comparisons.
- Tourism startups in Southeast Asia — track operator pricing, route popularity, and seat availability across the region's biggest multimodal booking engine.
- Hostel and accommodation sites — show transport options between properties as a value-add.
- Travel-tech researchers — analyze pricing trends, operator coverage, and route density across countries that don't surface this data anywhere else.
- Affiliate marketers — generate booking-link inventory for content sites and SEO landing pages.
How 12go Asia Scraper Works
- Provide a list of
{ origin, destination, date? }searches. City names get lowercased and dashed into 12go's URL slugs. - The scraper warms a session against the 12go homepage to establish the cookies the site expects.
- For each route, it fetches the rendered schedule page and parses the embedded payload — every departure 12go shows for that route on that date.
- One record per scheduled trip is written to the dataset. Set
maxItemsto cap the total across all searches.
Input
{"searches": [{ "origin": "Bangkok", "destination": "Koh Samui" },{ "origin": "Ho Chi Minh City", "destination": "Phnom Penh", "date": "2026-08-15" }],"currency": "USD","maxItems": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
| Field | Type | Default | Description |
|---|---|---|---|
searches | array of objects | — (required) | List of routes. Each entry has origin (string), destination (string), and optional date (YYYY-MM-DD). |
currency | string | USD | Output currency. One of: USD, EUR, GBP, THB, VND, IDR, MYR, SGD, PHP, JPY, INR, AUD. |
maxItems | integer | 15 | Maximum total trip records across all searches. |
proxyConfiguration | object | residential | Apify proxy configuration. Residential is recommended for stable runs. |
12go Asia Scraper Output Fields
{"trip_id": "bangkok|koh_samui|flight|scoot|economy|00_25|07_50","mode": "flight","operator": "Scoot","vehicle_class": "Economy","origin_city": "Bangkok","origin_terminal": "","origin_country": "TH","destination_city": "Koh Samui","destination_terminal": "","destination_country": "TH","departure_time": "00:25","arrival_time": "07:50","travel_date": "2026-05-05","duration_minutes": 445,"duration_text": "7h 25m","transfers": 0,"distance_km": 971,"daily_route_count": 85,"operators_on_route": "Bangkok Airways | BangkokTaxi24 | Boonsiri High Speed Ferries | Lomprayah | Nok Air | Raja Ferry | Seatran Discovery | Thai AirAsia | Thai Lion Air | Thai Railways | Thai Vietjet | ...","price_total": 267,"price_text": "EUR 267","price_currency": "EUR","rating": null,"booking_url": "https://12go.asia/en/travel/bangkok/koh-samui?date=2026-05-05¤cy=USD","scraped_at": "2026-05-02T11:53:28.482Z"}
| Field | Type | Description |
|---|---|---|
trip_id | string | Stable per-route synthesized ID (origin|dest|mode|operator|class|dep|arr). |
mode | string | Transport mode: train, bus, ferry, flight, van, private_transfer, taxi, or mixed for multi-segment trips. |
operator | string | Operator name (Lomprayah, State Railway of Thailand, Bangkok Airways, Giant Ibis, etc.). |
vehicle_class | string | Vehicle class label (VIP Van 9pax, Sleeper, Economy, Standard, etc.). |
origin_city | string | Origin city as supplied in the search. |
origin_terminal | string | Departure terminal — usually empty in the schedule view. |
origin_country | string | Origin country ISO 3166-1 alpha-2 code (TH, VN, ID, etc.). |
destination_city | string | Destination city as supplied in the search. |
destination_terminal | string | Arrival terminal — usually empty in the schedule view. |
destination_country | string | Destination country ISO 3166-1 alpha-2 code. |
departure_time | string | Scheduled departure as HH:MM (24-hour, local), or Any time for on-demand transfers. |
arrival_time | string | Scheduled arrival as HH:MM, or +Nh when arrival is on the next day. |
travel_date | string | Travel date in YYYY-MM-DD if supplied in the search; otherwise empty. |
duration_minutes | number | Total duration in minutes (computed from departure/arrival; null when timing is non-numeric). |
duration_text | string | Duration as a human-readable string (14h, 13h 30m). |
transfers | number | Number of connections. 0 for direct trips, 1 for mixed-mode rows. |
distance_km | number | Route distance in kilometers (route-level). |
daily_route_count | number | Total daily departures across all operators on this route. |
operators_on_route | string | Pipe-separated list of every operator serving this route (route-level metadata). |
price_total | number | Numeric total price in the listing currency. |
price_text | string | Price as displayed (THB 18750, EUR 267). |
price_currency | string | ISO currency code from 12go's price object. |
rating | number | Operator/trip rating from 1 to 5. null when there are no reviews. |
booking_url | string | Canonical 12go.asia search-page URL — deep link into the booking flow. |
scraped_at | string | ISO 8601 timestamp of the scrape. |
FAQ
How do I scrape 12go.asia transport data?
12go Asia Scraper handles it. Supply a list of city pairs in the searches input, and the scraper resolves them to 12go URL slugs, fetches each route's schedule page, parses the embedded data, and writes structured JSON to the dataset.
How much does the 12go Asia Scraper cost to run?
Pricing is pay-per-event: $0.10 per actor start, plus $0.001 per trip record. Most runs cost a few cents — a 50-trip search comes in around $0.15. Apify proxy usage is included in the per-record price.
What data can I get from 12go.asia?
Operator name, transport mode, vehicle class, departure and arrival times, duration in minutes, number of transfers, total price in your chosen currency, operator rating, route distance in kilometers, daily-departures count for the route, and a direct booking URL. Plus the full list of operators serving each route.
Does the 12go Asia Scraper need proxies?
Apify residential proxies are recommended and on by default. 12go is geo-aware, and a stable residential session keeps page fetches consistent across the run. You can switch to no proxy or datacenter via the proxyConfiguration input if your use case allows.
Can I get prices in a specific currency?
Yes. Set currency to any of USD, EUR, GBP, THB, VND, IDR, MYR, SGD, PHP, JPY, INR, or AUD. 12go converts in real time. The default is USD.
What countries does 12go cover?
Heavy coverage across Southeast Asia — Thailand, Vietnam, Indonesia, Malaysia, Philippines, Cambodia, Laos, Myanmar — plus growing service in Japan, India, Sri Lanka, Turkey, Egypt, Morocco, and more. Some EU routes are bundled via partner integrations.
Need More Features?
Need extra fields, a different output format, or a related scraper? File an issue or get in touch.
Why Use 12go Asia Scraper?
- Affordable — about $0.001 per trip record, with a $0.10 start fee.
- Multimodal coverage — train, bus, ferry, flight, van, and private transfer in a single actor — more than the source site's official partners offer in their own APIs.
- Clean structured JSON — flat records with parsed duration in minutes, ISO country codes, and direct booking links. No HTML cleanup on your end.