OrbTop

12go.asia Scraper - Train, Bus, Ferry, Flight Schedules (Asia)

TRAVELBUSINESSDEVELOPER TOOLS

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 24 fields per trip including operator, vehicle class, origin/destination terminals, departure and arrival times, duration, transfers, price, currency, rating, and booking URL.
  • Searches by city pair — supply origin, destination, and an optional travel date. Slug resolution is automatic.
  • Currency override built in. Pick from USD, EUR, GBP, THB, VND, IDR, MYR, SGD, PHP, JPY, INR, or AUD and prices come back normalized.
  • Multi-route batches in a single run — each search executes independently with shared deduplication, so the same trip never appears twice.
  • Handles AWS WAF challenges automatically via headless browser. Routes that look hard to scrape are not.
  • Residential proxy support out of the box for geo-flexible 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 just pull in the price-comparison data.
  • 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. People book hostels based on how easy it is to get there.
  • 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

  1. Provide a list of { origin, destination, date? } searches. City names get lowercased and dashed into 12go's URL slugs (e.g. Koh Samui becomes koh-samui).
  2. The scraper navigates each search URL through a headless browser. AWS WAF resolves on its own — no captcha solving, no proxy gymnastics.
  3. Trip cards are parsed from the rendered page. Each card yields one record with operator, mode, schedule, price, rating, and a deep link to the booking page.
  4. Records flush to the dataset as they're found. Set maxItems to 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 — 12go uses AWS WAF.

12go Asia Scraper Output Fields

{
    "trip_id": "TH1esQ01Mp9DAf0SJ03SPY6d",
    "mode": "ferry",
    "operator": "Lomprayah",
    "vehicle_class": "Ferry with Lomprayah",
    "origin_city": "Bangkok",
    "origin_terminal": "Khao San Lomprayah, Bangkok",
    "origin_country": "",
    "destination_city": "Koh Samui",
    "destination_terminal": "Maenam Samui, Koh Samui",
    "destination_country": "",
    "departure_time": "21:30",
    "arrival_time": "11:30",
    "travel_date": "",
    "duration_minutes": 840,
    "duration_text": "14h",
    "transfers": 0,
    "route_summary": "14h | Lomprayah | Ferry",
    "labels": "Instant confirmation | Bestseller | Recommended | Most popular class",
    "features": "Free cancellation",
    "price_total": 44.58,
    "price_text": "$44",
    "price_currency": "USD",
    "rating": 4.4,
    "booking_url": "https://12go.asia/en/trip-page/TH1esQ01Mp9DAf0SJ03SPY6d/2026-05-04-21-30-00?position=1&fromSlug=bangkok&toSlug=koh-samui",
    "scraped_at": "2026-05-01T15:11:27.919Z"
}
Field Type Description
trip_id string Internal 12go trip ID extracted from the trip detail URL.
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 Human-readable transport label (e.g. Ferry with Lomprayah, Bus, Ferry with Boonsiri).
origin_city string Origin city as supplied in the search.
origin_terminal string Departure terminal name — station, pier, airport, or office address.
origin_country string Origin country (when 12go publishes it; otherwise empty).
destination_city string Destination city as supplied in the search.
destination_terminal string Arrival terminal name.
destination_country string Destination country (when published).
departure_time string Scheduled departure as HH:MM (24-hour, local time).
arrival_time string Scheduled arrival as HH:MM (24-hour, local time).
travel_date string Travel date in YYYY-MM-DD if supplied in the search; otherwise empty.
duration_minutes number Total duration in minutes, parsed from the route summary.
duration_text string Duration as displayed (14h, 13h 30m).
transfers number Number of connections. 0 for direct trips, 1+ for multi-segment journeys.
route_summary string Route summary line as 12go displays it.
labels string Trip badges joined by `
features string Trip features joined by `
price_total number Numeric total price in the selected currency.
price_text string Price as displayed ($44, £35, ฿1,500).
price_currency string ISO currency code (USD, THB, EUR, etc.).
rating number Operator/trip rating from 1 to 5.
booking_url string Direct deep link to the 12go booking page for this trip.
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, navigates each one, parses the trip cards, 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.002 per trip record. Most runs cost a few cents — a 50-trip search comes in around $0.20. Apify proxy usage is included in the per-record price.

What data can I get from 12go.asia?

Operator name, transport mode, vehicle class, origin and destination terminals, departure/arrival times, duration, number of transfers, total price in your chosen currency, operator rating, trip badges, and a direct booking URL. Twenty-four fields per trip.

Does the 12go Asia Scraper need proxies?

12go Asia Scraper runs through Apify residential proxies by default. 12go uses AWS WAF, which is geo-aware. Residential is recommended for stable runs; 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 and the scraper normalizes the output. 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.002 per trip record, with a $0.10 start fee.
  • Multimodal coverage — train, bus, ferry, flight, van, and private transfer in a single actor, which is more than the source site's official partners offer in their own APIs.
  • Clean structured JSON — 24 fields per trip with consistent names, parsed durations in minutes, and direct booking deep links. No HTML cleanup on your end.