search icon
Overview
Developer Tools
Travel Time Matrix API
Isochrone API
H3 API
Geohash API
v4/geohash/fast
Endpoint Reference
v4/geohash
Endpoint Reference
Distance Map API
Routes API
Geocoding API
Additional API Reference
Error Handling
ArcGIS plugin
Alteryx plugin
TravelTime.comchevronDocs

Migration Guide: Google Distance Matrix API to Travel Time Matrix (Fast) API

1. Introduction

This guide is aimed at helping a migration from the Google Distance Matrix API, to the Travel Time Matrix (Fast) endpoint.

It covers the main similarities and differences between the two services, covering Features, Request Details, Response Details, and Error Handling.

Why migrate to TravelTime?

  • Larger matrices (1 million locations per request, vs 100)
  • Exceptional performance with no rate limits, even for large requests
  • Fixed cost and unlimited usage, instead of transactional pricing
  • Comprehensive support included in all licences

2. Features Comparison

The table below covers the main features of the two services.

FeatureGoogle APITravelTime API
Maximum Matrix Size100 elements (and max 25 origins or destinations)10 x 100,000
Sync / AsyncSynchronousSynchronous
PerformanceLimited to 60,000 elements per minute.Able to return 100,000 elements in 120 ms, with no rate limit.
Transport ModesDriving, Walking, Cycling, Public TransitDriving, Walking, Cycling, Public Transit
Calculated PropertiesTravel time, DistanceTravel time, Distance
PricingUsage basedFixed price, unlimited usage
Endpoint PlaygroundN/Aplayground.traveltime.com/travel-time-distance-matrix-fast
SupportMonthly fee + % of platform charges (for Enhanced support)Included in all licences

3. Request Comparison

The sections below cover the main details of the API requests for each service, including endpoint details, authentication, and request structure.

A side-by-side comparison is provided to show how the same 2x2 matrix can be generated using each service.

Endpoint

FeatureGoogle APITravelTime API
Base URLmaps.googleapis.com/maps/api/distancematrixapi.traveltimeapp.com/v4/time-filter/fast
Request TypeGETPOST

Authentication

FeatureGoogle APITravelTime API
Authentication Methodkey in query stringX-Application-Id and X-Api-Key headers
Required HeadersN/AContent-Type: application/json
X-Application-Id: {Your_App_ID}
X-Api-Key: {Your_API_Key}

Request Body Structure

FeatureGoogle APITravelTime API
Search StructureJourneys calculated from all origins to all destinationsIndividual one-to-many or many-to-one searches grouped in one request
Location FormatSeparate origins and destinations parametersSingle locations array with IDs
Location IdentifiersPlace ID,
Address,
Coordinates,
Plus codes,
Encoded polyline
lat
lng
ConfigurationVia additional query string parametersVia parameters within the request body, which can differ between searches
Transport Typemode: driving /
walking /
bicycling /
transit
transportation: { type:
driving+ferry /
cycling+ferry /
walking+ferry /
public_transport
}
Time of Day Configurationdeparture_time or arrival_timearrival_time_period: weekday_morning
Traffic Configurationtraffic_model:
best_guess /
pessimistic /
optimistic
N/A
Max Travel Time ConfigurationN/ASet with the travel_time parameter, with max value 10,800 (3 hours)
Result PropertiesNot specified in requestExplicitly requested via properties array

Request Examples

The request examples below both show how to generate the drive times and distances between two origins and two destinations in the UK.

Google API Request:

curl -X GET "https://maps.googleapis.com/maps/api/distancematrix/json?origins=51.532131%2C-0.293897%7C51.871461%2C-0.435683&destinations=51.749232%2C-1.258321%7C50.899630%2C-1.011401&arrival_time=1740748800&mode=driving&key={Your_API_Key}"

TravelTime API Request Body:

curl -X POST "https://api.traveltimeapp.com/v4/time-filter/fast" \
  -H "Content-Type: application/json" \
  -H "X-Application-Id: {Your_App_ID}" \
  -H "X-Api-Key: {Your_API_Key}" \
  -d '{
  "locations": [
    {
      "id": "Origin 1",
      "coords": {
        "lat": 51.532131,
        "lng": -0.293897
      }
    },
    {
      "id": "Origin 2",
      "coords": {
        "lat": 51.871461,
        "lng": -0.435683
      }
    },
    {
      "id": "Destination 1",
      "coords": {
        "lat": 51.749232,
        "lng": -1.258321
      }
    },
    {
      "id": "Destination 2",
      "coords": {
        "lat": 50.899630,
        "lng": -1.011401
      }
    }
  ],
  "arrival_searches": {
    "one_to_many": [
      {
        "id": "Origin 1",
        "departure_location_id": "Origin 1",
        "arrival_location_ids": [
          "Destination 1",
          "Destination 2"
        ],
        "travel_time": 10800,
        "arrival_time_period": "weekday_morning",
        "properties": [
          "travel_time",
          "distance"
        ],
        "transportation": {
          "type": "driving"
        }
      },
      {
        "id": "Origin 2",
        "departure_location_id": "Origin 2",
        "arrival_location_ids": [
          "Destination 1",
          "Destination 2"
        ],
        "travel_time": 10800,
        "arrival_time_period": "weekday_morning",
        "properties": [
          "travel_time",
          "distance"
        ],
        "transportation": {
          "type": "driving"
        }
      }
    ]
  }
}

4. Response Comparison

The sections below cover the main details of the API response for each service.

A side-by-side comparison is provided to show how the same 2x2 matrix is returned using each service.

Structure Differences

FeatureGoogle APITravelTime API
Root Elementsdestination_addresses
origin_addresses
rows
status
Single results array
Entry IdentificationImplied through relative positions within elements and rows arraysString IDs (search_id, id)
Success / Error Infostatus field for each elementUnreachable locations listed in unreachable arrays (one per search)
Distance Unit Labeltext (as text)
value (in metres)
distance (in metres)
Travel Time Unit Labeltext (as text)
value (in seconds)
travel_time (in metres)
Additional Dataduration_in_traffic
fare
N/A

Response Examples

The response examples below both show the drive times between two origins and two destinations in the UK.

Google API Response:

{
   "destination_addresses": [
       "2 Cambridge Terrace, Oxford OX1 1TP, UK",
       "17 Cotwell Ave, Waterlooville PO8 9AP, UK"
   ],
   "origin_addresses": [
       "56 Priory Gardens, London W5 1DY, UK",
       "7 Friars Way, Luton LU1 5PR, UK"
   ],
   "rows": [
       {
           "elements": [
               {
                   "distance": {
                       "text": "82.2 km",
                       "value": 82236
                   },
                   "duration": {
                       "text": "1 hour 5 mins",
                       "value": 3873
                   },
                   "status": "OK"
               },
               {
                   "distance": {
                       "text": "117 km",
                       "value": 116714
                   },
                   "duration": {
                       "text": "1 hour 26 mins",
                       "value": 5170
                   },
                   "status": "OK"
               }
           ]
       },
       {
           "elements": [
               {
                   "distance": {
                       "text": "109 km",
                       "value": 108847
                   },
                   "duration": {
                       "text": "1 hour 19 mins",
                       "value": 4758
                   },
                   "status": "OK"
               },
               {
                   "distance": {
                       "text": "143 km",
                       "value": 142881
                   },
                   "duration": {
                       "text": "1 hour 40 mins",
                       "value": 6011
                   },
                   "status": "OK"
               }
           ]
       }
   ],
   "status": "OK"
}

TravelTime API Response:

{
    "results": [
        {
            "search_id": "Origin 1",
            "locations": [
                {
                    "id": "Destination 1",
                    "properties": {
                        "travel_time": 4123,
                        "distance": 81870
                    }
                },
                {
                    "id": "Destination 2",
                    "properties": {
                        "travel_time": 5278,
                        "distance": 109859
                    }
                }
            ],
            "unreachable": []
        },
        {
            "search_id": "Origin 2",
            "locations": [
                {
                    "id": "Destination 1",
                    "properties": {
                        "travel_time": 4932,
                        "distance": 108815
                    }
                },
                {
                    "id": "Destination 2",
                    "properties": {
                        "travel_time": 6107,
                        "distance": 143597
                    }
                }
            ],
            "unreachable": []
        }
    ]
}

5. Error Handling

The TravelTime API uses standard http status codes, such as 503 Service Unavailable and 500 Internal Server Error.

The Google API uses custom status codes within the response body.

FeatureGoogle APITravelTime API
Status CodeCustom code inside JSON bodyStandard HTTP code, also included inside JSON body
Root Elementsstatushttp_status
error_code
description
documentation_link
additional_info

Error Message Examples

The response examples below show the error response for a poorly formatted JSON request, with http error code 400.

Google API Response:

{
   "destination_addresses": [],
   "origin_addresses": [],
   "rows": [],
   "status": "INVALID_REQUEST"
}

TravelTime API Response:

{
   "http_status": 400,
   "error_code": 3,
   "description": "Failed to parse json - syntax error",
   "documentation_link": "https://docs.traveltime.com/reference/error-codes",
   "additional_info": {
       "syntax_errors": [
           "Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries"
       ]
   }
}

6. Next Steps

If you are looking to migrate from using the Google Distance Matrix API to TravelTime, you’ll need to first sign up for an API key.

Sign up

To help you get up and running, check out some of the links to more resources below.