Transitland v2 Routing API

Available on the following API tiers:

Transitland v2Beta

The Transitland Routing API plans routes from an origin/start location to a destination/stop location by transit and other modes of travel.

The Transitland Routing API is powered by the same archive of GTFS archives as the other Transitland v2 APIs. Users can combine itineraries from the Transitland Routing API with queries performed against other Transitland v2 APIs.

To sign up for the Transitland Routing API beta, use your Interline account to place a new order for a Transitland API subscription. Select the Transitland Routing API - Beta plan.

The beta plan includes 1,000 free routing queries per month.

At the end of the beta period, we will announce free and paid plans.

Online vs. batch usage

The public Transitland Routing API is intended for "online" purposes such as interactive web or mobile applications.

Geographic coverage

For beta release, coverage is all current operators in the United States.

In the future, we expect to increase routing coverage to match worldwide coverage offered by other Transitland v2 APIs.

Modes of travel

Transitland Routing APIs support travel by transit and walking.

In the future, additional modes of travel may be supported.

Features and benefits

The beta release of Transitland Routing API provides the following features and benefits:

  • Broad coverage in one routing engine: Transit routing across all locations in the United States where Transitland has GTFS source feed coverage (to be expanded worldwide in the future). No need to maintain separate routing engines for each metro region.
  • Rapidly updating schedules: When the Transitland platform receives new versions of source feeds, the new routing graph tiles are rapidly created behind the scenes. Transitland Routing API switches to using the new source feed version's service schedules within minutes. No need to wait hours or days for the routing engine to rebuild.
  • Compatible APIs: Transitland Routing API beta is released with an API endpoint that is compatible with OpenTripPlanner. We may add additional compatibility modes in the future, such as a Google Directions API compatibility endpoint.

Known limitations

Transitland Routing API is a beta release and is under ongoing development. The following are known limitations:

  • Journey itineraries:
    • Pedestrian legs include a shape, origin, and destination, which is sufficient for plotting on a map; pedestrian legs do not include detailed street names or maneuver routing for narrative instructions.
  • Stops and routes:
    • pickup_type or drop_off_type > 0 not supported.
    • continuous_pickup and continuous_drop_off not supported
    • Loop routes not well supported.
  • Timezones:
    • Trips spanning multiple timezones are not well supported.
  • Transfers:
    • Transitland Routing API doesn't make use of transfers.txt when calculating transfers.
  • GTFS Realtime:
    • Transitland Routing API doesn't make use of GTFS Realtime TripUpdates or VehiclePositions.
  • Performance:
    • Users of the beta may intentionally be slowed or rate limited in their use.

The following are previous limitations that have seen been resolved:

  • Transfers after midnight are now supported.
  • block_id in trips.txt is now used when calculating transfers.

OTP-compatible API endpoint

The beta release of the Transitland Routing API provides an endpoint that supports the main request options and response type as OpenTripPlanner's plan REST API.

Software libraries designed to work with the OTP REST API will also likely work with the Transitland Routing API.

OpenTripPlanner (OTP) is an open-source transit trip planner. No code from the OTP project is used to power the Transitland Routing API.

Endpoint

Submit requests to

https://transit.land/api/v2/routing/otp/plan

Requests may use GET or POST methods.

Query parameters

The Transitland Routing API in OTP compatibility mode currently supports the following query parameters.

Basic routing plan query parameters:

The following query parameters are required for every request:

nametypedescription and example
fromPlacecoordinatesOrigin in "lon,lat" format, e.g. "37.7757,-122.47996"
toPlacecoordinatesDestination in "lon,lat" format, e.g. "37.7757,-122.47996"
timestringDepart from origin, HH:MM:SS in local time
datestringDepart from origin, YYYY-MM-DD in local time (MM-DD-YYYY also supported)

Advanced routing plan query parameters:

The following query parameters are optional additions. If not specified in the request, the default value will be used.

nametypedefaultdescription
arriveBybooleanfalseWhen set, time and date will be used as target "arrival time" at destination instead of departure from origin
maxItinerariesinteger10Number of returned itineraries. Can also be specified as numItineraries.
maxWalkingDistancefloat800Maximum walking distance (in meters) from origin to first stop or last stop to destination. Can also be specified as maxWalkDistance.
maxTransferWalkingDistancefloat400Maximum distance (in meters) to consider for transfers, e.g. the last stop of one leg and the first stop of the next leg. This is a straight line distance.
walkingSpeedfloat1.0Walking speed (meters per second). Cannot be changed in beta release.
minRideLengthinteger120Minimum duration (in seconds) of a transit vehicle leg
maxKinteger8Maximum number of transit legs
maxTripTimeinteger14400Maximum itinerary time (in seconds)
transferTimePenaltyinteger120Amount of padding to add (in seconds) when considering a transfer. For example, when alighting from the end of the first transit leg and walking to the departure stop for the next leg, only transfers to new trips departing at least 120s from that moment will be considered

Advanced query parameters to control service-schedule fallback:

When transit agencies have not released up-to-date GTFS feeds, Transitland v2 APIs can fallback to an automatically selected substitute schedule:

nametypedefaultdescription
useFallbackDatesbooleanfalseUse "fallback" service dates if the requested date is outside the service period of a given feed. For instance, if a feed only contains service from 2023-01-01 through 2023-01-31, and a date of 2023-05-01 is specified, an equivalent weekday (in this case, Monday) will be selected within the valid service range, such as 2023-01-09.

Query parameters to control walking itinerary:

nametypedefaultdescription
includeWalkingItinerarybooleanfalseInclude a walking-only itinerary regardless of transit plan results
fallbackWalkingItinerarybooleanfalseInclude a walking-only itinerary if no transit trips were found
allowWalkingItinerarybooleanfalseInclude a walking-only itinerary by default if the origin and destination are within maxWalkingDistance
The Transitland Routing API starts looking for a pedestrian accessible "edge" within 20 meters of the origin point. If none are found, it increases its search radius gradually. If none are found at ~640 meters, it will fail to generate any itineraries.

Query parameters for debugging routing algorithm:

nametypedefaultdescription
includeEarliestArrivalsbooleanfalseInclude a table of the earliest arrival time of each stop visited during trip planning
useTargetStopPruningbooleantrueDo not consider stops that can not improve end goal arrival times. Set to false to consider all possible transfers, which is useful for generating isochrones.

Example request

This is a basic example of a request to the OTP-compatible routing API endpoint:

https://transit.land/api/v2/routing/otp/plan?fromPlace=37.7757,-122.47996&toPlace=37.76845,-122.23508&date=2024-05-03&time=17%3A59&api_key=xxx

Example response contents

Below is an example of a response from the OTP-compatible API endpoint. Comments describing some of the fields are prefixed with //:

{
  "plan": {
    "date": 1714719600000, // UNIX timestamp (milliseconds since the UNIX epoch)
    "from": { // the starting point
      "lat": 37.7757,
      "lon": -122.47996,
      "name": "Origin",
      "stopOnestopId": ""
    },
    "to": { // the ending point
      "lat": 37.76845,
      "lon": -122.23508,
      "name": "Destination",
      "stopOnestopId": ""
    },
    "itineraries": [ // each itinerary represents a different set of legs to travel from the origin to the destination
      {
        "duration": 5046, // duration of entire journey from origin to destination (in seconds)
        "distance": 25860.370696342565, // distance of entire journey from origin to destination (in meters)
        "startTime": 1714784876000, // UNIX timestamp departing origin (milliseconds since the UNIX epoch)
        "endTime": 1714789922000, // UNIX timestamp arriving at destination (milliseconds since the UNIX epoch)
        "walkTime": 676, // duration of portion of journey walking (in seconds)
        "walkDistance": 814.3349369408373, // distance of portion of journey walking (in meters)
        "transitTime": 3439, // duration of portion of journey on a transit vehicle (in seconds)
        "transitDistance": 25046.035759401726, // distance of portion of journey on a transit vehicle (in meters)
        "waitingTime": 931, // duration of portion of journey waiting for a transit vehicle (in seconds)
        "transfers": 2, // number of transfers between transit vehicles/routes
        "legs": [ // each leg represents a portion of the journey walking or on a transit vehicle/route
          { // the 1st leg represents walking to a transit stop
            "startTime": 1714784876000, // UNIX timestamp (milliseconds since the UNIX epoch)
            "endTime": 1714784996000, // UNIX timestamp (milliseconds since the UNIX epoch)
            "distance": 120.6845160365044, // meters
            "duration": 120, // seconds
            "mode": "WALK", // the travel mode of the leg
            "transitLeg": false, // is the travel mode a variety of transit?
            "from": { // the starting point of this leg
              "lat": 37.7757,
              "lon": -122.47996,
              "name": "",
              "departure": 1714784876000, // UNIX timestamp (milliseconds since the UNIX epoch)
              "stopOnestopId": ""
            },
            "to": { // the ending point of this leg; in this case, boarding a bus
              "lat": 37.776429,
              "lon": -122.480273,
              "name": "Balboa St & 21st Ave", // name of the transit stop
              "departure": 1714784996000, // UNIX timestamp (milliseconds since the UNIX epoch)
              "stopId": "13048", // stop ID from the source feed (GTFS)
              "stopCode": "13048", // stop code as specified by the agency
              "stopOnestopId": "s-9q8yuuuxdu-balboast~21stave" // Onestop ID for the stop (for use in other Transitland APIs)
            },
            "steps": [],
            "legGeometry": {
              "points": "caqeFvzpjV??@b@aDH???PLA??", // the geometric shape of this leg, in encoded polyline format. For more information about how to decode see https://developers.google.com/maps/documentation/utilities/polylinealgorithm
              "length": 8
            }
          },
          { { // the 2nd leg represents riding a bus route
            "startTime": 1714784996000,
            "endTime": 1714786910000,
            "distance": 6333.086301709978,
            "duration": 1914,
            "mode": "BUS",
            "transitLeg": true,
            "from": { // stop to board the bus
              "lat": 37.776429,
              "lon": -122.480273,
              "name": "Balboa St & 21st Ave",
              "departure": 1714784996000,
              "stopId": "13048",
              "stopCode": "13048",
              "stopIndex": 14,
              "stopSequence": 14,
              "stopOnestopId": "s-9q8yuuuxdu-balboast~21stave" // Onestop ID for the stop (for use in other Transitland APIs)
            },
            "to": { // stop to alight the bus
              "lat": 37.78427,
              "lon": -122.409402,
              "name": "Eddy St & Mason St",
              "departure": 1714786910000,
              "stopId": "14486",
              "stopCode": "14486",
              "stopIndex": 47,
              "stopSequence": 47,
              "stopOnestopId": "s-9q8yyw2jq4-eddyst~masonst" // Onestop ID for the stop (for use in other Transitland APIs)
            },
            "steps": [],
            "intermediateStops": [ // transit stops passed along the journey
              {
                "lat": 37.776528,
                "lon": -122.47813,
                "name": "Balboa St & 19th Ave",
                "departure": 1714785035000, // UNIX timestamp (milliseconds since the UNIX epoch)
                "stopId": "13046",
                "stopCode": "13046",
                "stopIndex": 15,
                "stopSequence": 15,
                "stopOnestopId": "s-9q8yuvn0hx-balboast~19thave"
              },
              {
                "lat": 37.776626,
                "lon": -122.475987,
                "name": "Balboa St & 17th Ave",
                "departure": 1714785074000,
                "stopId": "13044",
                "stopCode": "13044",
                "stopIndex": 16,
                "stopSequence": 16,
                "stopOnestopId": "s-9q8yuvp8y9-balboast~17thave"
              },
              {
                "lat": 37.776788,
                "lon": -122.472411,
                "name": "Balboa St & Park Presidio Blvd",
                "departure": 1714785140000,
                "stopId": "13071",
                "stopCode": "13071",
                "stopIndex": 17,
                "stopSequence": 17,
                "stopOnestopId": "s-9q8yvj439z-balboast~parkpresidioblvd"
              },
              {
                "lat": 37.776868,
                "lon": -122.470531,
                "name": "Balboa St & 12th Ave",
                "departure": 1714785174000,
                "stopId": "13041",
                "stopCode": "13041",
                "stopIndex": 18,
                "stopSequence": 18,
                "stopOnestopId": "s-9q8yvj5djy-balboast~12thave"
              },
              {
                "lat": 37.776967,
                "lon": -122.468388,
                "name": "Balboa St & 10th Ave",
                "departure": 1714785213000,
                "stopId": "13039",
                "stopCode": "13039",
                "stopIndex": 19,
                "stopSequence": 19,
                "stopOnestopId": "s-9q8yvjj4z9-balboast~10thave"
              },
              {
                "lat": 37.777065,
                "lon": -122.466256,
                "name": "Balboa St & 8th Ave",
                "departure": 1714785252000,
                "stopId": "13037",
                "stopCode": "13037",
                "stopIndex": 20,
                "stopSequence": 20,
                "stopOnestopId": "s-9q8yvjng37-balboast~8thave"
              },
              {
                "lat": 37.777173,
                "lon": -122.463849,
                "name": "Balboa St & 6th Ave",
                "departure": 1714785300000,
                "stopId": "13035",
                "stopCode": "13035",
                "stopIndex": 21,
                "stopSequence": 21,
                "stopOnestopId": "s-9q8yvm0ecr-balboast~6thave"
              },
              {
                "lat": 37.777262,
                "lon": -122.461969,
                "name": "Balboa St & 4th Ave",
                "departure": 1714785341000,
                "stopId": "13033",
                "stopCode": "13033",
                "stopIndex": 22,
                "stopSequence": 22,
                "stopOnestopId": "s-9q8yvm1ut2-balboast~4thave"
              },
              {
                "lat": 37.77715,
                "lon": -122.45818,
                "name": "Turk St & Arguello Blvd",
                "departure": 1714785425000,
                "stopId": "16709",
                "stopCode": "16709",
                "stopIndex": 23,
                "stopSequence": 23,
                "stopOnestopId": "s-9q8yvmheve-turkst~arguelloblvd"
              },
              {
                "lat": 37.777557,
                "lon": -122.455035,
                "name": "Turk St & Stanyan St",
                "departure": 1714785495000,
                "stopId": "16732",
                "stopCode": "16732",
                "stopIndex": 24,
                "stopSequence": 24,
                "stopOnestopId": "s-9q8yvmnynz-turkst~stanyanst"
              },
              {
                "lat": 37.777754,
                "lon": -122.453476,
                "name": "Turk St & Parker Ave",
                "departure": 1714785529000,
                "stopId": "16728",
                "stopCode": "16728",
                "stopIndex": 25,
                "stopSequence": 25,
                "stopOnestopId": "s-9q8yvt0p75-turkst~parkerave"
              },
              {
                "lat": 37.778012,
                "lon": -122.451367,
                "name": "Turk St & Chabot Ter",
                "departure": 1714785576000,
                "stopId": "16715",
                "stopCode": "16715",
                "stopIndex": 26,
                "stopSequence": 26,
                "stopOnestopId": "s-9q8yvt38u7-turkst~chabotter"
              },
              {
                "lat": 37.778235,
                "lon": -122.44959,
                "name": "Turk St & Roselyn Ter",
                "departure": 1714785615000,
                "stopId": "16729",
                "stopCode": "16729",
                "stopIndex": 27,
                "stopSequence": 27,
                "stopOnestopId": "s-9q8yvt6fjt-turkst~roselynter"
              },
              {
                "lat": 37.778548,
                "lon": -122.447138,
                "name": "Turk St & Masonic Ave",
                "departure": 1714785660000,
                "stopId": "16725",
                "stopCode": "16725",
                "stopIndex": 28,
                "stopSequence": 28,
                "stopOnestopId": "s-9q8yvtkeyz-turkst~masonicave"
              },
              {
                "lat": 37.778762,
                "lon": -122.445441,
                "name": "Turk St & Central Ave",
                "departure": 1714785705000,
                "stopId": "16717",
                "stopCode": "16717",
                "stopIndex": 29,
                "stopSequence": 29,
                "stopOnestopId": "s-9q8yvtmvnr-turkst~centralave"
              },
              {
                "lat": 37.778958,
                "lon": -122.443791,
                "name": "Turk St & Lyon St",
                "departure": 1714785748000,
                "stopId": "16723",
                "stopCode": "16723",
                "stopIndex": 30,
                "stopSequence": 30,
                "stopOnestopId": "s-9q8yvtrnku-turkst~lyonst"
              },
              {
                "lat": 37.779163,
                "lon": -122.442151,
                "name": "Turk St & Baker St",
                "departure": 1714785792000,
                "stopId": "16711",
                "stopCode": "16711",
                "stopIndex": 31,
                "stopSequence": 31,
                "stopOnestopId": "s-9q8yvv2re4-turkst~bakerst"
              },
              {
                "lat": 37.779359,
                "lon": -122.440489,
                "name": "Turk St & Broderick St",
                "departure": 1714785836000,
                "stopId": "16713",
                "stopCode": "16713",
                "stopIndex": 32,
                "stopSequence": 32,
                "stopOnestopId": "s-9q8yvv989y-turkst~broderickst"
              },
              {
                "lat": 37.780546,
                "lon": -122.438759,
                "name": "Eddy St & Divisadero St",
                "departure": 1714785918000,
                "stopId": "14474",
                "stopCode": "14474",
                "stopIndex": 33,
                "stopSequence": 33,
                "stopOnestopId": "s-9q8yvvdzdh-eddyst~divisaderost"
              },
              {
                "lat": 37.780724,
                "lon": -122.43736,
                "name": "Eddy St & Scott St",
                "departure": 1714785955000,
                "stopId": "14492",
                "stopCode": "14492",
                "stopIndex": 34,
                "stopSequence": 34,
                "stopOnestopId": "s-9q8yvvgbdt-eddyst~scottst"
              },
              {
                "lat": 37.780929,
                "lon": -122.435709,
                "name": "Eddy St & Pierce St",
                "departure": 1714785999000,
                "stopId": "14488",
                "stopCode": "14488",
                "stopIndex": 35,
                "stopSequence": 35,
                "stopOnestopId": "s-9q8yvvv1c5-eddyst~piercest"
              },
              {
                "lat": 37.781348,
                "lon": -122.432431,
                "name": "Eddy St & Fillmore St",
                "departure": 1714786086000,
                "stopId": "14476",
                "stopCode": "14476",
                "stopIndex": 36,
                "stopSequence": 36,
                "stopOnestopId": "s-9q8yvvzkm9-eddyst~fillmorest"
              },
              {
                "lat": 37.781767,
                "lon": -122.429141,
                "name": "Eddy St & Buchanan St",
                "departure": 1714786173000,
                "stopId": "14473",
                "stopCode": "14473",
                "stopIndex": 37,
                "stopSequence": 37,
                "stopOnestopId": "s-9q8yyjcydp-eddyst~buchananst"
              },
              {
                "lat": 37.782017,
                "lon": -122.427227,
                "name": "Eddy St & Laguna St",
                "departure": 1714786224000,
                "stopId": "14485",
                "stopCode": "14485",
                "stopIndex": 38,
                "stopSequence": 38,
                "stopOnestopId": "s-9q8yyn50ny-eddyst~lagunast"
              },
              {
                "lat": 37.7824,
                "lon": -122.424201,
                "name": "Eddy St & Gough St",
                "departure": 1714786304000,
                "stopId": "14478",
                "stopCode": "14478",
                "stopIndex": 39,
                "stopSequence": 39,
                "stopOnestopId": "s-9q8yynj6mm-eddyst~goughst"
              },
              {
                "lat": 37.782863,
                "lon": -122.42059,
                "name": "Eddy St & Van Ness Ave",
                "departure": 1714786380000,
                "stopId": "14495",
                "stopCode": "14495",
                "stopIndex": 40,
                "stopSequence": 40,
                "stopOnestopId": "s-9q8yyq0j1k-eddyst~vannessave"
              },
              {
                "lat": 37.783059,
                "lon": -122.419019,
                "name": "Eddy St & Polk St",
                "departure": 1714786454000,
                "stopId": "14490",
                "stopCode": "14490",
                "stopIndex": 41,
                "stopSequence": 41,
                "stopOnestopId": "s-9q8yyq1nq0-eddyst~polkst"
              },
              {
                "lat": 37.783273,
                "lon": -122.417357,
                "name": "Eddy St & Larkin St",
                "departure": 1714786533000,
                "stopId": "14482",
                "stopCode": "14482",
                "stopIndex": 42,
                "stopSequence": 42,
                "stopOnestopId": "s-9q8yyq4rsb-eddyst~larkinst"
              },
              {
                "lat": 37.783478,
                "lon": -122.415718,
                "name": "Eddy St & Hyde St",
                "departure": 1714786610000,
                "stopId": "14479",
                "stopCode": "14479",
                "stopIndex": 43,
                "stopSequence": 43,
                "stopOnestopId": "s-9q8yyq78en-eddyst~hydest"
              },
              {
                "lat": 37.783682,
                "lon": -122.413964,
                "name": "Eddy St & Leavenworth St",
                "departure": 1714786693000,
                "stopId": "14483",
                "stopCode": "14483",
                "stopIndex": 44,
                "stopSequence": 44,
                "stopOnestopId": "s-9q8yyqkcgu-eddyst~leavenworthst"
              },
              {
                "lat": 37.783878,
                "lon": -122.412428,
                "name": "Eddy St & Jones St",
                "departure": 1714786766000,
                "stopId": "14480",
                "stopCode": "14480",
                "stopIndex": 45,
                "stopSequence": 45,
                "stopOnestopId": "s-9q8yyqmgp9-eddyst~jonesst"
              },
              {
                "lat": 37.784101,
                "lon": -122.410789,
                "name": "Eddy St & Taylor St",
                "departure": 1714786844000,
                "stopId": "14493",
                "stopCode": "14493",
                "stopIndex": 46,
                "stopSequence": 46,
                "stopOnestopId": "s-9q8yyqrhmf-eddyst~taylorst"
              }
            ],
            "legGeometry": {
              "points": "afqeFv|pjV?CAMIuEEgECMIuEEgECOIuEI_FIaF?c@CeAEiBEgECMIwEEeEAMIwEGeEAMIyEIsE@c@KqDEeECOIuEGuEGqCVcAPOFo@A_@c@eGQcDSeDCe@SkCQkDCOU_EWoDAe@SkCUqDCe@QkCWoDQgDEWWgEMqBCWc@qHCWe@oHCWY{D@_@IyACUk@kIyDd@C]a@wGEWc@qHCUi@gIe@oHCYk@wIc@_HCYi@gIA]mA{QCWe@mHCYi@iICi@e@}GA[g@mHA]e@iHA]g@kHCq@SkCQiCA]g@kH?[c@sG?E",
              "length": 100
            },
            "agencyId": "SF", // the agency operating the bus route
            "agencyName": "San Francisco Municipal Transportation Agency",
            "routeShortName": "31", // the bus route
            "routeLongName": "BALBOA",
            "routeType": 3, // the GTFS route vehicle type
            "routeId": "SF:31",
            "routeColor": "005B95", // color suggested by the agency source feed (as hexadecimal HTML color code)
            "routeTextColor": "FFFFFF", // color suggested by the agency source feed; or defaults to white (as hexadecimal HTML color code)
            "routeOnestopId": "r-9q8yv-31", // route Onestop ID (for use in other Transitland APIs)
            "tripId": "SF:11494605_M31",
            "headsign": "Caltrain",
            "feedId": "f-sf~bay~area~rg", // Onestop ID for the Transitland source feed from which this schedule comes
            "feedVersionSha1": "d0f9156ffe5dc02608da295b2f4e3fa538266f78" // SHA1 hash for the Transitland feed version from which this schedule comes
          },
          {
            "startTime": 1714786910000,
            "endTime": 1714787296000,
            "distance": 456.4860352225029,
            "duration": 386,
            "mode": "WALK",
            "transitLeg": false,
            "from": {
              "lat": 37.78427,
              "lon": -122.409402,
              "name": "Eddy St & Mason St",
              "departure": 1714786910000,
              "stopId": "14486",
              "stopCode": "14486",
              "stopOnestopId": "s-9q8yyw2jq4-eddyst~masonst"
            },
            "to": {
              "lat": 37.78486164387391,
              "lon": -122.40685728655569,
              "name": "Powell Street",
              "departure": 1714787296000,
              "stopId": "POWL",
              "stopCode": "POWL",
              "stopOnestopId": "s-9q8yywd0c2-powellstreet"
            },
            "steps": [],
            "legGeometry": {
              "points": "uvreFvacjV??O@AOKyAC_@Ce@??x@q@LQ??GIAAIMDGBC@CDERYu@cASWSY{@kAcB}B@JA???rArB",
              "length": 28
            }
          },
          {
            "startTime": 1714787460000,
            "endTime": 1714788660000,
            "distance": 17439.170995221717,
            "duration": 1200,
            "mode": "RAIL",
            "transitLeg": true,
            "from": {
              "lat": 37.78486164387391,
              "lon": -122.40685728655569,
              "name": "Powell Street",
              "departure": 1714787460000,
              "stopId": "POWL",
              "stopCode": "POWL",
              "stopIndex": 6,
              "stopSequence": 6,
              "stopOnestopId": "s-9q8yywd0c2-powellstreet"
            },
            "to": {
              "lat": 37.774841,
              "lon": -122.224081,
              "name": "Fruitvale",
              "departure": 1714788660000,
              "stopId": "FTVL",
              "stopCode": "FTVL",
              "stopIndex": 11,
              "stopSequence": 11,
              "stopOnestopId": "s-9q9nfsxnkk-fruitvale"
            },
            "steps": [],
            "intermediateStops": [
              {
                "lat": 37.78924863397131,
                "lon": -122.40137394207487,
                "name": "Montgomery Street",
                "departure": 1714787520000,
                "stopId": "MONT",
                "stopCode": "MONT",
                "stopIndex": 7,
                "stopSequence": 7,
                "stopOnestopId": "s-9q8yyxq436-montgomerystreet"
              },
              {
                "lat": 37.79269145992349,
                "lon": -122.3970442466863,
                "name": "Embarcadero",
                "departure": 1714787640000,
                "stopId": "EMBR",
                "stopCode": "EMBR",
                "stopIndex": 8,
                "stopSequence": 8,
                "stopOnestopId": "s-9q8yyzcnqh-embarcadero"
              },
              {
                "lat": 37.804923,
                "lon": -122.295144,
                "name": "West Oakland",
                "departure": 1714788060000,
                "stopId": "WOAK",
                "stopCode": "WOAK",
                "stopIndex": 9,
                "stopSequence": 9,
                "stopOnestopId": "s-9q9p145mss-westoakland"
              },
              {
                "lat": 37.797357,
                "lon": -122.265232,
                "name": "Lake Merritt",
                "departure": 1714788420000,
                "stopId": "LAKE",
                "stopCode": "LAKE",
                "stopIndex": 10,
                "stopSequence": 10,
                "stopOnestopId": "s-9q9p1bc1td-lakemerritt"
              }
            ],
            "legGeometry": {
              "points": "{zreFfrbjVcAsAmA_BmAaBmAaBmAcBkAaBmAaBmAaBkAaBmAaBmAaBmA_BmAaBmAaBmAaBmAaBmAaBkAaBmAaBkAcBmAaBmAaBkAcBgAgBaAmB}@sBw@uBw@uBw@wBw@wBu@wBu@wBu@wBu@yBu@wBs@yBu@wBu@wBu@yBs@yBu@wBu@wBu@yBs@wBu@yBu@wBu@yBs@wBu@yBs@wBu@yBu@wBu@yBo@{Bm@}Bi@_Cg@_Cc@aCa@cC]eCYeCYeCWgCWeCWgCWgCWeCUgCWgCUeCUgCWgCWeCUgCWgCUeCWgCWgCUeCWgCWgCUeCWgCUgCWeCUgCWgCWeCUgCWgCUeCWgCWgCUeCWgCUgCWeCWgCUgCWeCUgCWgCWeCUgCWgCUeCWgCUgCUgCQgCQgCQiCMgCMiCKiCKiCIiCGiCGiCEiCEiCEiCAiC@iC@kCDiCDiCFiCFiCHiCJiCLiCJgCLiCJiCJiCJgCLiCJiCLiCLgCLiCLiCLgCJiCLiCJgCNiCLiCFiCLgCLiCLiCLgCNiCNgCPiCPgCVgCVeCZeC\\eCZeC\\cCZeC\\eC\\cC\\eC\\cC`@eCb@aCj@}Bn@}Bp@yBr@yBn@{Bp@{Bp@{Bp@yBp@{Bp@{Bl@{Bh@_Cb@cC\\cC^eC\\cCZeC\\eC\\cC^cCd@cCj@}Bp@yBv@wBt@wBv@wBx@uBx@uBx@sB|@qBv@wBd@_CPiCFiCGiCk@}BeAiBiAgB}@qBa@aCEiCLiCVeCd@aCl@}Bp@yBr@yBt@wBz@uB|@oB~@qB|@qB|@qB|@qB~@qB~@oBbAkBhAgBhAeBlAaBlA_BlAaBlAaBjAaBhAeBfAiB`AmB|@qBx@uBr@yBn@}Bh@}Bf@aCf@_Cf@aCj@}Bn@{Br@{Br@yBr@wBr@yBr@yBr@yBr@yBt@yBr@wBv@wBv@wBx@uBx@sBv@uBx@wBx@uBx@sBz@sB|@qB~@oB`AoB`AmB`AoB`AmB`AmB`AmBbAmBdAiBfAgBjAcBnA_BlAaBjAaBhAgBdAiB~@oB|@qBz@sBz@sBx@uBz@sBx@uBz@qB~@qB|@qB`AoB~@oBn@qA",
              "length": 297
            },
            "agencyId": "BA",
            "agencyName": "Bay Area Rapid Transit",
            "routeShortName": "Green-N",
            "routeLongName": "Daly City to Berryessa/North San Jose",
            "routeType": 1,
            "routeId": "BA:Green-N",
            "routeColor": "339933",
            "routeTextColor": "FFFFFF",
            "routeOnestopId": "r-9q9-green~n",
            "tripId": "BA:1508761",
            "headsign": "Berryessa/North San Jose",
            "feedId": "f-sf~bay~area~rg",
            "feedVersionSha1": "d0f9156ffe5dc02608da295b2f4e3fa538266f78"
          },
          {
            "startTime": 1714788660000,
            "endTime": 1714788673000,
            "distance": 79.25979157389843,
            "duration": 13,
            "mode": "WALK",
            "transitLeg": false,
            "from": {
              "lat": 37.774841,
              "lon": -122.224081,
              "name": "Fruitvale",
              "departure": 1714788660000,
              "stopId": "FTVL",
              "stopCode": "FTVL",
              "stopOnestopId": "s-9q9nfsxnkk-fruitvale"
            },
            "to": {
              "lat": 37.7750001,
              "lon": -122.2245687,
              "name": "Fruitvale BART",
              "departure": 1714788673000,
              "stopId": "51333",
              "stopCode": "51333",
              "stopOnestopId": "s-9q9nfswz34-fruitvalebart"
            },
            "steps": [],
            "legGeometry": {
              "points": "w{peFn{~hVq@`B??DB@???MI??VD",
              "length": 9
            }
          },
          {
            "startTime": 1714789440000,
            "endTime": 1714789765000,
            "distance": 1273.7784624700307,
            "duration": 325,
            "mode": "BUS",
            "transitLeg": true,
            "from": {
              "lat": 37.7750001,
              "lon": -122.2245687,
              "name": "Fruitvale BART",
              "departure": 1714789440000,
              "stopId": "51333",
              "stopCode": "51333",
              "stopOnestopId": "s-9q9nfswz34-fruitvalebart"
            },
            "to": {
              "lat": 37.76746,
              "lon": -122.235163,
              "name": "Broadway & Tilden Way",
              "departure": 1714789765000,
              "stopId": "51545",
              "stopCode": "51545",
              "stopIndex": 3,
              "stopSequence": 3,
              "stopOnestopId": "s-9q9nf7r56k-broadway~tildenway"
            },
            "steps": [],
            "intermediateStops": [
              {
                "lat": 37.77379,
                "lon": -122.227856,
                "name": "Fruitvale Av & E 9th St",
                "departure": 1714789528000,
                "stopId": "58058",
                "stopCode": "58058",
                "stopIndex": 1,
                "stopSequence": 1,
                "stopOnestopId": "s-9q9nfss2k8-fruitvaleav~e9thst"
              },
              {
                "lat": 37.76859,
                "lon": -122.234222,
                "name": "Broadway & Blanding Av",
                "departure": 1714789740000,
                "stopId": "58677",
                "stopCode": "58677",
                "stopIndex": 2,
                "stopSequence": 2,
                "stopOnestopId": "s-9q9nf7xcbp-broadway~blandingav"
              }
            ],
            "legGeometry": {
              "points": "w|peFp~~hVOf@Oh@Ub@Q^IR?VFVJRBP\\T^TJHKZQ^M`@KVKXK^TJ`@NLDTJ`@N`@NLD`@N`@NPFZZPRb@@X@`@LJBJBLD^H`@L`@LTH`@JXH`@L`@Jb@J`@L`@L`@L\\J`@LRDDHFDTJRLRJVN\\THD\\V^V\\VVRLJPBRL\\VZT\\X\\VJFPLJJPVJNJRFLFRFVFTHh@D^Db@EVFj@Hj@DXFj@ANCPGNQLa@NUFIDKFOJKLQd@Sd@Jj@FZ`@N`@L\\V\\X\\V\\XV`@LV??",
              "length": 112
            },
            "agencyId": "AC",
            "agencyName": "AC TRANSIT",
            "routeShortName": "51A",
            "routeLongName": "Broadway - Santa Clara",
            "routeType": 3,
            "routeId": "AC:51A",
            "routeColor": "A30D11",
            "routeTextColor": "FFFFFF",
            "routeOnestopId": "r-9q9p1-51a",
            "tripId": "AC:13994020",
            "headsign": "Rockridge BART",
            "feedId": "f-sf~bay~area~rg",
            "feedVersionSha1": "d0f9156ffe5dc02608da295b2f4e3fa538266f78"
          },
          {
            "startTime": 1714789765000,
            "endTime": 1714789922000,
            "distance": 157.90459410793164,
            "duration": 157,
            "mode": "WALK",
            "transitLeg": false,
            "from": {
              "lat": 37.76746,
              "lon": -122.235163,
              "name": "Broadway & Tilden Way",
              "departure": 1714789765000,
              "stopId": "51545",
              "stopCode": "51545",
              "stopOnestopId": "s-9q9nf7r56k-broadway~tildenway"
            },
            "to": {
              "lat": 37.76845,
              "lon": -122.23508,
              "name": "",
              "departure": 1714789922000,
              "stopOnestopId": ""
            },
            "steps": [],
            "legGeometry": {
              "points": "smoeFv`aiV??C@Ic@??qAaAw@jBm@W??",
              "length": 9
            }
          }
        ]
      },
      // remaining itineraries have been removed from this sample to save space
    ]
  }
}