GET /v1/brands/{brand_id}/citations/pages

List cited pages

Every page the AI answers cited for the brand, one row per URL, counted from the answers themselves: how often, by which engines and prompts, its share of all citations and its change.

Filters compose with AND: report_id (repeat for several), scheduled_report_id, platform (repeat for several engines), date_from, date_to and category (the prompt category; repeat for several). Also site_type and relation (repeat each for several; site_type=classifying matches pages whose site is not classified yet), domain and search (a substring of the URL or title).

sort: citations (default, most cited first), recent (last cited first), prompts, position (best average place first), change (biggest gain first) or trend (new first, then the steepest rise). first_half_citation_count and second_half_citation_count split the runs read into their first and last half (with an odd count the middle run counts in neither), and the change and trend sorts compare the second half with the first. Offset paginated via limit (1-500) and offset.

Path parameters

Query parameters

  • site_type string optional

    Only pages on these site types (an open set); repeat for several.

  • relation string optional

    Only pages with these relations to the brand: owned, competitor, none.

  • domain string optional

    Only pages on this domain.

  • sort string (enum) optional

    Order of the rows. Default citations.

    one of citations, recent, prompts, position, change, trend · default: citations

  • limit integer optional

    Pages per page (1-500, default 100).

    default: 100

  • offset integer optional

    Pages to skip from the start.

    default: 0

  • report_id string optional

    Only these reports (UUIDs); repeat the parameter for several.

  • scheduled_report_id string optional

    Only the runs of this Scheduled Report (UUID).

  • platform string optional

    Only answers from these engines; repeat the parameter for several.

  • date_from string optional

    Only answers from this moment on (ISO-8601).

  • date_to string optional

    Only answers before this moment, exclusive (ISO-8601).

  • category string optional

    Only answers to prompts of these categories; repeat the parameter for several.

  • dry_run boolean optional

    Preview the call without executing it. Runs auth, scope, eligibility and body validation, then returns 200 with a dry_run object reporting the request-unit and credit cost plus a non-consuming quota snapshot. Nothing is debited, reserved, dispatched or mutated. An invalid body still returns 422.

    default: false

Responses

Returned cited pages application/json
Type: CitedPageList
  • data array of CitedPage required
  • has_more boolean required

    True when more items exist past this page. Fetch them with a larger offset.

  • limit integer required

    Page size that was applied.

    min: 1

  • offset integer required

    Number of items skipped before this page.

    min: 0

  • total integer required

    Total number of items matching the query, across all pages.

    min: 0

  • object string

    default: `list`

Example response
{
  "data": [
    {
      "author": "Amanda Furrer",
      "avg_position": 2.4,
      "categorization_status": "completed",
      "citation_count": 42,
      "domain": "runnersworld.com",
      "first_half_citation_count": 18,
      "first_seen_at": "2026-07-02T09:00:00+00:00",
      "image_url": "https://hips.hearstapps.com/best-running-shoes.jpg",
      "last_seen_at": "2026-09-20T08:15:00+00:00",
      "object": "cited_page",
      "page_category": "LISTICLE_COMPARISON",
      "platform_counts": {
        "chatgpt": 30,
        "perplexity": 12
      },
      "platforms": [
        "chatgpt",
        "perplexity"
      ],
      "prompt_count": 11,
      "published_at": "2026-05-14T12:00:00+00:00",
      "relation": "none",
      "report_count": 9,
      "second_half_citation_count": 24,
      "share": 3.1,
      "site_name": "Runner's World",
      "site_type": "news",
      "title": "The Best Running Shoes of 2026",
      "tracked": false,
      "url": "https://www.runnersworld.com/gear/a20865766/best-running-shoes/"
    }
  ],
  "has_more": false,
  "limit": 100,
  "object": "list",
  "offset": 0,
  "total": 1
}
Request validation failed application/json
Type: ApiError
  • error object required
    Show fields
    • code string required

      Stable machine-readable error code from the catalog.

    • message string required

      Human-readable description suitable for logging.

    • details object

      Optional, code-specific context (e.g. errors array for validation_error, retry_after for service_unavailable). Shape depends on error.code; treat as opaque otherwise.

      Show fields

      Empty object (no properties).

  • Server-generated correlation id for the request. Mirrors the X-Correlation-ID response header. Include this when contacting support.

    format: `uuid`

Example response
{
  "error": {
    "code": "validation_error",
    "message": "Request validation failed"
  },
  "request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}
Missing or invalid credentials application/json
Type: ApiError
  • error object required
    Show fields
    • code string required

      Stable machine-readable error code from the catalog.

    • message string required

      Human-readable description suitable for logging.

    • details object

      Optional, code-specific context (e.g. errors array for validation_error, retry_after for service_unavailable). Shape depends on error.code; treat as opaque otherwise.

      Show fields

      Empty object (no properties).

  • Server-generated correlation id for the request. Mirrors the X-Correlation-ID response header. Include this when contacting support.

    format: `uuid`

Example response
{
  "error": {
    "code": "unauthorized",
    "message": "Missing or invalid credentials"
  },
  "request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}
You do not have permission to access this resource application/json
Type: ApiError
  • error object required
    Show fields
    • code string required

      Stable machine-readable error code from the catalog.

    • message string required

      Human-readable description suitable for logging.

    • details object

      Optional, code-specific context (e.g. errors array for validation_error, retry_after for service_unavailable). Shape depends on error.code; treat as opaque otherwise.

      Show fields

      Empty object (no properties).

  • Server-generated correlation id for the request. Mirrors the X-Correlation-ID response header. Include this when contacting support.

    format: `uuid`

Example response
{
  "error": {
    "code": "forbidden",
    "message": "You do not have permission to access this resource"
  },
  "request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}
Resource not found application/json
Type: ApiError
  • error object required
    Show fields
    • code string required

      Stable machine-readable error code from the catalog.

    • message string required

      Human-readable description suitable for logging.

    • details object

      Optional, code-specific context (e.g. errors array for validation_error, retry_after for service_unavailable). Shape depends on error.code; treat as opaque otherwise.

      Show fields

      Empty object (no properties).

  • Server-generated correlation id for the request. Mirrors the X-Correlation-ID response header. Include this when contacting support.

    format: `uuid`

Example response
{
  "error": {
    "code": "not_found",
    "message": "Resource not found"
  },
  "request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}
Resource conflict application/json
Type: ApiError
  • error object required
    Show fields
    • code string required

      Stable machine-readable error code from the catalog.

    • message string required

      Human-readable description suitable for logging.

    • details object

      Optional, code-specific context (e.g. errors array for validation_error, retry_after for service_unavailable). Shape depends on error.code; treat as opaque otherwise.

      Show fields

      Empty object (no properties).

  • Server-generated correlation id for the request. Mirrors the X-Correlation-ID response header. Include this when contacting support.

    format: `uuid`

Example response
{
  "error": {
    "code": "conflict",
    "message": "Resource conflict"
  },
  "request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}
Per-minute rate limit exceeded application/json
Type: ApiError
  • error object required
    Show fields
    • code string required

      Stable machine-readable error code from the catalog.

    • message string required

      Human-readable description suitable for logging.

    • details object

      Optional, code-specific context (e.g. errors array for validation_error, retry_after for service_unavailable). Shape depends on error.code; treat as opaque otherwise.

      Show fields

      Empty object (no properties).

  • Server-generated correlation id for the request. Mirrors the X-Correlation-ID response header. Include this when contacting support.

    format: `uuid`

Example response
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Per-minute rate limit exceeded"
  },
  "request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}
An unexpected error occurred application/json
Type: ApiError
  • error object required
    Show fields
    • code string required

      Stable machine-readable error code from the catalog.

    • message string required

      Human-readable description suitable for logging.

    • details object

      Optional, code-specific context (e.g. errors array for validation_error, retry_after for service_unavailable). Shape depends on error.code; treat as opaque otherwise.

      Show fields

      Empty object (no properties).

  • Server-generated correlation id for the request. Mirrors the X-Correlation-ID response header. Include this when contacting support.

    format: `uuid`

Example response
{
  "error": {
    "code": "internal_error",
    "message": "An unexpected error occurred"
  },
  "request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}
Service temporarily unavailable, please retry application/json
Type: ApiError
  • error object required
    Show fields
    • code string required

      Stable machine-readable error code from the catalog.

    • message string required

      Human-readable description suitable for logging.

    • details object

      Optional, code-specific context (e.g. errors array for validation_error, retry_after for service_unavailable). Shape depends on error.code; treat as opaque otherwise.

      Show fields

      Empty object (no properties).

  • Server-generated correlation id for the request. Mirrors the X-Correlation-ID response header. Include this when contacting support.

    format: `uuid`

Example response
{
  "error": {
    "code": "service_unavailable",
    "message": "Service temporarily unavailable, please retry"
  },
  "request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}