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.
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"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}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"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}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"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}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"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}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"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}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}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}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 journey 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 journey step keys. Use an empty array to request first-column candidates.
Value in
- "forward"
- "reverse"
Value in
- "PAGE"
- "EVENT"
length <= 5001 <= 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/journey?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}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}{ "error": "string", "details": "string"}How is this guide?

