TRNGovernment ยท Land Transport Authority (LTA)

LTA DataMall Bus Arrival

Real-time bus arrival estimates for any bus stop in Singapore, including load, deck type and wheelchair accessibility for the next three buses per service. The most-used SG transport API.

How to authenticate

5 stops to a working call

  1. 1Go to datamall.lta.gov.sg and click Request for API Access.
  2. 2Fill in the registration form with your email; approval is automated.
  3. 3Receive your AccountKey by email (usually within minutes).
  4. 4Send it on every request as the AccountKey header.
  5. 5Read the API User Guide PDF (linked on the DataMall site) for all endpoint paths.

Example request

Request
curl -H 'AccountKey: YOUR_ACCOUNT_KEY' -H 'accept: application/json' 'https://datamall2.mytransport.sg/ltaodataservice/v3/BusArrival?BusStopCode=83139'

Example response

Response (truncated)
{"odata.metadata":"...","BusStopCode":"83139","Services":[{"ServiceNo":"15","NextBus":{"EstimatedArrival":"2026-07-05T16:35:00+08:00","Load":"SEA"}}]}

How to get access (free)

Go to Request for API Access on LTA DataMall and fill in the form. DataMall says dynamic datasets are served through APIs with an Account Key issued to registered subscribers, and it offers instant access. Use is under the Singapore Open Data Licence and DataMall's API Terms of Service. We found no fee on the official site.

v3 BusArrival request

curl -H 'AccountKey: YOUR_ACCOUNT_KEY' -H 'accept: application/json' \
  'https://datamall2.mytransport.sg/ltaodataservice/v3/BusArrival?BusStopCode=83139'
  • BusStopCode: required, 5 digits.
  • ServiceNo: optional, returns one service only.

Response shape, per the API User Guide:

{"odata.metadata":"...","BusStopCode":"83139",
 "Services":[{"ServiceNo":"15","Operator":"SBST",
   "NextBus":{"OriginCode":"77009","DestinationCode":"77131",
     "EstimatedArrival":"2026-...T14:46:27+08:00","Latitude":"...","Longitude":"...",
     "VisitNumber":"1","Load":"SEA","Feature":"WAB","Type":"SD"},
   "NextBus2":{...},"NextBus3":{...}}]}

Load is SEA, SDA or LSD (seats, standing, limited standing). Type is SD, DD or BD (single, double, bendy). Feature WAB means wheelchair accessible. NextBus2 and NextBus3 can be empty late at night.

Error 404 and other problems

We called v3 BusArrival without an AccountKey on 2026-09-25. It returned HTTP 404 with the text The requested API was not found, not a 401. So a 404 usually means a missing or wrong AccountKey header. Check:

  • The header name is exactly AccountKey, sent as a header, not a query string.
  • The path is /ltaodataservice/v3/BusArrival. Older paths such as BusArrivalv2 come from earlier guides.
  • An empty Services array means no buses are in service at that stop right now.

LTA DataMall Bus Arrival: common questions

Is the LTA DataMall Bus Arrival free?

Yes. Land Transport Authority (LTA) offers the LTA DataMall Bus Arrival free of charge.

Does the LTA DataMall Bus Arrival need an API key?

Yes. It uses API key. Go to datamall.lta.gov.sg and click Request for API Access. Fill in the registration form with your email; approval is automated. Receive your AccountKey by email (usually within minutes). Send it on every request as the AccountKey header. Read the API User Guide PDF (linked on the DataMall site) for all endpoint paths.

What is the LTA DataMall Bus Arrival endpoint?

The base URL is https://datamall2.mytransport.sg/ltaodataservice/v3/BusArrival. A working example: curl -H 'AccountKey: YOUR_ACCOUNT_KEY' -H 'accept: application/json' 'https://datamall2.mytransport.sg/ltaodataservice/v3/BusArrival?BusStopCode=83139'

Is the LTA bus arrival API free?

Yes. LTA DataMall issues an AccountKey after you register, and we found no fee on the official site.

How do I get access to the LTA bus arrival API?

Submit the Request for API Access form on datamall.lta.gov.sg. The AccountKey is emailed to you.

Why does the bus arrival API return error 404?

Our test with no AccountKey returned 404 'The requested API was not found'. Send the AccountKey header and use the /ltaodataservice/v3/BusArrival path.

What is the v3 BusArrival endpoint?

GET https://datamall2.mytransport.sg/ltaodataservice/v3/BusArrival?BusStopCode=83139 with header AccountKey.

What does EstimatedArrival contain?

An ISO 8601 time with the +08:00 Singapore offset for each of NextBus, NextBus2 and NextBus3.

Verified 2026-09-25 against datamall.lta.gov.sg, datamall.lta.gov.sg

Notes for AI agents

Missing or wrong AccountKey returns a 404 or an HTML error page, not a 401; if you get 404 check the header first. v3 is current; older /BusArrivalv2 paths are deprecated.

Machine-readable version: /api/apis/lta-datamall-bus-arrival

On the same line