- Allow users to search for jobs using commute time
- Incorporate travel times into the filtering and ranking of search results
- Enrich each result with the individual user's travel time
- Increase conversions by showing more relevant search results
- Capture user commute preferences to build a richer profile for relevant notifications and alerts
10% increase in conversions
3-in-4 users adopting commute time search
Intuitive commute time and routing insights

Chris Burles
Director of Product Management at The Stepstone Group
“TravelTime has enriched our user experience and increased conversions by 10%.“
Request type | POST |
Host | api.traveltimeapp.com |
Endpoint | /v4/time-filter/fast |
Authentication | Application-Id Api-Key |
{
"locations": [
{
"id": "User Home",
"coords": {
"lat": 54.2389,
"lng": -0.3975
}
},
{
"id": "Job 1",
"coords": {
"lat": 54.2442,
"lng": -0.4075
}
},
{
"id": "Job 2",
"coords": {
"lat": 54.2483,
"lng": -0.4349
}
},
{
"id": "Job 3",
"coords": {
"lat": 53.9923,
"lng": -0.3134
}
},
.
.
.
{
"id": "Job 100,000",
"coords": {
"lat": 53.9923,
"lng": -0.4134
}
}
],
"arrival_searches": {
"one_to_many": [
{
"id": "Commute Search",
"departure_location_id": "User Home",
"arrival_location_ids": [
"Job 1",
"Job 2",
"Job 3",
.
.
.
"Job 100,000"
],
"transportation": {
"type": "public_transport"
},
"travel_time": 10800,
"arrival_time_period": "weekday_morning",
"properties": [
"travel_time"
]
}
]
}
}
locations - an array containing the IDs and lat-long coordinates of the user's search location and all of the job listings. This can include up to 100,000 listings, but could be pre-filtered using other search parameters if desired
one_to_many - travel times are calculated departing from the user's search location and arriving at each job location
arrival_time_period - weekday_morning reflects the typical travel times for a morning commute
travel_time - used to filter the reachable jobs based on the user's chosen commute time (up to 3 hours)
transportation - taken from the user's chosen transport mode, typically Driving / Public_Transport / Walking / Cycling
properties - the data point(s) to be calculated for each listing - typically just travel_time, but distance can also be used if required
{
"results": [
{
"search_id": "Commute Search",
"locations": [
{
"id": "Job 1",
"properties": {
"travel_time": 554
}
},
{
"id": "Job 2",
"properties": {
"travel_time": 1968
}
},
.
.
.
{
"id": "Job 100,000",
"properties": {
"travel_time": 5868
}
}
],
"unreachable": [
"Job 3"
]
}
]
}
locations - Reachable jobs based on the user's commute search parameters
unreachable - Unreachable jobs outside of the user's commute search parameters
npm i traveltime-api
This package comes with TypeScript support.
Before starting, the package needs to be configured with your account's application ID and Key, which can be found in the TravelTime Developer Portal Dashboard. To create an instance - you will need to create new TravelTimeClient class object with credentials you got from dashboard.
import { TravelTimeClient } from 'traveltime-api';
const travelTimeClient = new TravelTimeClient({
apiKey: 'YOUR_APP_KEY',
applicationId: 'YOUR_APP_ID',
});
travelTimeClient.timeFilterFast({
"locations": [
{
"id": "User Home",
"coords": {
"lat": 54.2389,
"lng": -0.3975
}
},
{
"id": "Job 1",
"coords": {
"lat": 54.2442,
"lng": -0.4075
}
},
{
"id": "Job 2",
"coords": {
"lat": 54.2483,
"lng": -0.4349
}
},
{
"id": "Job 3",
"coords": {
"lat": 53.9923,
"lng": -0.3134
}
},
.
.
.
{
"id": "Job 100,000",
"coords": {
"lat": 53.9923,
"lng": -0.4134
}
}
],
"arrival_searches": {
"one_to_many": [
{
"id": "Commute Search",
"departure_location_id": "User Home",
"arrival_location_ids": [
"Job 1",
"Job 2",
"Job 3",
.
.
.
"Job 100,000"
],
"transportation": {
"type": "public_transport"
},
"travel_time": 10800,
"arrival_time_period": "weekday_morning",
"properties": [
"travel_time"
]
}
]
}
}).then((data) => console.log(data))
.catch((e) => console.error(e));
Install Travel Time Python SDK in a virtualenv
using pip
. virtualenv
is a tool to create isolated Python environments.
virtualenv
allows to install Travel Time Python SDK without needing system install permissions, and without clashing with the installed system dependencies.
pip3 install virtualenv
virtualenv <your-env>
source <your-env>/bin/activate
<your-env>/bin/pip install traveltimepy
pip install virtualenv
virtualenv <your-env>
<your-env>\Scripts\activate
<your-env>\Scripts\pip.exe install traveltimepy
In order to authenticate with Travel Time API, you will have to supply the Application Id and Api Key.
- app_id: str - Application Id
- api_key: str - Api Key
- limit_per_host: int - Number of simultaneous connections to one host.
- rate_limit: int - Number of searches which can be made in a time window.
- time_window: int - Duration, in seconds, of the time period in which to limit the rate.
- retry_attempts: int - Number of retries for failed requests.
- host: str - TravelTime host, default value is api.traveltimeapp.com.
- timeout: int - Maximum session time until timeout. Default value is 300 (5 minutes).
from traveltimepy import TravelTimeSdk
sdk = TravelTimeSdk(app_id="YOUR_APP_ID", api_key="YOUR_APP_KEY")
import asyncio
from traveltimepy import Location, Coordinates, Transportation, TravelTimeSdk
async def main():
sdk = TravelTimeSdk("YOUR_APP_ID", "YOUR_APP_KEY")
locations = [
Location(id="User Home", coords=Coordinates(lat=54.2389, lng=-0.3975)),
Location(id="Job 1", coords=Coordinates(lat=54.2442, lng=-0.4075)),
Location(id="Job 2", coords=Coordinates(lat=54.2483, lng=-0.4349)),
Location(id="Job 3", coords=Coordinates(lat=53.9923, lng=-0.3134)),
.
.
.
Location(id="Job 100,000", coords=Coordinates(lat=53.9923, lng=-0.4134))
]
results = await sdk.time_filter_fast_async(
locations=locations,
search_ids={
"User Home": [
"Job 1",
"Job 2",
.
.
.
"Job 100,000"
],
},
transportation=Transportation(type="public_transport"),
travel_time=10800,
one_to_many=True
)
print(results)
asyncio.run(main())
What is the performance like?
The Travel Time Matrix Fast endpoint can calculate 100,000 travel times in under 150ms.
How accurate is your data?
How reliable is the service?
Where do you have coverage?
How much will this cost?
We never charge based on usage. Instead we offer unlimited usage licences for a fixed monthly fee. The only thing you need to decide is the maximum Requests Per Minute (RPM) you need.