---
title: "List stored GEO shelf sources"
method: GET
path: "/v1/projects/{projectId}/geo/shelf-sources"
tags: ["GEO"]
---

# List stored GEO shelf sources

`GET /v1/projects/{projectId}/geo/shelf-sources`

## Request

- Base URL: `https://api.usenotra.com`
- URL: `https://api.usenotra.com/v1/projects/{projectId}/geo/shelf-sources`
- Auth: HTTP bearer

Returns a bounded page of cited and manually tracked sources, newest updates first.

## Path parameters

- `projectId` string, required

## Query parameters

- `offset` integer, nullable
- `limit` integer

## Response `200`

Shelf sources fetched successfully

- GeoShelfListResponse
  - `sources` object[], required
    - `id` string, required
    - `url` string, uri, required
    - `domain` string, required
    - `title` string, nullable, required
    - `kind` 'listicle' | 'review_site' | 'community' | 'news' | 'docs' | 'video' | 'other', required
    - `ownership` 'third_party' | 'own' | 'competitor', required
    - `origin` 'scan' | 'manual', required
    - `fetchStatus` 'pending' | 'ok' | 'blocked' | 'failed', required
    - `lastFetchedAt` string, date-time, nullable, required
    - `citations` object, required
      - `windowCount` integer, required
      - `totalCount` integer, required
      - `promptCount` integer, required
      - `engines` string[], required
      - `firstCitedAt` string, date-time, nullable, required
      - `lastCitedAt` string, date-time, nullable, required
    - `placements` object[], required
      - `competitorId` string, nullable, required
      - `brandName` string, required
      - `brandDomain` string, nullable, required
      - `status` 'present' | 'absent' | 'unknown', required
      - `position` integer, nullable, required
      - `hasLink` boolean, required
      - `evidence` 'fetch' | 'manual', required
      - `excerpt` string, nullable, required
      - `checkedAt` string, date-time, required
    - `opportunity` object, nullable, required
      - `status` 'open' | 'in_progress' | 'won' | 'lost' | 'dismissed', required
      - `priority` 'low' | 'medium' | 'high' | 'null', nullable, required
      - `assigneeMemberId` string, nullable, required
      - `pocMemberId` string, nullable, required
      - `notes` string, nullable, required
      - `dueAt` string, date-time, nullable, required
      - `id` string, required
      - `createdByUserId` string, nullable, required
      - `resolvedAt` string, date-time, nullable, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
    - `createdByUserId` string, nullable, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `nextOffset` integer, nullable, 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-09-17** `358ec87b1f81`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usenotra/apis/notra-api/changes/v1/projects/:projectId/geo/shelf-sources/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/b2465e605a4d?raw)
