Skip to main content
GET
https://www.mtaapi.dev
/
api
/
v1
/
bus
/
arrival-board
Get a nearby bus arrival board
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://www.mtaapi.dev/api/v1/bus/arrival-board', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
[
  {
    "stop": {
      "id": "<string>",
      "name": "<string>",
      "displayName": "<string>",
      "lat": 123,
      "lon": 123,
      "parentId": "<string>"
    },
    "distanceMeters": 123,
    "routes": [
      {
        "route": {
          "id": "<string>",
          "shortName": "<string>",
          "longName": "<string>",
          "type": 123,
          "color": "<string>",
          "textColor": "<string>"
        },
        "arrivals": [
          {
            "route": {
              "id": "<string>",
              "shortName": "<string>",
              "longName": "<string>",
              "type": 123,
              "color": "<string>",
              "textColor": "<string>"
            },
            "stop": {
              "id": "<string>",
              "name": "<string>",
              "displayName": "<string>",
              "lat": 123,
              "lon": 123,
              "parentId": "<string>"
            },
            "arrivalTime": "<string>",
            "minutes": 123,
            "realtime": true,
            "source": "<string>",
            "destination": "<string>",
            "displayDirection": "<string>",
            "headsign": "<string>",
            "departureTime": "<string>",
            "tripId": "<string>",
            "raw": "<unknown>"
          }
        ],
        "headsign": "<string>"
      }
    ]
  }
]

Documentation Index

Fetch the complete documentation index at: https://mtaapi.dev/docs/llms.txt

Use this file to discover all available pages before exploring further.

Returns the nearest bus stops to a lat / lon, with each stop’s upcoming arrivals grouped by route — the bus counterpart to the subway arrival board. Control the board with limitStops (max 20, default 8) and limitArrivals per route (max 10, default 3). Pass an optional route to restrict every stop to a single line. Each entry is { stop, distanceMeters, routes: [{ route, headsign?, arrivals[] }] }.

SDK

const board = await mta.bus.arrivalBoard({
  lat: 40.7421,
  lon: -73.9914,
  route: 'M23',
  limitStops: 1,
  limitArrivals: 1,
})
See the Arrival Boards guide.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

lat
number
required
Required range: -90 <= x <= 90
lon
number
required
Required range: -180 <= x <= 180
route
string
Minimum string length: 1
radiusMeters
number
Required range: x >= 1
limitStops
number
Required range: 1 <= x <= 20
limitArrivals
number
Required range: 1 <= x <= 10
includeRaw
boolean

Response

200 - application/json

Response for status 200

stop
object
required
distanceMeters
number
required
routes
object[]
required