openapi: 3.0.3 info: title: Moovit Public Transit APIs description: >- Moovit Public Transit APIs power multimodal trip planning, nearby transit discovery, stops and lines metadata, real-time arrival predictions, and service alerts across more than 3,500 cities in 112 countries. The APIs are tuned for short response times and are used to power Microsoft (Azure Maps), Uber, Lyft, Cubic, and city/transit-agency MaaS deployments. Authentication is HMAC-SHA256 with an API_KEY header plus an Authorization header of the form `hmacauth ::`. All requests must carry a metro identifier (either a USER_LOC lat/lon pair or a MOOVIT_METRO_ID). version: 5.1.0.0 contact: name: Moovit API Helpdesk email: helpdesk@moovit.com url: https://api-docs.moovit.com/ license: name: Commercial url: https://moovit.com/maas-solutions/transit-apis/ servers: - url: https://app5.moovitapp.com/services-app/services description: Production - url: https://api.moovitapp.com/services-app/services/EX/API description: Production (MAG) - url: https://stg.moovitapp.com/services-app/services description: Staging tags: - name: Nearby description: Locate stops, bikes, and scooters near a coordinate. - name: Stops description: Stop metadata, lines served, reviews, and photos. - name: Lines description: Line metadata, stops, geometry, schedules, and alerts. - name: TripPlan description: Multimodal trip planning and itinerary details. - name: RealTime description: Live arrival predictions for stops and lines. - name: ServiceAlerts description: Metro service alerts and details. - name: General description: Metro agencies and supported transit types. - name: GTFSRealtime description: GTFS-RT feeds for vehicles, trip updates, and service alerts. - name: Search description: Search stops and lines by name or number. paths: /Nearby/GetNearbyObjects: get: tags: [Nearby] summary: Get Nearby Objects description: Locate stops, bikes, or scooters within a radius of a coordinate. Max radius 5km, max 100 objects. parameters: - in: query name: lat required: true schema: { type: number, format: double } - in: query name: lon required: true schema: { type: number, format: double } - in: query name: radius schema: { type: integer, default: 500, maximum: 5000 } - in: query name: limit schema: { type: integer, default: 50, maximum: 100 } responses: '200': description: List of nearby transit objects. /Stops/GetStopBasicInfo: get: tags: [Stops] summary: Get Stop Basic Info description: Name, location, transit type, and agency for a stop. parameters: - in: query name: stopId required: true schema: { type: string } responses: '200': { description: Basic stop info. } /Stops/GetStopLines: get: tags: [Stops] summary: Get Stop Lines description: Lines that serve a stop. parameters: - in: query name: stopId required: true schema: { type: string } responses: '200': { description: Lines serving the stop. } /Stops/GetStopReviews: get: tags: [Stops] summary: Get Stop Reviews description: User-submitted reviews and ratings for a stop. parameters: - in: query name: stopId required: true schema: { type: string } responses: '200': { description: Reviews and ratings. } /Stops/GetStopPhotos: get: tags: [Stops] summary: Get Stop Photos description: User-uploaded photos of a stop. parameters: - in: query name: stopId required: true schema: { type: string } responses: '200': { description: Photos for the stop. } /Stops/GetStopDetails: get: tags: [Stops] summary: Get Stop Details description: Aggregated stop information. parameters: - in: query name: stopId required: true schema: { type: string } responses: '200': { description: Aggregated stop details. } /Lines/GetLineBasicInfo: get: tags: [Lines] summary: Get Line Basic Info description: Line number, name, color, and icon. parameters: - in: query name: lineId required: true schema: { type: string } responses: '200': { description: Basic line info. } /Lines/GetLineStops: get: tags: [Lines] summary: Get Line Stops description: All stops served by a line. parameters: - in: query name: lineId required: true schema: { type: string } responses: '200': { description: Stops on the line. } /Lines/GetLineShape: get: tags: [Lines] summary: Get Line Shape description: Geographic route geometry for a line. parameters: - in: query name: lineId required: true schema: { type: string } responses: '200': { description: Encoded line geometry. } /Lines/GetLinePatternShape: get: tags: [Lines] summary: Get Line Pattern Shape description: Pattern-specific geometry for a line variant. parameters: - in: query name: lineId required: true schema: { type: string } - in: query name: patternId required: true schema: { type: string } responses: '200': { description: Pattern geometry. } /Lines/GetLineSchedule: get: tags: [Lines] summary: Get Line Schedule description: Timetable for a line. parameters: - in: query name: lineId required: true schema: { type: string } responses: '200': { description: Line schedule. } /Lines/GetLineAlerts: get: tags: [Lines] summary: Get Line Alerts description: Service disruptions for a line. parameters: - in: query name: lineId required: true schema: { type: string } responses: '200': { description: Active alerts on the line. } /Lines/GetLineReviews: get: tags: [Lines] summary: Get Line Reviews description: User feedback for a line. parameters: - in: query name: lineId required: true schema: { type: string } responses: '200': { description: Reviews for the line. } /Lines/GetLineFullInfo: get: tags: [Lines] summary: Get Line Full Info description: Comprehensive line data including stops, shape, schedule, and alerts. parameters: - in: query name: lineId required: true schema: { type: string } responses: '200': { description: Full line data. } /TripPlan/GetSuggestedRoutes: get: tags: [TripPlan] summary: Get Suggested Routes description: Optimal multimodal A-to-B itineraries between an origin and destination. parameters: - in: query name: fromLat required: true schema: { type: number, format: double } - in: query name: fromLon required: true schema: { type: number, format: double } - in: query name: toLat required: true schema: { type: number, format: double } - in: query name: toLon required: true schema: { type: number, format: double } - in: query name: time schema: { type: string, format: date-time } - in: query name: timeType schema: { type: string, enum: [DEPART_AT, ARRIVE_BY] } responses: '200': { description: Suggested itineraries. } /TripPlan/GetWalkingRoutes: get: tags: [TripPlan] summary: Get Walking Routes description: Pedestrian-only route between two points. parameters: - in: query name: fromLat required: true schema: { type: number, format: double } - in: query name: fromLon required: true schema: { type: number, format: double } - in: query name: toLat required: true schema: { type: number, format: double } - in: query name: toLon required: true schema: { type: number, format: double } responses: '200': { description: Walking routes. } /TripPlan/GetBasicItinerary: get: tags: [TripPlan] summary: Get Basic Itinerary description: Core route details for a previously suggested itinerary. parameters: - in: query name: itineraryId required: true schema: { type: string } responses: '200': { description: Basic itinerary. } /TripPlan/GetDetailedItineraryShape: get: tags: [TripPlan] summary: Get Detailed Itinerary Shape description: Geometry for each leg of an itinerary. parameters: - in: query name: itineraryId required: true schema: { type: string } responses: '200': { description: Itinerary geometry. } /TripPlan/GetDetailedItinerarySchedules: get: tags: [TripPlan] summary: Get Detailed Itinerary Schedules description: Timing information for each leg of an itinerary. parameters: - in: query name: itineraryId required: true schema: { type: string } responses: '200': { description: Itinerary schedules. } /TripPlan/GetDetailedItinerary: get: tags: [TripPlan] summary: Get Detailed Itinerary description: Comprehensive routing data including geometry, schedules, and alerts. parameters: - in: query name: itineraryId required: true schema: { type: string } responses: '200': { description: Detailed itinerary. } /RealTime/GetLineStopArrivalsEx: get: tags: [RealTime] summary: Get Line Stop Arrivals Ex description: Enhanced real-time arrival predictions for a line at a stop. parameters: - in: query name: lineId required: true schema: { type: string } - in: query name: stopId required: true schema: { type: string } responses: '200': { description: Real-time arrivals. } /RealTime/GetLineArrivals: get: tags: [RealTime] summary: Get Line Arrivals description: Vehicle arrival times for a line. parameters: - in: query name: lineId required: true schema: { type: string } responses: '200': { description: Vehicle arrivals. } /RealTime/GetStopArrivals: get: tags: [RealTime] summary: Get Stop Arrivals description: All vehicle arrivals at a stop. parameters: - in: query name: stopId required: true schema: { type: string } responses: '200': { description: Arrivals at the stop. } /RealTime/GetMultiStopsArrivals: get: tags: [RealTime] summary: Get Multi Stops Arrivals description: Batch arrival query for multiple stops. parameters: - in: query name: stopIds required: true schema: { type: array, items: { type: string } } style: form explode: false responses: '200': { description: Arrivals for the batch. } /RealTime/GetMultiStopsArrivalsWithAlerts: get: tags: [RealTime] summary: Get Multi Stops Arrivals With Alerts description: Batch arrival query with line-level alerts. parameters: - in: query name: stopIds required: true schema: { type: array, items: { type: string } } style: form explode: false responses: '200': { description: Arrivals plus alerts. } /General/GetMetroServiceAlerts: get: tags: [ServiceAlerts] summary: Get Metro Service Alerts description: All system-wide service alerts for the metro area. responses: '200': { description: Metro service alerts. } /General/GetAlertDetails: get: tags: [ServiceAlerts] summary: Get Alert Details description: Detailed information for a single alert. parameters: - in: query name: alertId required: true schema: { type: string } responses: '200': { description: Alert details. } /General/GetMetroAgencies: get: tags: [General] summary: Get Metro Agencies description: Transit providers operating in the metro area. responses: '200': { description: Agencies list. } /General/GetMetroSupportedTransitTypes: get: tags: [General] summary: Get Metro Supported Transit Types description: Available transit modes in the metro area. responses: '200': { description: Supported transit types. } /GTFS/RT: get: tags: [GTFSRealtime] summary: Get GTFS Realtime Feed description: GTFS-RT feed for vehicle positions and trip updates in the metro area. responses: '200': description: GTFS-RT protocol buffer payload. content: application/x-protobuf: {} /GTFS/SA_RT: get: tags: [GTFSRealtime] summary: Get GTFS Service Alerts Feed description: GTFS-RT service alerts feed for the metro area. responses: '200': description: GTFS-RT service alerts payload. content: application/x-protobuf: {} /GTFS/Polygon_RT: get: tags: [GTFSRealtime] summary: Get GTFS Polygon Realtime Feed description: GTFS-RT feed restricted to a geographic polygon. parameters: - in: query name: polygon required: true schema: { type: string, description: 'WKT polygon definition' } responses: '200': description: GTFS-RT payload for the polygon. content: application/x-protobuf: {} /Search/StopSearch: get: tags: [Search] summary: Stop Search description: Query stops by name or location. parameters: - in: query name: q required: true schema: { type: string } responses: '200': { description: Matching stops. } /Search/LineSearch: get: tags: [Search] summary: Line Search description: Query lines by number or name. parameters: - in: query name: q required: true schema: { type: string } responses: '200': { description: Matching lines. } components: securitySchemes: hmacAuth: type: apiKey in: header name: Authorization description: HMAC-SHA256 signature in the form `hmacauth ::` over `::` using the API secret key. apiKey: type: apiKey in: header name: API_KEY description: Public API key issued by Moovit. Required on every request. parameters: UserLocation: in: header name: USER_LOC schema: { type: string, example: '(40.7128, -74.0060)' } description: User location as `(lat, lon)`. Required if MOOVIT_METRO_ID is not provided. MetroId: in: header name: MOOVIT_METRO_ID schema: { type: string } description: Moovit metro area identifier. Required if USER_LOC is not provided. ProtocolVersion: in: header name: MOOVIT_PROTOCOL_VERSION schema: { type: string, default: '5.1.0.0' } description: Moovit protocol version. Optional. security: - apiKey: [] hmacAuth: [] externalDocs: description: Moovit Public Transit APIs reference url: https://api-docs.moovit.com/api-docs/5.1/MoovitPublicTransitAPIs.html