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

# Get website analytics totals and trend (private beta)

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

## Request

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

Private beta: workspaces without web analytics access get 403. Page views, visitors, sessions and AI-referred visitors against the previous window of the same length, daily views and visitors, and the hosts seen. Includes completed history imports. Explicit ranges can span at most 366 days.

## 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 fetched successfully

- GeoWebAnalyticsResponse
  - `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.
  - `hosts` object[], required
    - `host` string, required
    - `siteId` string, required: Notra Sites site id, empty for your own domains.
    - `views` integer, required
  - `totals` object, required
    - `views` integer, required
    - `previousViews` integer, required
    - `visitors` integer, required
    - `previousVisitors` integer, required
    - `sessions` integer, required
    - `previousSessions` integer, required
    - `engagedSessions` integer, required
    - `aiVisitors` integer, required: Visitors who arrived from an AI assistant.
    - `previousAiVisitors` integer, required
  - `points` object[], required
    - `day` string, required
    - `views` integer, required
    - `visitors` integer, required
  - `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/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)
