Intermediate Traffic Service API - FAQ

Last edit: 2023.04.30

Frequently Asked Questions

How big are the feeds?

The sizes of the incident feed and flow feeds differ by country.

The following table shows sizes of gzip compressed snapshots of our feeds, based on the country and feed type. Detailed flow feeds show the measurement for non-free-flow (nff) and free-flow (ff). The 50th (p50) and 95th (p95) percentiles are given, better reflecting daytime variations. The values are rounded up to multiples of 100 kilobytes to compensate for seasonable effects. The feed sizes for the detailed flow feed also take into account predictive flow.

This data is from June 2020 (during the COVID-19 pandemic).

Country

Incidents Datex2
p50
[kB]

Incidents Datex2
p95
[kB]

Flow Protobuf (detailed)
nff, p50
[kB]

Flow Protobuf (detailed)
nff, p95
[kB]

Flow Protobuf (detailed)
ff
[kB]

AND100100100100100
ARE100100100100400
ARG1001001002002500
AUS4004003007005600
AUT2002001002003000
BEL3003002004001700
BGR1001002003001900
BHR100100100100100
BIH100100100100300
BLR1001001002001900
BRA1001003008007100
BRN100100100100100
CAN2002003005003400
CHE3003002003002000
CHL1001001001001300
COL100100100100800
CZE2002002003003300
DEU100011001400200019100
DNK100100100200900
EGY1001001002001800
ESP20020040060011300
EST100100100100600
FIN2002001002002800
FRA300300800170018200
GBR7007002006003100
GIB100100100100100
GRC1001002002003300
HKG100100100100100
HRV1001001001001400
HUN2002002002001700
IDN1001002004001500
IND100100600120011400
IRL1001001002001100
ISL100100100100200
ISR100100100200600
ITA300300600120010600
JPN100200130027006100
KAZ100100100100500
KEN100100100100400
KWT100100100100200
LIE100100100100100
LSO100100100100100
LTU100100100100600
LUX100100100100300
LVA100100100100400
MAC100100100100100
MAR100100100100900
MCO100100100100100
MEX1002005007007900
MLT100100100100100
MOZ100100100100300
MYS1001001002001300
NGA1001001002001000
NLD2002002003001900
NOR2002001002002200
NZL100100100200600
OMN100100100100200
PER100100100100900
PHL100100200300700
POL2002003005006200
PRT1001001002003400
QAT100100100100200
ROU1001002003002000
RUS30040060010004200
SAU1001001001001000
SGP100100100100200
SMR100100100100100
SRB100100100200600
SVK1001001002001200
SVN1001001001001200
SWE2002001002002700
THA1001003005003000
TUR2003005007008900
TWN1001003004001200
UKR1001002003004300
URY100100100100300
USA (middle)6007001000160011600
USA (north)60070070012009000
USA (south east)40040070013008700
USA (south west)30040090015009100
VAT100100100100100
VNM1001001002001100
ZAF1002002004003400

I have access to multiple incident and / or flow feeds. How many feeds can be downloaded and processed in parallel?

There is no ideal setup for downloading and processing the feeds as there are many parameters that can have an influence on the overall performance. The following are just a few parameters (there may be more):

  • The bandwidth of the internet connection from your servers to your internet service provider (ISP).
  • The potential limitation of network bandwidth between your ISP and TomTom.
  • The latency between your system and TomTom servers deployed in (Western) Europe.
  • The performance of your system in ingesting and processing the retrieved data.

Due to these limitations we can make the following general recommendations:

  • It may be advisable to download and process only a few feeds in parallel, or to download the individual feeds with a certain time delay.

  • Your client should support TCP window scaling. With this option, we can send more data to your client before an acknowledgement comes back from your client. This improves throughput, especially in low latency connections. Latency is determined with tools like PsPing (https://docs.microsoft.com/en-us/sysinternals/downloads/pstools). To test latency between your servers and traffic.tomtom.com, use the following command:

    psping traffic.tomtom.com:443

    Further examples of how to use PsPing are found on the download page. While this tool is only available for Windows, there are alternatives for other operating systems here: https://alternativeto.net/software/psping. Since ICMP is not supported by our service, the usual ping command will not work.

  • Always use gzip compression by specifying the standard HTTP header Accept-Encoding: gzip.

  • Always use the If-Modified-Since header with the time stamp of the Last-Modified header for the last snapshot received in the same feed. This eliminates the possibility of downloading data that you already have.

  • Use free-flow (ff) / non-free-flow (nff) update mechanism for all flow feeds. This significantly reduces the total bandwidth consumption when compared with full-feed downloads. The same information is retrieved!

Do the feeds contain specific events on road regulations due to COVID-19?

As movement restrictions are lifted after the COVID-19 lockdown, various local, regional, and national authorities introduce various measures that impact road regulations. Even if these impacts are only on a temporary basis, they can affect traffic in a significant way by creating closures due to change of permitted road use, restricting road access to local residents only, introducing new bike lanes, or reduced speed limits.

TomTom strives to provide up-to-date information about these dynamically changing road conditions through the TomTom Traffic Incidents – Intermediate Service API. During the unprecedented COVID-19 situation, TomTom is working together with our partners and authorities to ensure high-quality, reliable information.

TomTom delivers the following event types related to the COVID-19 pandemic.

EventAlert-C event codes
Closed to all traffic.401
Closed to through traffic.493 + 1854

Closed based on other restrictions/conditions (i.e., the purpose of travel in case of border closures).

493

Reduced amount and/or width of lanes lane layout (i.e., when increasing space for bikes and pedestrians).

518

Any event in any country related to COVID-19 contains at least "COVID-19" in the comment field. The text may also contain further information.

Where is the Intermediate Traffic Service hosted?

This service is hosted on Microsoft Azure. Since Microsoft Azure hosts services in the public cloud, the IPs are non-static. One result is that the IPs can change at any time. For this reason, filters restricting outbound connection to our service will not work. You must rely on the host name for determining the IP address of this service.

What is the difference between Flow DatexII, Flow – Protobuf and Flow Detailed Protobuf?

The following tables lists all flow features and their availability depending on the product type ( Flow, Flow Detailed) and output format (DATEX II, Protobuf).

Individual FeatureDescriptionFlow - DATEX IIFlow - ProtobufFlow Detailed - ProtobufFlow Detailed Legacy - Protobuf
High road coverage

Feed covers road segments with high functional road classes and also many road segments with low functional road classes.

NoNoYesYes
Traffic Condition

Provides a textual traffic condition indicator (e.g., 'stationary traffic' or ‘slow traffic’).

YesYesYesYes
Heavy traffic

Adds support for the traffic condition “heavy traffic”. This feature only works in combination with the Traffic Condition feature.

YesYesYesYes
Relative Speed

Provides an additional percentage value of the current speed compared to free flow.

YesYesYesYes
Miles per hourMph is reported in addition to the speeds reported in kph.YesYesYesYes
Time to usual

Provides time in minutes for the speed to return to usual speed (Speed Profile).

NoYesYesYes
HOV lanes

Adds separate speed entries for lanes reserved for high-occupancy vehicles.

NoYesYesYes
Predictive Flow (15, 30, 45 minutes)

Provides predictive speeds for 15, 30, and 45 minutes in the future.

NoYesYesNo
Predictive Flow (24h)Provides predictive speeds for up to 24 hours in the future.NoYesNoNo
Dynamic sectioning

Allows sectioning which describes the road links in smaller sections when conditions vary considerably within a longer stretch. In case of prediction, sectioning is supported only for 15, 30, 45 minutes.

NoYesYesNo
Map versionProvides the map version being used.YesYesYesYes
TMCTMC location codes.YesYesYesNo
OpenLROpenLR binary strings.YesYesYesYes
TMC + OpenLR

OpenLR binary strings and TMC location where available in one feed. Requires that both referencing methods are supported in the requested country(s).

YesYesYesNo

What speeds are contained in the non free flow (nff) feeds?

The Intermediate Flow feed has the concept of a free flow (ff) feed and a non-free flow (nff) feed, as explained in the documentation (TomTom Traffic Flow - Intermediate Service - Protobuf). The nff-feed consists of the flow feed segments which contain a traffic delay. The threshold for the nff-feed is per default set at 90% of the free flow speed, so all segments between 90-100% free flow speed are not reported in the nff-feed.

However, TomTom offers the configuration option to increase or decrease the threshold of the nff-feed. A low threshold (e.g., 70%) will heavily reduce the feed size of the nff-feed, which might be desirable if there are bandwidth constraints for the customer receiving the feed. A high threshold (e.g., 99%) will allow that more live data is send through the nff-feed but will also increase the feed size. The filtering is explained by the following graph:

What are the use cases to have both TMC and OpenLR in the same Flow (Detailed) feed?

The possibility to have have TMC and OpenLR in a single flow feed facilitates different use cases on the client side. Clients that are operating a hosted traffic service can serve TMC-only, OpenLR-only, or TMC-or-OpenLR (hybrid approach) devices from a single B2B feed. The vast majority of all TMC links can also be represented as OpenLR location reference.

However, in some cases the encoding is not possible. For that reason clients that intend to use the hybrid approach need to ignore all flow messages with only TMC information. These stretches are covered by other flow messages with only OpenLR location information. The following table outlines the rules by device requirement that need to be applied to cover all necessary flow segments.

Use caseFiltering
TMC-only
OpenLR-only / TMC or OpenLR (hybrid)

What are the definitions of the different traffic condition values in the Flow feed?

The traffic condition indicates the traffic status according to the relative speed of the location. It is aligned with the traffic jams reported in the corresponding Incident feed. When the relative speed of an entire flow segment or a flow section is below 90% and there is no traffic jam reported in the Incident feed, the "heavy traffic" traffic condition is used to indicate a slight reduction in traffic flow.

Traffic conditionRelative speed range
free traffic90% - 100%
heavy traffic62.5% - 90%
slow traffic35% - 62.5%
queuing traffic25% - 35%
stationary traffic0% - 25%

There are three other traffic conditions defined in our schemas:

  • "closed" means that you cannot pass the road segment,
  • "long queues traffic" is not used and
  • "unknown" indicates that a traffic condition is not provided.

How does one go about identifying all roads that are currently closed, using the Incident Feed?

Customers shall only rely on the NetworkManagementTypeEnum value roadClosed to identify closures.

I use detailed Flow (Dynamic Sectioning) and I want to enable the 15/30/45 minute prediction. How will enabling prediction affect the flowType setting?

Enabling prediction doesn't affect the flowType (ff/nff) mechanism. The only effect is that all the messages will be enriched with prediction info, including the free-flow messages.

How, exactly, do I access TomTom's Intermediate Traffic Feed?

The Intermediate Traffic Service is an API. The TomTom Intermediate Traffic feed can be accessed using any interface that supports REST HTTP GET communication, depending upon one's development or application requirements:

  • For an initial check of the data and to test access to the feeds, tools such as Postman or the command line tool CURL can be used. Since our default authentication mechanism requires a valid client certificate, feed access with a web browser may not work.
  • For productive use, a programmatic setup should be used for sending these GET requests and receiving the responses. Typical modern general-purpose programming languages provide HTTP client libraries to accomplish this, including, but not limited to Python, Java, or C++.

If you intend to retrieve the data at a high frequency (for example, every minute), we recommend using the standard HTTP header If-Modified-Since with the value of HTTP header Last-Modified of the last response received. When this header is used properly, you avoid unnecessarily downloading identical content. The use of additional recommended HTTP headers is explained on the individual pages of the product documentation.