This guide is aimed at helping a migration from the Isoline Routing API (v8) from HERE, to the Time Map Fast endpoint.
It covers the main similarities and differences between the two services, covering Features, Request Details, Response Details, and Error Handling.
For the purposes of this comparison, it is assumed that requests to the HERE Isoline Routing API are using the recommended GET method. POST requests are also available, but only a limited number of parameters can be used in the request body.
- Exceptional performance
- Scaling to any size of application
- Support for public transit
- Fixed cost and unlimited usage, instead of transactional pricing
- Permissive caching policy
The table below covers the main features of the two services.
Feature | HERE API | TravelTime API |
---|---|---|
Maximum Isoline Size | 9 hours | 3 hours* |
Sync / Async | Synchronous | Synchronous |
Transport Modes | Car, Truck, Pedestrian, Taxi, Scooter | Car, Pedestrian, Bicycle, Public Transit |
Range Types | Travel time, Distance, Consumption | Travel time, Distance** |
Time of Day Configuration | Any time of day | Peak and Off Peak options |
Response Formats | Encoded polyline | JSON GeoJSON WKT |
Endpoint Playground | N/A | playground.traveltime.com/isochrones-fast |
Support | Paid | Included in all licences |
Caching | Restricted | Permitted |
*Higher travel times available through the Time Map endpoint
**Distance isolines are supported through a separate Distance Map endpoint
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 one hour driving isochrone can be generated using each service.
Feature | HERE API | TravelTime API |
---|---|---|
Base URL | isoline.router.hereapi.com/v8/isolines | api.traveltimeapp.com/v4/time-map/fast |
API Version | Included in URL path (/v8 ) | Included in URL path (/v4 ) |
Primary Request Type* | GET | POST |
* HERE API supports POST requests, but with a limited number of parameters able to go in the request body
*TravelTime API supports GET requests through the Time Map endpoint
Feature | HERE API | TravelTime API |
---|---|---|
Authentication Method | apiKey in query string OR Bearer token (JWT) | X-Application-Id and X-Api-Key headers |
Required Headers | N/A | Content-Type: application/json X-Application-Id: {Your_App_ID} X-Api-Key: {Your_API_Key} |
Optional Headers | X-Request-ID (used to track a request or a group of requests) | Accept: application/json (used to adjust the response format - e.g geoJSON, or WKT) |
The primary difference between the request structure is that the HERE API uses GET requests, with parameters included in the query string, while the TravelTime API uses POST requests, with parameters included in the request body.
Feature | HERE API | TravelTime API |
---|---|---|
Batch Support | Limited to just multiple range values | Supported through an array of one-to-many or many-to-one searches |
Arrival vs Departure | Determined by using either origin or destination parameter | Determined by using either one_to_many or many_to_one search |
Coordinate Input | origin=lat,lng OR destination=lat,lng | coords: { lat, lng } |
Transport Type | transportMode= car / truck / pedestrian / taxi / scooter | transportation: { type: driving+ferry / cycling+ferry / walking+ferry / public_transport } |
Time of Day Configuration | departureTime=2025-01-01T00:00:00 OR arrivalTime=2025-01-01T00:00:00 | arrival_time_period: weekday_morning |
Travel Time Configuration | range[values] &range[type]=time (in seconds) | travel_time (in seconds) |
Routing Mode | routingMode= fast / short | N/A (routes are always optimised for the fastest) |
Shape Granularity | Controlled through: shape[maxPoints] optimizeFor (both control the granularity of the shape) | Controlled through: polygons_filter (remove smaller separated polygons) level_of_detail (control the granularity of the shape) no_holes (fill in holes in polygons) |
The curl examples below both show how to generate a simple one hour driving isochrone departing from a location in New York City.
These requests both include all of the required fields. Both services offer additional optional fields for tailoring the results further.
curl -gX GET 'https://isoline.router.hereapi.com/v8/isolines?'\
'transportMode=car&'\
'origin=40.72511,-73.99088&'\
'range[type]=time&'\
'range[values]=3600&'\
'apiKey={Your_API_Key}'
curl -X POST https://api.traveltimeapp.com/v4/time-map/fast \
-H 'Content-Type: application/json' \
-H 'Accept: application/geo+json' \
-H 'X-Application-Id: {YOUR_APP_ID}' \
-H 'X-Api-Key: {YOUR_APP_KEY}' \
-d '{
"arrival_searches": {
"one_to_many":[
{
"id": "Example",
"coords": {
"lat": 40.72511,
"lng": -73.99088
},
"arrival_time_period": "weekday_morning",
"travel_time": 3600,
"transportation": {
"type": "driving"
}
}
]
}
}'
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 one hour driving isochrone is returned using each service.
Feature | HERE API | TravelTime API |
---|---|---|
Response Formats | Encoded polyline | JSON GeoJSON WKT |
Decoding Required | Yes | No |
Support for Holes | Handled by inner array | JSON - handled by holes arrays GeoJSON - handled natively WKT - handled natively |
Support for Multiple Disconnected Polygons | Not supported | JSON - handled by multiple shell arrays GeoJSON - handled natively WKT - handled natively |
The response examples below both show a one hour driving isochrone from a location in New York City.
For the TravelTime response, geoJSON is used as the response format, but other formats are available (JSON, WKT).
{
"departure": {
"time": "2025-05-01T07:31:54-04:00",
"place": {
"type": "place",
"location": {
"lat": 40.7251271,
"lng": -73.9908676
},
"originalLocation": {
"lat": 40.7251099,
"lng": -73.99088
}
}
},
"isolines": [
{
"range": {
"type": "time",
"value": 3600
},
"polygons": [
{
"outer": "BGsshxtC5xt-uEA64S2rFgjQ-lgBq3K2rFgjQAy61C0rFgjQgmgBq3K0uV0uV2rFgjQA-rgC0rFgjQgmgBq3K0uV0uV2rFgjQ1rFgjQ9lgBq3KAq3Ko9qBq9qBgmgBq3Kq3K-lgB-lgBq3K2rFgjQA0uV1rFgjQ9lgBq3K1rFgjQA0uVzrFgjQ_lgBq3KzrFgjQ0rFgjQgjQ0rF0uVAgjQ2rFq3K-lgBgmgBs3K-lgB-lgBgjQ2rF0uVAgjQ1rFq3[...]K_lgBp3Kp3KzrF_iQAzuV0rF_iQq3Kp3K2rF_iQA53gE2rF_iQ-iQ1rF2uVA-iQ61C2rFwhIAmtN"
}
]
}
]
}
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-74.66676814504899,
40.653876852826215
],
[
-74.66441676905379,
40.65567800810095
],
[
-74.66206539305858,
40.653876852826215
],
[
-74.65971401706338,
40.65567800810095
],
[
-74.65736264106818,
40.65567800810095
],
...
[
-73.28063199587632,
40.849302200134844
]
]
]
]
},
"properties": {
"search_id": "Example"
}
}
]
}
Both the TravelTIme API and the HERE API use standard http status codes, such as 401 Unauthorized and 500 Internal Server Error.
The table below details the main differences in the structures of the error response for each service.
Feature | HERE API | TravelTime API |
---|---|---|
Structude | Flat (no nesting) | Nested additional_info |
HTTP Status Code | Outside JSON body | Included in JSON body |
Root Elements | title status code cause action correlationID | http_status error_code description documentation_link additional_info |
The response examples below show the error response for a poorly formatted JSON request, with http error code 400.
{
"title": "Malformed request",
"status": 400,
"code": "E605001",
"cause": "Error while parsing request: Either one of 'origin or destination' parameter is required",
"action": "",
"correlationId": "b28af7be-3553-4afe-8be5-e69246e0ec08"
}
{
"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"
]
}
}
If you are looking to migrate from using the HERE Isoline Routing API to TravelTime, you’ll need to first sign up for an API key.
Sign upTo help you get up and running, check out some of the links to more resources below.