Method: computeRouteMatrix

Takes in a list of origins and destinations and returns a stream containing route information for each combination of origin and destination.

NOTE: This method requires that you specify a response field mask in the input. You can provide the response field mask by using the URL parameter $fields or fields, or by using the HTTP/gRPC header X-Goog-FieldMask (see the available URL parameters and headers. The value is a comma separated list of field paths. See this detailed documentation about how to construct the field paths.

For example, in this method:

  • Field mask of all available fields (for manual inspection): X-Goog-FieldMask: *
  • Field mask of route durations, distances, element status, condition, and element indices (an example production setup): X-Goog-FieldMask: originIndex,destinationIndex,status,condition,distanceMeters,duration

It is critical that you include status in your field mask as otherwise all messages will appear to be OK. Google discourages the use of the wildcard (*) response field mask, because:

  • Selecting only the fields that you need helps our server save computation cycles, allowing us to return the result to you with a lower latency.
  • Selecting only the fields that you need in your production job ensures stable latency performance. We might add more response fields in the future, and those new fields might require extra computation time. If you select all fields, or if you select all fields at the top level, then you might experience performance degradation because any new field we add will be automatically included in the response.
  • Selecting only the fields that you need results in a smaller response size, and thus higher network throughput.

HTTP request


The URL uses gRPC Transcoding syntax.

Request body

The request body contains data with the following structure:

JSON representation
  "origins": [
      object (RouteMatrixOrigin)
  "destinations": [
      object (RouteMatrixDestination)
  "travelMode": enum (RouteTravelMode),
  "routingPreference": enum (RoutingPreference),
  "departureTime": string

object (RouteMatrixOrigin)

Required. Array of origins, which determines the rows of the response matrix. Several size restrictions apply to the cardinality of origins and destinations:

  • The number of elements (origins × destinations) must be no greater than 625 in any case.
  • The number of elements (origins × destinations) must be no greater than 100 if routingPreference is set to TRAFFIC_AWARE_OPTIMAL.
  • The number of waypoints (origins + destinations) specified as placeId must be no greater than 50.

object (RouteMatrixDestination)

Required. Array of destinations, which determines the columns of the response matrix.


enum (RouteTravelMode)

Optional. Specifies the mode of transportation.


enum (RoutingPreference)

Optional. Specifies how to compute the route. The server attempts to use the selected routing preference to compute the route. If the routing preference results in an error or an extra long latency, an error is returned. In the future, we might implement a fallback mechanism to use a different option when the preferred option does not give a valid result. You can specify this option only when the travelMode is DRIVE or TWO_WHEELER, otherwise the request fails.


string (Timestamp format)

Optional. The departure time. If you don't set this value, this defaults to the time that you made the request. If you set this value to a time that has already occurred, the request fails.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

Response body

If successful, the response body contains an instance of RouteMatrixElement.

Authorization Scopes

Requires the following OAuth scope:


For more information, see the OAuth 2.0 Overview.