---
title: "Get website analytics breakdowns (private beta)"
method: GET
path: "/v1/projects/{projectId}/geo/traffic/web/breakdowns"
tags: ["GEO"]
---

# Get website analytics breakdowns (private beta)

`GET /v1/projects/{projectId}/geo/traffic/web/breakdowns`

## Request

- Base URL: `https://api.usenotra.com`
- URL: `https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/web/breakdowns`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/usenotra/apis/notra-api/docs/v1/projects/:projectId/geo/traffic/web/breakdowns/get.ts> (a function with typed inputs; its response is checked against the schema)

Private beta: workspaces without web analytics access get 403. Top pages, referrer sources, countries, devices, languages, AI visitor outcomes, and the reports only notra.js sends: outbound link clicks, Core Web Vitals and JavaScript errors.

## Path parameters

- `projectId` string, required

## Query parameters

- `days` integer: Rolling window size in days. Ignored when from/to are set.
- `from` string
- `to` string
- `host` string: Hostname to filter on, such as www.example.com. Subdomains are included. Omit for every host.
- `path` string: Only count this exact page path, such as /pricing.
- `sites` 'exclude': `exclude` leaves out traffic to sites hosted on Notra Sites.

## Response `200`

Web analytics breakdowns fetched successfully

- GeoWebAnalyticsBreakdownsResponse
  - `configured` boolean, required: False when the analytics backend is not configured for this deployment; the payload is then empty rather than an error.
  - `imported` object, nullable: Latest completed history import. Days up to `until` come from it; native tracking starts the day after.
    - `provider` 'plausible' | 'plausible_csv' | 'vercel' | 'cloudflare' | 'cloudflare_rum', required
    - `until` string, required: Last imported day.
    - `nativeStart` string, nullable, required: First day Notra tracked natively, when known.
  - `pages` object[], required
    - `host` string, required
    - `path` string, required
    - `views` integer, required
    - `previousViews` integer, required
    - `visitors` integer, required
    - `landings` integer, required
    - `aiVisitors` integer, required
  - `sources` object[], required
    - `group` string, required: Referrer group: ai, direct, internal, search, social or other.
    - `source` string, required
    - `aiProduct` string, required
    - `sessions` integer, required
    - `previousSessions` integer, required
    - `visitors` integer, required
  - `countries` object[], required: ISO 3166-1 alpha-2 country codes.
    - `value` string, required
    - `visitors` integer, required
    - `previousVisitors` integer, nullable
  - `devices` object[], required
    - `value` string, required
    - `visitors` integer, required
    - `previousVisitors` integer, nullable
  - `outcomes` object[], required: How sessions from AI assistants behave compared to others.
    - `source` string, required: AI assistant the session came from; empty for every other session.
    - `sessions` integer, required
    - `pagesPerSession` number, required
    - `engagedRate` number, required
  - `outboundLinks` object[], required: Clicks on links to other sites.
    - `url` string, required: Destination host and path, without the query.
    - `clicks` integer, required
    - `previousClicks` integer, required
    - `visitors` integer, required
  - `vitals` object[], required: Core Web Vitals from real visits.
    - `metric` 'lcp' | 'inp' | 'cls' | 'fcp' | 'ttfb', required
    - `p75` number, required: 75th percentile in milliseconds, or the layout shift score x1000 for cls.
    - `samples` integer, required
  - `errors` object[], required: JavaScript errors reported by notra.plus.js.
    - `message` string, required: Scrubbed before storage: no query strings, emails or long ids.
    - `source` string, required
    - `events` integer, required
    - `views` integer, required
  - `languages` object[], required
    - `value` string, required
    - `visitors` integer, required
    - `previousVisitors` integer, nullable
  - `organization` object, required
    - `id` string, required
    - `slug` string, required
    - `name` string, required
    - `logo` string, nullable, required

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key
- `402`: GEO plan or available AI credits required
- `403`: Forbidden
- `404`: Organization, project or resource not found
- `409`: Conflict
- `500`: Internal server error
- `503`: Authentication or billing service unavailable

## Changes

- **2026-11-08** `41d74f2b285c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usenotra/apis/notra-api/changes/v1/projects/:projectId/geo/traffic/web/breakdowns/get.md)

---

[API](https://skmtc.dev/usenotra/apis/notra-api.md) - [All operations](https://skmtc.dev/usenotra/apis/notra-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usenotra/apis/notra-api/revisions/41d74f2b285c?raw)
