Thailand Transit Scraper — SRT, BTS Skytrain & ARL Red Line avatar

Thailand Transit Scraper — SRT, BTS Skytrain & ARL Red Line

Pricing

Pay per event

Go to Apify Store
Thailand Transit Scraper — SRT, BTS Skytrain & ARL Red Line

Thailand Transit Scraper — SRT, BTS Skytrain & ARL Red Line

Extract Thailand transit data from three sources: SRT station catalog (~750 stations, bilingual Thai/English), BTS Skytrain stations with first/last train times (~119 stations), and ARL Red Line departure timetables. Outputs fares in THB, line assignments, and service direction data.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Scrapes transit data from three Thai public transport networks: the State Railway of Thailand (SRT), BTS Skytrain, and the SRT Red Line. Returns bilingual station catalogs (Thai + English), first/last service times, fare data in THB, and departure timetables — around 870 records per full run.


What Thailand Transit Scraper Extracts

  • SRT stations — ~750 stations across four lines (North, Northeast, East, South), with bilingual Thai and English names, station codes, and line assignments
  • BTS Skytrain stations — ~119 stations on the Sukhumvit, Silom, and Gold lines, with first and last train times per station, latitude/longitude, and line colors
  • ARL Red Line timetables — hourly departure schedules for the two Red Line routes (Bangkok Aphiwat to Rangsit and Bangkok Aphiwat to Taling Chan), stored as structured JSON
  • Operator filter — run all three sources together or target a single operator (SRT, BTS, or ARL)
  • Bilingual output — every station record includes both Thai script (station_name_th) and English romanization (station_name_en), which is more than you'll get from a Google search

Who Uses Thailand Transit Data?

  • Travel app developers — build station selectors, route planners, and schedule widgets for Bangkok tourism apps
  • SE Asia trip-planning platforms — populate stop data, transit options, and fare estimates for multi-modal itinerary builders
  • Thailand MaaS startups — seed the station database for mobility-as-a-service products integrating SRT, BTS, and urban rail
  • Data journalists and researchers — map transit access, coverage gaps, and service hours for urban mobility analyses
  • Expat and digital-nomad tools — help newcomers navigate Bangkok's overlapping rail networks with accurate bilingual data

How It Works

  1. Select your operator. Set operator to any, srt, bts, or arl. The default pulls all three sources in sequence.
  2. SRT station catalog. Posts to the D-Ticket API, receives all ~750 stations in one response, filters active entries, and emits srt_station records.
  3. BTS station list and service times. Posts to the EBM route-map API for all stations, then fetches first/last train times per station with bounded concurrency.
  4. ARL timetable. Fetches the SRTET fare-timetable page, parses the HTML departure tables, and returns structured hourly schedules as JSON strings.

Thailand Transit Scraper Input Fields

{
"operator": "any",
"includeFares": false,
"maxItems": 15,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "TH"
},
"sp_intended_usage": "Transit data for Bangkok travel app",
"sp_improvement_suggestions": "none"
}
FieldTypeDefaultDescription
operatorstring"any"Which network to scrape: any, srt, bts, or arl
includeFaresbooleanfalseReserved for future BTS fare-per-pair calculations
maxItemsinteger15Maximum total records to return; set higher for full datasets
proxyConfigurationobjectThai residentialApify proxy config; Thai residential recommended for geographic consistency
sp_intended_usagestringRequired: describe your intended use of this data
sp_improvement_suggestionsstringRequired: feedback or "none"

Thailand Transit Scraper Output Fields

Records come in three types, set by record_type. Each type populates a different subset of fields.

SRT Station (srt_station)

{
"record_type": "srt_station",
"operator": "SRT",
"service_id": "1001",
"station_name_en": "Hua Lamphong",
"station_name_th": "หัวลำโพง",
"station_code_en": "HLP",
"station_code_th": "หลป",
"line": "SRT South",
"line_id": "4",
"scraped_at": "2025-11-01T08:30:00.000Z"
}
FieldTypeDescription
record_typestringsrt_station
operatorstringSRT
service_idstringInternal station ID
station_name_enstringStation name in English
station_name_thstringStation name in Thai script
station_code_enstringEnglish station code (e.g. HLP)
station_code_thstringThai station code
linestringLine name: SRT North, SRT Northeast, SRT East, or SRT South
line_idstringNumeric line identifier as string
scraped_atstringISO 8601 timestamp

BTS Station (bts_station)

{
"record_type": "bts_station",
"operator": "BTS",
"service_id": "42",
"station_name_en": "Asok",
"station_name_th": "อโศก",
"line": "Sukhumvit Line",
"line_color": "#009C3B",
"station_key": "E4",
"station_order": "4",
"latitude": 13.7363,
"longitude": 100.5606,
"first_train_to_end": "05:56",
"first_train_to_start": "06:10",
"last_train_to_end": "24:00",
"last_train_to_start": "23:48",
"scraped_at": "2025-11-01T08:30:00.000Z"
}
FieldTypeDescription
record_typestringbts_station
operatorstringBTS
service_idstringBTS internal station ID
station_name_enstringStation name in English
station_name_thstringStation name in Thai script
linestringSukhumvit Line, Silom Line, or Gold Line
line_colorstringHex color code for the line
station_keystringBTS line key (e.g. N8, S6, G1)
station_orderstringSequence number on the line
latitudenumberStation latitude
longitudenumberStation longitude
first_train_to_endstringFirst train toward end of line (HH:MM)
first_train_to_startstringFirst train toward start of line (HH:MM)
last_train_to_endstringLast train toward end of line (HH:MM)
last_train_to_startstringLast train toward start of line (HH:MM)
scraped_atstringISO 8601 timestamp

ARL Schedule (arl_schedule)

{
"record_type": "arl_schedule",
"operator": "ARL",
"service_id": "arl_Bangkok_Aphiwat_Rangsit",
"station_name_en": "Bangkok Aphiwat",
"line": "ARL Red Line",
"line_color": "#FF0000",
"direction_from": "Bangkok Aphiwat",
"direction_to": "Rangsit",
"first_train_to_end": "05:43",
"last_train_to_end": "23:30",
"schedule_json": "[{\"hour\":5,\"minutes\":[43]},{\"hour\":6,\"minutes\":[0,15,30,45]},...]",
"scraped_at": "2025-11-01T08:30:00.000Z"
}
FieldTypeDescription
record_typestringarl_schedule
operatorstringARL
service_idstringRoute identifier string
direction_fromstringDeparture origin station
direction_tostringDeparture destination station
first_train_to_endstringFirst departure time (HH:MM)
last_train_to_endstringLast departure time (HH:MM)
schedule_jsonstringFull hourly schedule as JSON string
scraped_atstringISO 8601 timestamp

🔍 FAQ

How do I scrape Thailand transit station data?

Thailand Transit Scraper handles it in one run. Set operator to any to pull all three networks simultaneously, or target a single one (srt, bts, or arl) if you only need a subset. Full datasets return in under 2 minutes.

What data can I get from the BTS Skytrain API?

Thailand Transit Scraper returns all ~119 BTS stations across the Sukhumvit, Silom, and Gold lines, with bilingual names, GPS coordinates, line colors, station keys (e.g. N8, S6), and first/last service times per direction. That covers everything you need to build a station selector or schedule widget.

How much does Thailand Transit Scraper cost to run?

At the default pay-per-event rate, a full run costs roughly $0.001 per record — around $0.87 for all ~870 records. Test runs with maxItems: 15 are negligible.

Does Thailand Transit Scraper need proxies?

Thailand Transit Scraper uses Thai residential proxies by default. The BTS API performs geographic checks, so a Thai IP is recommended. The SRT and ARL sources work without proxies, but the default configuration keeps everything consistent.

Why is MRT Bangkok not included?

The MRT Bangkok site (metro.bemplc.co.th) is behind an Imperva WAF that requires full browser rendering to bypass. It's out of scope for this actor.


Need More Features?

Need MRT Bangkok, fare pair calculations, or a different operator? File an issue on the actor page or contact us through the Apify console.

Why Use Thailand Transit Scraper?

  • Bilingual by default — every SRT and BTS record includes both Thai script and English romanization, saving the translation step that other sources skip
  • Three networks, one run — SRT station catalog, BTS schedule data, and ARL timetables in a single actor with a single operator filter, which is more efficient than maintaining three separate scrapers
  • Structured schedule output — ARL departures come as parseable JSON arrays, not raw strings scraped from a timetable page