Web Analytics
Query privacy-first website traffic metrics, timeseries, and page, source, location, device, and journey breakdowns through the REST API.
Query privacy-first website traffic reports for an inclusive calendar-day range. Scope results to one web source or aggregate across the account, and use the JSON-encoded filters query parameter to narrow reports by supported dimensions.
GET/rest/v1/web-analytics/overview
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Inclusive lower bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateInclusive upper bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateOptional web source UUID. Omit to aggregate all web sources in the account.
uuidExclude detected bot sessions. Defaults to true.
Optional JSON-encoded array of up to 20 filters. Dimensions: page, entry_page, exit_page, source, medium, campaign, content, term, referrer, country, region, city, device, browser, os. Each filter has a dimension, optional operator (IS, IS_NOT, CONTAINS, NOT_CONTAINS; defaults to IS), and one or more values. Example: [{"dimension":"country","values":["United States"]}].
Timeseries bucket interval. Minute queries are capped to the most recent 24 hours.
Value in
- "minute"
- "day"
- "week"
- "month"
Value in
- "unique_visitors"
- "total_visits"
- "pageviews"
- "views_per_visit"
- "bounce_rate"
- "visit_duration"
Optional ISO timestamp used as the lower bound for realtime queries.
date-timeResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/web-analytics/overview?from=2026-07-01&to=2026-07-31&interval=minute&metric=unique_visitors"{ "metrics": { "uniqueVisitors": 0, "totalVisits": 0, "pageviews": 0, "viewsPerVisit": 0, "bounceRate": 0, "visitDuration": 0 }, "timeseries": [ { "date": "string", "value": 0 } ], "dataUpdatedAt": "string"}GET/rest/v1/web-analytics/sources
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Inclusive lower bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateInclusive upper bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateOptional web source UUID. Omit to aggregate all web sources in the account.
uuidExclude detected bot sessions. Defaults to true.
Optional JSON-encoded array of up to 20 filters. Dimensions: page, entry_page, exit_page, source, medium, campaign, content, term, referrer, country, region, city, device, browser, os. Each filter has a dimension, optional operator (IS, IS_NOT, CONTAINS, NOT_CONTAINS; defaults to IS), and one or more values. Example: [{"dimension":"country","values":["United States"]}].
Value in
- "referrer"
- "campaign"
- "source"
- "medium"
- "content"
- "term"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/web-analytics/sources?from=2026-07-01&to=2026-07-31&dimension=referrer"{ "rows": [ { "name": "string", "visitors": 0 } ], "totalCount": 0, "dataUpdatedAt": "string"}GET/rest/v1/web-analytics/pages
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Inclusive lower bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateInclusive upper bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateOptional web source UUID. Omit to aggregate all web sources in the account.
uuidExclude detected bot sessions. Defaults to true.
Optional JSON-encoded array of up to 20 filters. Dimensions: page, entry_page, exit_page, source, medium, campaign, content, term, referrer, country, region, city, device, browser, os. Each filter has a dimension, optional operator (IS, IS_NOT, CONTAINS, NOT_CONTAINS; defaults to IS), and one or more values. Example: [{"dimension":"country","values":["United States"]}].
Value in
- "top"
- "entry"
- "exit"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/web-analytics/pages?from=2026-07-01&to=2026-07-31&view=top"{ "rows": [ { "pageHostname": "string", "pagePath": "string", "pageviews": 0, "bounceRate": 0, "timeOnPage": 0, "entries": 0, "visitors": 0, "exits": 0, "exitRate": 0 } ], "totalCount": 0, "dataUpdatedAt": "string"}GET/rest/v1/web-analytics/locations
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Inclusive lower bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateInclusive upper bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateOptional web source UUID. Omit to aggregate all web sources in the account.
uuidExclude detected bot sessions. Defaults to true.
Optional JSON-encoded array of up to 20 filters. Dimensions: page, entry_page, exit_page, source, medium, campaign, content, term, referrer, country, region, city, device, browser, os. Each filter has a dimension, optional operator (IS, IS_NOT, CONTAINS, NOT_CONTAINS; defaults to IS), and one or more values. Example: [{"dimension":"country","values":["United States"]}].
Value in
- "country"
- "region"
- "city"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/web-analytics/locations?from=2026-07-01&to=2026-07-31&dimension=country"{ "rows": [ { "name": "string", "code": "string", "visitors": 0 } ], "totalCount": 0, "dataUpdatedAt": "string"}GET/rest/v1/web-analytics/devices
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Inclusive lower bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateInclusive upper bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateOptional web source UUID. Omit to aggregate all web sources in the account.
uuidExclude detected bot sessions. Defaults to true.
Optional JSON-encoded array of up to 20 filters. Dimensions: page, entry_page, exit_page, source, medium, campaign, content, term, referrer, country, region, city, device, browser, os. Each filter has a dimension, optional operator (IS, IS_NOT, CONTAINS, NOT_CONTAINS; defaults to IS), and one or more values. Example: [{"dimension":"country","values":["United States"]}].
Value in
- "device"
- "browser"
- "os"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/web-analytics/devices?from=2026-07-01&to=2026-07-31&dimension=device"{ "rows": [ { "name": "string", "visitors": 0 } ], "totalCount": 0, "dataUpdatedAt": "string"}GET/rest/v1/web-analytics/current-visitors
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Optional web source UUID. Omit to count visitors across all account web sources.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/web-analytics/current-visitors"{ "count": 0}GET/rest/v1/web-analytics/path-explorer
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Inclusive lower bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateInclusive upper bound of the analysis window as YYYY-MM-DD.
^\d{4}-\d{2}-\d{2}$dateOptional web source UUID. Omit to aggregate all web sources in the account.
uuidExclude detected bot sessions. Defaults to true.
Optional JSON-encoded array of up to 20 cohort filters. Supports web analytics dimensions plus event_name, ep_currency, ep_appointment_id, ep_appointment_status, ep_service_line, ep_provider_id, ep_location_id, ep_booking_channel, ep_revenue_type, ep_call_outcome, and ep_staff_id. Each filter has a dimension, optional operator (IS, IS_NOT, CONTAINS, NOT_CONTAINS; defaults to IS), and one or more values.
JSON-encoded ordered path of opaque path explorer step keys. Use an empty array to request first-column candidates.
Value in
- "forward"
- "reverse"
Value in
- "PAGE"
- "EVENT"
length <= 2001 <= value <= 1000Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/web-analytics/path-explorer?from=2026-07-01&to=2026-07-31&path=string"{ "anchorSessions": 0, "steps": [ { "key": "string", "kind": "PAGE", "label": "string", "isTerminal": true, "isOther": true, "sessions": 0 } ], "hasMore": true}GET/rest/v1/analytics/query-catalog
Authorization
apiKey Ours Privacy API key
In: header
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/analytics/query-catalog"{ "version": 1, "entries": [ { "id": "string", "label": "string", "type": "string", "operators": [ "string" ], "scope": "string", "provider": "string", "missingBehavior": "string", "requiresPath": true, "allowedTypes": [ "string" ] } ], "limitations": [ "string" ]}GET/rest/v1/analytics/property-suggestions
Authorization
apiKey Ours Privacy API key
In: header
Query Parameters
Optional exact event name to scope the suggestions.
1 <= length <= 1000Optional exact source identifier to scope the suggestions.
1 <= length <= 200Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/rest/v1/analytics/property-suggestions"{ "entities": [ { "property": "event.properties", "path": [ "string" ], "type": "string" } ], "sampled": true, "from": "2019-08-24T14:15:22Z", "to": "2019-08-24T14:15:22Z"}How is this guide?

