---
title: "Get per-URL metrics rollup"
method: GET
path: "/api/mcp/projects/{projectId}/pages/metrics"
tags: ["Site Health"]
---

# Get per-URL metrics rollup

`GET /api/mcp/projects/{projectId}/pages/metrics`

## Request

- Base URL: `https://app.searchable.com`
- URL: `https://app.searchable.com/api/mcp/projects/{projectId}/pages/metrics`
- Auth: HTTP bearer

One page's three AI series joined in a single call, each as daily buckets: AI-answer citations of the URL, AI-referral sessions landing on it (by platform), and AI-crawler hits fetching it (by bot). `url` is a full URL or a bare path (resolved against the project's domain). The two traffic series degrade to `available: false` when the LLM Analytics integration isn't connected; citations always answer. Default window 90 days (max 365).

## Path parameters

- `projectId` string, uuid, required

## Query parameters

- `url` string, required
- `days` integer

## Response `200`

Per-URL rollup.

- PageMetricsResponse: Per-URL rollup: citations + AI referrals + crawler hits as daily buckets.
  - `project` object, required
    - `id` string
    - `name` string, nullable
    - `domain` string, nullable
  - `url` object, required
    - `fullUrl` string, required
    - `domain` string, required
    - `path` string, required
  - `citations` object, required: AI-answer activity for the URL. inlineCitations counts answer-text links to it; sourceUses counts times a model consulted it as a source. Daily points carry sourceUses. Degrades to available:false with reason citation_lookup_failed on a lookup error.
    - `available` boolean, required
    - `points` object[]
      - `date` string
      - `responses` integer
      - `sourceUses` integer
    - `reason` string
    - `inlineCitations` integer
    - `sourceUses` integer
  - `aiReferrals` object, required
    - `available` boolean, required
    - `reason` string: Why the series is unavailable: traffic_not_connected, or external_url for a host outside the project's verified domains.
    - `totalSessions` integer
    - `points` object[]
      - `date` string
      - `byPlatform` object[]
        - `platform` string
        - `sessions` integer
        - `newVisitors` integer
  - `crawlerVisits` object, required
    - `available` boolean, required
    - `reason` string: Why the series is unavailable: traffic_not_connected, or external_url for a host outside the project's verified domains.
    - `totalCrawls` integer
    - `points` object[]
      - `date` string
      - `byBot` object[]
        - `bot` string
        - `vendor` string, nullable
        - `crawls` integer
  - `dateRange` DateRange, required: The resolved lookback window for this response.
    - `from` string, date-time, required
    - `to` string, date-time, required

## Other responses

- `400`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `401`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `404`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.
- `429`: Rate limited. Usually the per-API-key REST limit (600 requests/minute); on Google-backed endpoints it can also relay an upstream Google rate limit. `Retry-After` (seconds) is present when the limit was applied by Searchable's own rate limiter; it may be absent when an upstream provider rate-limits.
- `504`: Error response. `code` is the machine-readable reason — see the [error reference](/api/errors) for the full catalog and remediation per code.

## Changes

- **2026-11-03** `28a5e2a65cd3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/searchable/apis/searchable-rest-api/changes/api/mcp/projects/:projectId/pages/metrics/get.md)

---

[API](https://skmtc.dev/searchable/apis/searchable-rest-api.md) - [All operations](https://skmtc.dev/searchable/apis/searchable-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/searchable/apis/searchable-rest-api/revisions/a1cc70e46e73?raw)
