---
title: "Retrieve GEO analysis by ID"
method: GET
path: "/v1/geo/analyses/{configId}"
tags: ["GEO"]
---

# Retrieve GEO analysis by ID

`GET /v1/geo/analyses/{configId}`

## Request

- Base URL: `https://api.jasper.ai`
- URL: `https://api.jasper.ai/v1/geo/analyses/{configId}`
- Auth: one of:
  - API key in header `X-API-Key`
  - OAuth 2
    - Authorization code: `https://api.jasper.ai/oauth2/authorize`
    - Token URL: `https://api.jasper.ai/oauth2/token` scopes: `user`

## Path parameters

- `configId` string, required

## Response `200`

- GeoAnalysisResponseDto
  - `requestId` string, required
  - `resource` string, required
  - `data` GeoAnalysisDetailDto, required
    - `configId` string, required
    - `label` string, required
    - `website` string, required
    - `timezone` string, required: IANA timezone the schedule and each run analysisDate are anchored to.
    - `region` 'US' | 'GB' | 'AU' | 'CA' | 'NZ' | 'IE' | 'ZA' | 'HK' | 'AE', nullable, required: Country market provider web searches are localized to. `null` means provider defaults.
    - `status` union: Schedule status. `null` when the analysis has never been scheduled.
      - GeoAnalysisActiveStatusDto
        - `type` 'active', required
      - GeoAnalysisPausedStatusDto
        - `type` 'paused', required
        - `reason` 'insufficient_credits' | 'user_requested', required: Why updates are paused. Only `user_requested` carries `pausedAt` and `pausedBy`.
        - `pausedAt` string: ISO 8601 timestamp. Present when reason is `user_requested`.
        - `pausedBy` string: ID of the user who paused. Present when reason is `user_requested`.
    - `latestRun` GeoRunSummaryDto
      - `runId` string, required
      - `configId` string: Present on the run history listing. Omitted from an analysis’s `latestRun`, which is already nested under it.
      - `runDate` string, required: Calendar date the run reports on, in the analysis timezone. Not an instant.
      - `createdAt` string, required: ISO 8601 timestamp
      - `updatedAt` string, required: ISO 8601 timestamp
    - `settings` GeoAnalysisSettingsDto
      - `pages` string[], required: Absolute URLs of the pages the run analysed.
      - `competitors` GeoCompetitorDto[], required
        - `name` string, required
        - `url` string, required
      - `providers` string[], required: AI providers the run queried.
      - `topicClusters` GeoTopicClusterSettingDto[]
        - `id` string, required
        - `name` string, required
      - `scopes` union[], required: What the analysis is permitted to cover. Distinct from `pages`, which is what it actually analysed.
        - union
          - GeoInternalScopeDto
            - `kind` 'internal', required
            - `url` string, uri, required
            - `match` 'page' | 'path_prefix' | 'hostname' | 'hostname_and_subdomains', required: How `url` is matched when deciding whether a page is in scope. - `page`: only the page `url` points at. - `path_prefix`: every page under `url`'s path. - `hostname`: every page on `url`'s hostname, excluding subdomains. - `hostname_and_subdomains`: every page on `url`'s hostname and any of its subdomains.
          - GeoExternalScopeDto
            - `kind` 'external', required
            - `url` string, uri, required
            - `match` 'page', required: Always `page`: an external scope covers only the page `url` points at.

## Other responses

- `404`: Analysis not found.

## Changes

- **2026-11-03** `3d5be7408661`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/jasper/apis/jasper-api/changes/v1/geo/analyses/:configId/get.md)

---

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