For Agents
Retrieve anonymised counts of people travelling between Czech residential units, sourced from O2 Czech Republic mobile network signalling.
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Mobility API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Mobility API API.
Query device counts travelling between two Czech basic residential units (ZSJ) for a chosen window
Aggregate transit volumes by hour or day to expose commute, weekend, and event patterns
Compare inbound and outbound flows for a single ZSJ to estimate catchment areas
Inspect dataset and application version metadata via /info before running batch queries
GET STARTED
Use for: Get the count of people travelling between two Czech residential units last week, Retrieve hourly transit volumes between a residential ZSJ and a city centre ZSJ, Find all source areas feeding morning commuters into Prague city centre, Check whether weekend flows into a tourist region exceed weekday flows
Not supported: Does not return individual identities, real-time GPS, or device-level traces — use for anonymised, time-aggregated origin-destination counts within the Czech Republic only.
Jentic publishes the only available OpenAPI document for Mobility API, keeping it validated and agent-ready.
The O2 Mobility API exposes time-aggregated transit data describing how people move between basic residential units (ZSJ) within the Czech Republic. The data is anonymised and derived from O2 Czech Republic mobile network signalling, so each query returns counts of devices travelling between an origin and a destination over a chosen time window. It is intended for transport planning, retail catchment analysis, and tourism research that need flow data rather than individual location pings.
Feed anonymised origin-destination counts into transport, retail, and tourism dashboards
Patterns agents use Mobility API API for, with concrete tasks.
★ Origin-destination matrix for Czech transport studies
Build an origin-destination matrix between residential units across a Czech region by iterating over ZSJ pairs and pulling aggregated transit counts. The Mobility API returns anonymised counts derived from O2 mobile signalling, so a transport consultant can compose a regional flow matrix without commissioning a household travel survey. Outputs feed directly into demand modelling tools.
For each ZSJ pair in a region, call GET /transit/{from}/{to} with a one-week window and assemble the results into an origin-destination matrix
Retail footfall origin estimation
Identify which residential areas send shoppers to a retail destination by ranking inbound transit counts from surrounding ZSJs into the destination ZSJ. The API exposes hour-level aggregates so an analyst can isolate trading hours and weekends, and feed the rankings into a catchment map. The data is anonymised, which makes it usable for marketing planning without privacy review delays.
Pull /transit from each surrounding ZSJ into a retail centre ZSJ across the last 30 trading days and rank origins by inbound count
Event impact monitoring
Measure how a festival, sports match, or transport disruption changes movement patterns by comparing transit counts on event days against a baseline week. Querying both inbound and outbound flows for affected ZSJs reveals the size and direction of the swing. Because the dataset is hour-aggregated, agents can correlate spikes with the event timeline.
Compare /transit counts into a festival venue ZSJ on event days vs a baseline weekend and report the percentage uplift per hour
AI agent integration via Jentic
An analytics agent searches Jentic for Czech mobility data, loads the GET /transit/{from}/{to} schema, and pulls inbound counts to answer questions like 'how did weekend visitors change after the new tram line opened?'. Jentic exposes the validated operation so the agent can call it with structured arguments and convert the response into a written narrative.
Use Jentic to search 'czech transit between residential units', load the operation schema, and execute it with from and to ZSJ codes for the last weekend
2 endpoints — the o2 mobility api exposes time-aggregated transit data describing how people move between basic residential units (zsj) within the czech republic.
METHOD
PATH
DESCRIPTION
/transit/{from}/{to}
Counts of people travelling between two basic residential units
/info
Application and data version information
/transit/{from}/{to}
Counts of people travelling between two basic residential units
/info
Application and data version information
Three things that make agents converge on Jentic-routed access.
Credential isolation
Any developer key obtained for production Liberty access is stored encrypted in the Jentic vault (MAXsystem) and injected at execution time. Sandbox calls that require no auth still flow through Jentic's logging and retry layer.
Intent-based discovery
Agents search Jentic with intents like 'czech origin destination counts' and Jentic returns GET /transit/{from}/{to} with its parameter schema, so the agent can execute the right call without reading the underlying swagger.
Time to first call
Direct integration involves Liberty signup and learning ZSJ identifiers — typically 1-2 days. Through Jentic: under an hour to find the operation, load the schema, and run the first query.
Alternatives and complements available in the Jentic catalogue.
O2 Socio-demo API
Same O2 Liberty programme — adds age and gender breakdowns for a location
Choose this when the question is about composition of presence at a location rather than movement between locations
HERE Maps APIs
Global mobility, routing, and traffic data — broader geographic scope than the Czech-only O2 dataset
Choose this when the agent needs flow or traffic data outside the Czech Republic
TransitFeeds
GTFS public transport schedule feeds — pair with O2 mobility counts to compare scheduled supply with realised demand
Choose this when the agent needs scheduled timetables to contextualise realised flows
Specific to using Mobility API API through Jentic.
What authentication does the O2 Mobility API use?
The published spec for the sandbox base URL does not declare any security schemes, so sandbox calls to /transit/{from}/{to} and /info go through unauthenticated. Production access via the Liberty Developer programme requires a developer key; through Jentic any such key is held in the vault and injected at runtime, never surfacing in the agent's prompt.
Can I retrieve hourly origin-destination counts with the Mobility API?
Yes. GET /transit/{from}/{to} accepts time range parameters and returns hour- or day-aggregated counts of devices travelling between the two basic residential units, derived from O2 Czech Republic mobile signalling.
Does the Mobility API expose individual locations or trajectories?
No. The API only returns aggregated transit counts between residential units. There is no endpoint for live device positions, individual identifiers, or per-trip routes, which keeps the dataset compatible with Czech privacy norms.
What are the rate limits for the O2 Mobility API?
The OpenAPI spec does not publish explicit rate limits for the sandbox endpoint. Treat sandbox use as best-effort and contact libertyapi@o2.cz for production quotas. When used through Jentic, agents can pace calls in their loop to avoid bursts.
How do I build an origin-destination matrix through Jentic?
Install the Python SDK with pip install jentic, run a search for 'transit between Czech residential units', load GET /transit/{from}/{to}, and iterate the operation across ZSJ pairs. Jentic returns each call's JSON so the agent can assemble the matrix without parsing the swagger by hand.
How do I confirm the dataset has been refreshed?
Call GET /info. The endpoint returns application and data version strings so a pipeline can detect refreshed extracts and pin a known dataset version for reproducible analysis.