---
title: "List content gaps"
method: GET
path: "/v1/projects/{projectId}/geo/gaps"
tags: ["GEO"]
---

# List content gaps

`GET /v1/projects/{projectId}/geo/gaps`

Prompts where competitors are mentioned and this brand is not, plus Search Console queries with no tracked prompt. Each row carries the brief already written for it, when there is one.

## Path parameters

- `projectId` string, required

## Response `200`

Gaps fetched successfully

- GeoContentGapsResponse
  - `promptGaps` object[], required
    - `id` string, required
    - `prompt` string, required
    - `title` string, nullable, required
    - `engines` string[], required
    - `mentionedEngines` string[], required
    - `competitors` string[], required
    - `discoveredCompetitors` string[], required
    - `ownMentionRate` number, required
    - `engineCoverage` number, required
    - `opportunity` number, required
    - `won` boolean, required
    - `brief` object, nullable, required
      - `briefId` string, required
      - `status` 'draft' | 'approved' | 'writing' | 'completed' | 'failed', required
      - `postId` string, nullable, required
      - `workingTitle` string, nullable, required
      - `publishedAt` string, nullable, required
      - `baseline` object, nullable, required
        - `mentionedEngines` number, required
        - `totalEngines` number, required
      - `rescanned` boolean, required
  - `searchGaps` object[], required
    - `id` string, required
    - `prompt` string, required
    - `title` string, nullable, required
    - `impressions` number, nullable, required
    - `clicks` number, nullable, required
    - `position` number, nullable, required
    - `queries` object[], required
      - `query` string, required
      - `clicks` number, required
      - `impressions` number, required
      - `position` number, required
    - `brief` object, nullable, required
      - `briefId` string, required
      - `status` 'draft' | 'approved' | 'writing' | 'completed' | 'failed', required
      - `postId` string, nullable, required
      - `workingTitle` string, nullable, required
      - `publishedAt` string, nullable, required
      - `baseline` object, nullable, required
        - `mentionedEngines` number, required
        - `totalEngines` number, required
      - `rescanned` boolean, required
    - `recommendation` object, required
      - `action` 'create' | 'update' | 'merge' | 'ignore', required — What to do with this query cluster: create a new page, update the strongest existing page, merge overlapping pages, or ignore thin demand.
      - `reason` string, required
      - `targets` object[], required
        - `kind` 'page' | 'post', required
        - `id` string, required
        - `url` string, nullable, required
        - `title` string, required
        - `score` number, required
  - `hasScanData` boolean, required — False until the project has at least one scan result.
  - `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-04** `931a7bd8d32c` — 13 info
  - added the required property `promptGaps/items/brief/baseline` to the response with the `200` status
  - added the required property `promptGaps/items/brief/publishedAt` to the response with the `200` status
  - added the required property `promptGaps/items/brief/rescanned` to the response with the `200` status
  - added the required property `promptGaps/items/discoveredCompetitors` to the response with the `200` status
  - …9 more
- **2026-09-02** `fd2fc44c9208` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/usenotra/apis/notra-api/changes/v1/projects/:projectId/geo/gaps/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-service-production.skmtc.workers.dev/v1/apis/usenotra/notra-api/revisions/931a7bd8d32c/schema)
