---
title: "Get a single GEO scan"
method: GET
path: "/v1/projects/{projectId}/geo/scans/{scanId}"
tags: ["GEO"]
---

# Get a single GEO scan

`GET /v1/projects/{projectId}/geo/scans/{scanId}`

## Request

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

Returns scan status, check progress and mentions by engine, plus safe failure metadata for failed scans. Legacy scans without a saved plan report null planned totals.

## Path parameters

- `projectId` string, required
- `scanId` string, required

## Response `200`

Scan fetched successfully

- GeoScanResponse
  - `scan` GeoScan, required
    - `id` string, required
    - `projectId` string, required
    - `status` 'running' | 'completed' | 'failed', required
    - `startedAt` string, required
    - `finishedAt` string, nullable, required
    - `createdAt` string, required
    - `summary` object, required
      - `plannedChecks` integer, nullable, required
      - `completedChecks` integer, required
      - `mentionCount` integer, required
      - `failedChecks` integer, required
      - `engines` object[], required
        - `engine` string, required
        - `plannedChecks` integer, nullable, required
        - `completedChecks` integer, required
        - `mentionCount` integer, required
        - `failedChecks` integer, required
    - `errorCode` string, nullable, required
    - `errorMessage` string, nullable, required
    - `failedStage` 'handoff' | 'execution' | 'stale' | 'null', nullable, required
    - `retryable` boolean, 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-15** `3a582538d077`: 5 info
  - added the required property `scan/errorCode` to the response with the `200` status
  - added the required property `scan/errorMessage` to the response with the `200` status
  - added the required property `scan/failedStage` to the response with the `200` status
  - added the required property `scan/retryable` to the response with the `200` status
  - …1 more
- **2026-09-02** `fd2fc44c9208`: 1 info
  - endpoint added

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