Overview

Transport for Washington, US (WMATA API) provides real-time and scheduled data for Washington DC's Metro rail and bus system. You can access live train predictions, bus arrivals, rail station information, and service alerts. An API key is required — sign up for a free developer account at developer.wmata.com which allows 10 calls/second and 50,000 calls/day.

Beginner Tip

Register at developer.wmata.com for a free subscription key. Use the "Default Tier" subscription — it allows 10 calls/second and 50,000 calls/day, which is more than enough for personal projects.

Available Data

The kind of data this API exposes, based on its documentation. We could not call the endpoint to confirm the exact field names.

match scores and results
team standings
player statistics
schedule and fixtures
Use case: Integrate washington metro transport api data into web and mobile applications

Example Response

Illustrative shape only — we were not able to call this endpoint (it requires credentials or exposes no public sample URL), so the fields below show the kind of data this API returns rather than a recorded response.

JSON Response · Illustrative
{
  "route": "Line 1",
  "origin": "Station A",
  "destination": "Station B",
  "departure": "08:30",
  "arrival": "09:15",
  "status": "On Time",
  "delays_min": 0
}

Field Reference

Trains List of train arrival predictions for the requested station.
Trains[].Car Number of cars on the train (e.g., 6 or 8).
Trains[].Destination Final destination station name of the train.
Trains[].Line Metro line color code (e.g., RD for Red, BL for Blue).
Trains[].Min Minutes until arrival — BRD means boarding, ARR means arriving.
Trains[].LocationName Name of the station being queried.

Implementation Example

Calls a real endpoint of this API. Replace any placeholder credentials with your own key.

Request
const url = "https://api.wmata.com/StationPrediction.svc/json/GetPrediction/A01?api_key=YOUR_API_KEY";
// Replace headers or query params with the values required by this API.
const response = await fetch(url, {
  headers: {
  "Authorization": "Bearer YOUR_API_KEY"
  }
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();
console.log(data);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

Common Errors & Troubleshooting

Generated guidance based on this API's documentation, not observed by us. Treat it as a starting point and check against the provider's own error reference.

401 Unauthorized API key is missing or not passed correctly in the request header.
Include your key as a query parameter or header: api_key: YOUR_API_KEY.
400 Bad Request Station code or stop ID is invalid or formatted incorrectly.
Use the /Rail.svc/json/jStations endpoint to retrieve all station codes and their names first.
Stale predictions Caching the response for too long — train positions update every 20 seconds.
Set cache TTL to 20-30 seconds maximum to ensure predictions remain accurate for users.

Metadata Score Breakdown

Estimated from metadata — endpoint not independently tested

This score is estimated from observable metadata — HTTPS support, authentication model, declared CORS, and documentation reachability — because the API requires authentication or exposes no publicly testable endpoint. The five-signal breakdown is only shown for live-tested APIs.

Metadata estimate · endpoint not independently tested

Technical Specifications

Auth OAuth
HTTPS REQUIRED
CORS UNKNOWN
Category Transportation
Difficulty Advanced
Listing details not endpoint-verified

Similar APIs

View All →