- Send workers smarter notifications for upcoming shifts
- Help workers to arrive on time and reduce late arrivals and no-shows
- Improve the worker UX
Reduced poor matches by 18%
Increased quality connection rate by 12%
Reduced late withdrawals by 3x

Grisha Ghukasyan
VP of Engineering at Brigad
“In order to improve our financial benefits, we had to improve the connection rate...all the missions that we don't connect are lost - and we don't make any money on it.
Until we started working with TravelTime, all we showed was kilometres and straight-line distance, and it was making people leave the app.”
Request type | POST |
Host | api.traveltimeapp.com |
Endpoint | /v4/time-filter |
Authentication | Application-Id Api-Key |
{
"locations": [
{
"id": "Shift Location",
"coords": {
"lat": 54.2389,
"lng": -0.3975
}
},
{
"id": "Worker Home Location",
"coords": {
"lat": 54.2442,
"lng": -0.4075
}
}
],
"arrival_searches": [
{
"id": "Shift Notification",
"arrival_location_id": "Shift Location",
"departure_location_ids": [
"Worker Home Location"
],
"arrival_time": "2024-10-01T19:00:00",
"travel_time": 14400,
"transportation": {
"type": "public_transport"
},
"properties": [
"travel_time",
"route"
]
}
]
}
locations - an array containing the IDs and lat-long coordinates of the worker's home location and the shift location
arrival_searches - travel times are calculated departing from the matched workers' home locations, travelling to the shift location
arrival_time - the desired arrival time at the shift, taking into account the shift start time
travel_time - this is a mandatory field that sets the maximum travel time, but in this case we can just set it as the maximum supported value (4 hours), as the route will always be less than this
transportation - the preferred transport mode selected by the worker on their profile
properties - the data point(s) to be calculated for each listing - here we include travel_time to return the total journey time, and route to return the turn-by-turn directions
{
"results": [
{
"search_id": "Shift Notification",
"locations": [
{
"id": "Worker Home Location",
"properties": [
{
"travel_time": 849,
"route": {
"departure_time": "2024-10-01T19:45:51+01:00",
"arrival_time": "2024-10-01T20:00:00+01:00",
"parts": [
{
"id": 0,
"type": "start_end",
"mode": "walk",
"directions": "Start your journey 3 meters west",
"distance": 3,
"travel_time": 2,
"coords": [
{
"lat": 54.2442,
"lng": -0.4075
},
{
"lat": 54.24419420000009,
"lng": -0.4075458000000025
}
],
"direction": "west"
},
{
"id": 1,
"type": "road",
"mode": "walk",
"directions": "Walk 42 meters along Plough Lane",
"distance": 42,
"travel_time": 30,
"coords": [
{
"lat": 54.24419420000009,
"lng": -0.4075458000000025
},
{
"lat": 54.24381080000001,
"lng": -0.4075534000000035
}
],
"road": "Plough Lane"
}
travel_time - The total commute time
parts - The turn-by-turn directions
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.timeFilter({
"locations": [
{
"id": "Shift Location",
"coords": {
"lat": 54.2389,
"lng": -0.3975
}
},
{
"id": "Worker Home Location",
"coords": {
"lat": 54.2442,
"lng": -0.4075
}
}
],
"arrival_searches": [
{
"id": "Shift Notification",
"arrival_location_id": "Shift Location",
"departure_location_ids": [
"Worker Home Location"
],
"arrival_time": "2024-10-01T19:00:00",
"travel_time": 14400,
"transportation": {
"type": "public_transport"
},
"properties": [
"travel_time",
"route"
]
}
]
}).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, PublicTransport, Property, TravelTimeSdk
async def main():
sdk = TravelTimeSdk("YOUR_APP_ID", "YOUR_APP_KEY")
locations = [
Location(id="Shift Location", coords=Coordinates(lat=54.2389, lng=-0.3975)),
Location(id="Worker Home Location", coords=Coordinates(lat=54.2442, lng=-0.4075)),
]
results = await sdk.time_filter_async(
locations=locations,
search_ids={
"Worker Home Location": [
"Shift Location",
],
},
arrival_time="2024-10-01T19:00:00",
travel_time=14400,
transportation=PublicTransport(),
properties=[Property.TRAVEL_TIME, Property.ROUTE],
)
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.