Stay organized with collections
Save and categorize content based on your preferences.
European Economic Area (EEA) developers
Traffic models use specific algorithms and factors to predict how traffic
conditions impact total travel time for a given route. The Routes API
offers different traffic model types to prioritize different factors used in
calculating duration in traffic. You can specify the traffic model type you'd
like your routes to use when calculating the duration for your routes or route
matrix. When you set the traffic model type, the value returned in the
duration field varies depending on the traffic model you choose.
Both the Routes API Compute Routes and
Compute Route Matrix methods support traffic model types.
By default, both methods use the BEST_GUESS traffic model type.
To specify a traffic type
Set your origin and destination.
If your departure time is in the future, include the time using the
departure_time parameter. If you don't specify a departure time, it
defaults to now.
Set the routingPreference parameter to TRAFFIC_AWARE_OPTIMAL. Setting the
routingPreference to TRAFFIC_UNAWARE or TRAFFIC_AWARE is incompatible
with the trafficModel parameter.
Select the traffic model to use with the trafficModel parameter and
one of the following types:
BEST_GUESS (default) to request that the returned duration_in_traffic
is the best estimate of travel time given what is known about both
historical traffic conditions and live traffic. Live traffic becomes more
important the closer the departure_time is to now. Using the default type
of BEST_GUESS gives the most useful predictions for the vast majority of
use cases.
PESSIMISTIC to request that the returned duration_in_traffic models the
time based on the historical traffic conditions on bad traffic days.
This type gives an estimated duration that is most likely longer than
the actual travel time on most days. Occasional days with particularly bad
conditions may still exceed this estimate.
OPTIMISTIC to request that the returned duration_in_traffic models the
time based on the historical traffic conditions on good traffic days.
This type gives an estimated duration that is most likely shorter than
the actual travel time on most days. Occasional days with particularly
good conditions may still be faster than this estimate.
For example:
"trafficModel":"OPTIMISTIC"
Specify the routes.duration field in the field mask.
REST
-HX-Goog-FieldMask:routes.duration
RPC
const(fieldMask="routes.duration")
When the Routes API estimates time in traffic, it uses the traffic
model type you've requested.
Example: Traffic model request
For example, this request specifies that the duration be estimated using the
OPTIMISTIC traffic model type at a specific departure time:
[null,null,["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe Routes API offers different traffic models (\u003ccode\u003eBEST_GUESS\u003c/code\u003e, \u003ccode\u003ePESSIMISTIC\u003c/code\u003e, \u003ccode\u003eOPTIMISTIC\u003c/code\u003e) to predict travel times based on various traffic conditions.\u003c/p\u003e\n"],["\u003cp\u003eYou can specify the desired traffic model when calculating routes, with \u003ccode\u003eBEST_GUESS\u003c/code\u003e being the default, providing the most useful predictions for most use cases.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003ePESSIMISTIC\u003c/code\u003e models travel time based on bad traffic days, likely resulting in a longer estimated duration, while \u003ccode\u003eOPTIMISTIC\u003c/code\u003e uses good traffic days, potentially resulting in a shorter duration.\u003c/p\u003e\n"],["\u003cp\u003eLive traffic information is integrated into the \u003ccode\u003eBEST_GUESS\u003c/code\u003e model, making it potentially shorter than \u003ccode\u003eOPTIMISTIC\u003c/code\u003e or longer than \u003ccode\u003ePESSIMISTIC\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eTo use traffic models, include the \u003ccode\u003etrafficModel\u003c/code\u003e parameter in your request and specify \u003ccode\u003eroutes.duration\u003c/code\u003e in the field mask.\u003c/p\u003e\n"]]],["The Routes API's traffic models predict travel time, offering `BEST_GUESS` (default), `PESSIMISTIC` (longer), and `OPTIMISTIC` (shorter) durations. To use, set the origin, destination, and optional `departure_time`. Choose a `trafficModel` type and specify `routes.duration` in the field mask. The API calculates traffic-affected durations based on the selected model. Using `BEST_GUESS` integrate live information. The default is `BEST_GUESS`, and the duration returned varies depending on the chosen model. The service is pre-GA, it might have limited support and changes.\n"],null,["# Specify the traffic model type to use\n\n**European Economic Area (EEA) developers** If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](/maps/comms/eea/faq).\n\n\u003cbr /\u003e\n\n| This product or feature is Experimental (pre-GA). Pre-GA products and features might have limited support, and changes to pre-GA products and features might not be compatible with other pre-GA versions. Pre-GA Offerings are covered by the [Google\n| Maps Platform Service Specific Terms](https://cloud.google.com/maps-platform/terms/maps-service-terms). For more information, see the [launch stage descriptions](/maps/launch-stages).\n\n\u003cbr /\u003e\n\nTraffic models use specific algorithms and factors to predict how traffic\nconditions impact total travel time for a given route. The Routes API\noffers different traffic model types to prioritize different factors used in\ncalculating duration in traffic. You can specify the traffic model type you'd\nlike your routes to use when calculating the duration for your routes or route\nmatrix. When you set the traffic model type, the value returned in the\n`duration` field varies depending on the traffic model you choose.\n\nBoth the Routes API `Compute Routes` and\n`Compute Route Matrix` methods support traffic model types.\n\nBy default, both methods use the `BEST_GUESS` traffic model type.\n\nTo specify a traffic type\n-------------------------\n\n1. Set your origin and destination.\n\n2. If your departure time is in the future, include the time using the\n `departure_time` parameter. If you don't specify a departure time, it\n defaults to now.\n\n3. Set the `routingPreference` parameter to `TRAFFIC_AWARE_OPTIMAL`. Setting the\n `routingPreference` to `TRAFFIC_UNAWARE` or `TRAFFIC_AWARE` is incompatible\n with the `trafficModel` parameter.\n\n4. Select the traffic model to use with the `trafficModel` parameter and\n one of the following types:\n\n - `BEST_GUESS` (default) to request that the returned `duration_in_traffic`\n is the best estimate of travel time given what is known about both\n historical traffic conditions and live traffic. Live traffic becomes more\n important the closer the `departure_time` is to now. Using the default type\n of `BEST_GUESS` gives the most useful predictions for the vast majority of\n use cases.\n\n - `PESSIMISTIC` to request that the returned `duration_in_traffic` models the\n time based on the historical traffic conditions on bad traffic days.\n This type gives an estimated duration that is most likely **longer** than\n the actual travel time on most days. Occasional days with particularly bad\n conditions may still exceed this estimate.\n\n - `OPTIMISTIC` to request that the returned `duration_in_traffic` models the\n time based on the historical traffic conditions on good traffic days.\n This type gives an estimated duration that is most likely **shorter** than\n the actual travel time on most days. Occasional days with particularly\n good conditions may still be faster than this estimate.\n\n For example: \n\n ```json\n \"trafficModel\": \"OPTIMISTIC\"\n ```\n\n \u003cbr /\u003e\n\n | **Note:** It is possible the `BEST_GUESS` travel time prediction may be shorter than `OPTIMISTIC` or longer than `PESSIMISTIC`, due to the way `BEST_GUESS` integrates live traffic information.\n5. Specify the `routes.duration` field in the field mask.\n\n **REST** \n\n ```json\n -H X-Goog-FieldMask: routes.duration\n ```\n\n **RPC** \n\n ```gdscript\n const (fieldMask = \"routes.duration\")\n ```\n\nWhen the Routes API estimates time in traffic, it uses the traffic\nmodel type you've requested.\n\nExample: Traffic model request\n------------------------------\n\nFor example, this request specifies that the duration be estimated using the\n`OPTIMISTIC` traffic model type at a specific departure time: \n\n```json\ncurl -X POST -H 'content-type: application/json' -d ' {\n\"origin\": {\n \"address\": \"Kyoto, Japan\"\n },\n\"destination\": {\n \"placeId\": \"ChIJrYtcv-urAWAR3XzWvXv8n_s\"\n },\n\"travelMode\": \"DRIVE\",\n\"routingPreference\": \"TRAFFIC_AWARE_OPTIMAL\",\n\"trafficModel\": \"OPTIMISTIC\"\n}' \\\n-H 'Content-Type: application/json' \\\n-H 'X-Goog-Api-Key: YOUR_API_KEY' \\\n-H 'X-Goog-FieldMask: routes.duration' \\\n'https://routes.googleapis.com/directions/v2:computeRoutes'\n```\n\nThis request returns the estimated duration using the `OPTIMISTIC` traffic model\ntype for the trip: \n\n```json\n\"duration\": \"1238s\"\n```\n\nIf you change the traffic model type to `PESSIMISTIC`, the returned duration is\nlonger: \n\n```json\n\"duration\": \"2436s\"\n```\n| **Note:** If you do not specify a `departureTime`, the implied departure is the request time. This means that you may get different values depending on when the request is sent."]]