canonical: https://jentic.com/apis/o2.cz/o2-socio-demo-api

# O2 Cz Socio-demo API

The O2 Socio-demo API exposes hour-aggregated counts of people present at a Czech location, broken down by age band or gender. The data is anonymised and derived from O2 Czech Republic mobile network signalling, so each query returns a profile of visitor composition rather than individual identifiers. It supports retail siting, public sector planning, and tourism analytics where the question is who is present at a place during a given time window.

## For AI agents

Retrieve anonymised hour-aggregated counts of people present at a Czech location, split by age or gender, derived from O2 mobile network data.

## Scope

Does not return individual identities, GPS traces, or income or ethnicity data - use for anonymised, time-aggregated age and gender presence at Czech locations only.

## Capabilities

- Pull hour-aggregated counts of people at a Czech location split by age band
- Pull hour-aggregated counts of people at a Czech location split by gender
- Compare daytime versus evening visitor composition at a single location
- Inspect dataset and application version metadata via /info before running batch queries
- Feed anonymised demographic presence data into siting, planning, and tourism dashboards

## Use cases

### Retail location demographic profiling

Profile the visitors to a Czech retail site by querying age and gender presence at the destination ZSJ across trading hours. The Socio-demo API returns anonymised, hour-aggregated counts derived from O2 mobile signalling, so a marketing analyst can compare two candidate sites on demographic fit without primary research. A short batch of calls is enough to build a weekday-vs-weekend profile.

Example prompt: Pull GET `/age/{location}` and GET `/gender/{location}` for a retail ZSJ across the last 14 trading days and summarise the dominant age and gender bands per hour

### Tourism audience composition

Understand who visits a tourist destination by retrieving hour-aggregated age and gender counts at the destination ZSJ. Tourism boards can use the data to differentiate weekday domestic visitors from weekend leisure visitors and tune marketing accordingly. Because the data is anonymised, the dashboard can be published without re-identification risk.

Example prompt: Aggregate /age and /gender results for a tourist destination ZSJ across summer weekends and report the top age band per hour

### Event audience analysis

Estimate the audience composition of a festival, match, or event by querying age and gender presence at the venue ZSJ across the event window and a baseline period. The hour-level granularity reveals when audiences arrive and leave, and how composition shifts across the day. Outputs feed sponsor reporting and post-event reviews.

Example prompt: Compare /age and /gender at a venue ZSJ during an event window vs a baseline weekend and report uplift by age band

### AI agent integration via Jentic

An analytics agent searches Jentic for Czech location demographics, loads the /age and /gender operations, and answers questions like 'what is the typical age mix at this shopping centre on Saturday afternoons?'. Jentic returns validated operation schemas so the agent can call them with location identifiers and translate the response into a written summary for a brief.

Example prompt: Use Jentic to search 'czech location age and gender presence', load both operations, and execute them with the destination ZSJ for the last weekend

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/age/{location}` | Presence at a location aggregated by age band |
| GET | `/gender/{location}` | Presence at a location aggregated by gender |
| GET | `/info` | Application and data version information |

## Key resources

- **Age** — Hour-aggregated counts of people present at a location by age band
- **Gender** — Hour-aggregated counts of people present at a location by gender
- **Info** — Application and data version metadata

## Why Jentic

- **Setup:** Wiring the O2 Socio-demo API by hand means pointing at the developer.o2.cz sandbox host, handling any production-access step separately, and coding your own retry and rate-limit handling. Through Jentic you install once, import the Socio-demo API from the API Directory, store any production key once, and your agent calls it.
- **Permission scoping:** This API returns anonymised, time-aggregated age and gender presence at locations through read-only GETs, so scope it by operation: limit the agent to the age, gender, and info operations it needs and nothing else. You choose which operations it may call, so no other behaviour runs unless you add it.
- **Credential handling:** Any production access key is stored once, encrypted, by your own Jentic One instance and injected at execution time, so the agent never sees the raw key. Sandbox calls that need no auth still flow through Jentic's logging and retry layer.
- **Discovery method:** Agents search Jentic by intent such as 'age and gender at a Czech location', and Jentic returns the /age and /gender operations with their input schemas so the agent calls the right endpoint without reading the underlying spec.

## Related APIs

- **O2 Mobility API** — Same O2 Liberty programme - adds origin-destination flow counts between residential units
- **HERE Maps APIs** — Global location intelligence - broader geography but without anonymised mobile-derived demographic profiles
- **Google Analytics Data API** — Web and app behaviour analytics rather than physical location presence - different signal source

## FAQ

### What authentication does the O2 Socio-demo API use?

The published spec declares no security schemes for the sandbox base URL, so sandbox calls to `/age/{location}`, `/gender/{location}`, and /info are unauthenticated. Production Liberty programme access requires a developer key; through Jentic any key is held in the vault and injected at execution time, never appearing in the agent's prompt.

### Can I get age and gender breakdowns for a Czech location with the Socio-demo API?

Yes. GET `/age/{location}` returns hour-aggregated counts split by age band and GET `/gender/{location}` returns hour-aggregated counts split by gender for the requested ZSJ. The values are derived from O2 Czech Republic mobile signalling, scaled to population.

### Does the Socio-demo API expose individual user demographics?

No. The API only returns aggregated counts at hour resolution. There are no endpoints that link demographics to individuals, devices, or trajectories, which keeps the dataset within Czech privacy expectations.

### What are the rate limits for the O2 Socio-demo API?

The OpenAPI spec does not publish explicit rate limits for the sandbox endpoint. Treat sandbox calls as best-effort and contact libertyapi@o2.cz for production quotas. Through Jentic, the agent loop can pace calls so demographic and gender queries do not burst.

### How do I pull a demographic profile for a Czech location through Jentic?

Install the SDK with pip install jentic, search 'czech location age and gender presence', load both GET `/age/{location}` and GET `/gender/{location}`, and execute them for the chosen ZSJ. Jentic returns the JSON so the agent can produce a per-hour profile without reading the swagger.

### How do I check that the Socio-demo dataset has been updated?

Call GET /info. It returns the application and data version strings, so a pipeline can detect when a refreshed extract is available and pin a version for reproducible analysis.

### Can I limit what my agent is allowed to do with the O2 Socio-demo API?

Yes. Because you run Jentic One yourself, your own rules decide which operations the agent may call, and this API only exposes three read-only GETs: age presence, gender presence, and dataset info. You can allow the agent just the `/age/{location}` and `/gender/{location}` operations it needs and withhold the rest, so no other behaviour runs unless you add it. Any production access key is held by your own instance and injected at call time, so the agent never sees the raw credential.
