---
title: "Get a content check"
method: GET
path: "/v1/audits/geo/content-checks/{checkId}"
tags: ["Audits"]
---

# Get a content check

`GET /v1/audits/geo/content-checks/{checkId}`

## Request

- Base URL: `https://data.otterly.ai`
- URL: `https://data.otterly.ai/v1/audits/geo/content-checks/{checkId}`
- Auth: HTTP bearer

## Path parameters

- `checkId` string, required: Content check identifier.

## Response `200`

The content check.

- PublicApiContentCheck
  - `id` string, required
  - `workspaceId` string, required
  - `url` string, required
  - `status` 'pending' | 'completed' | 'failed', required
  - `createdDate` string, required
  - `crawlerIdentity` string: The crawler identity that was impersonated when fetching the URL.
  - `sendOtterlyHeader` boolean: Whether the Otterly identifying header was sent when fetching the URL.
  - `structuralAnalysis` PublicApiContentCheckStructuralAnalysis: How well the page is structured for machine reading, with per-category breakdowns.
    - `overallScore` number, required: Weighted overall structural score (0–100).
    - `categoryScores` object, required: Normalized score (0–100) per category.
      - `structure` number, required
      - `content` number, required
      - `metadata` number, required
      - `technical` number, required
    - `structure` object, required
      - `score` number, required
      - `breakdown` object, required
        - `headingHierarchy` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `semanticElements` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `listsAndStructuredContent` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `paragraphStructure` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `navigationStructure` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
    - `content` object, required
      - `score` number, required
      - `breakdown` object, required
        - `richContentElements` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `contentVariety` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
    - `metadata` object, required
      - `score` number, required
      - `breakdown` object, required
        - `titleTag` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `metaDescription` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `structuredData` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `openGraphTags` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
    - `technical` object, required
      - `score` number, required
      - `breakdown` object, required
        - `validHtmlStructure` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `mobileFriendlyIndicators` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `robotsAndCrawling` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
        - `languageDeclaration` object, required
          - `score` number, required: Points awarded for this sub-check.
          - `maxScore` number, required: Maximum points available for this sub-check.
  - `dynamicContent` PublicApiContentCheckDynamicContent: Comparison of the static (no-JS) page against the JavaScript-rendered page.
    - `score` number, required: Share of the static content that is still present after JavaScript rendering (0–100).
    - `differenceDescription` string, required: Human-readable summary of how the rendered content compares to the static HTML.
    - `staticLength` number: Character length of the content available without JavaScript.
    - `dynamicLength` number: Character length of the content added by JavaScript rendering.
    - `isPotentiallyBlocked` boolean: True when the page appears to gate its content behind JavaScript in a way that may hide it from crawlers.
  - `contentAnalysis` PublicApiContentCheckContentAnalysis: AI content-readiness analysis: per-dimension scores and recommendations for making the page easier for AI to quote and understand.
    - `analysis` object, required: Per-dimension content readiness analysis. Keys are check names such as `semanticRepetition`, `summaryBlock`, `sectionIntegrity`, `modularContentEnhancements`, `externalLinkSuggestions`, `illustrationOpportunities`, `jargonAndMetaphors`, `questionAnswerReadability`, `paragraphCohesion`, `toneAndLanguageCheck`, `clarityAndAssertiveness`, `acronymsAndTerminology`, and `specificity`. Each value has a `description` and a `score`.
    - `overallScore` number, required: Overall AI content-readiness score (0–100).

## Other responses

- `400`: Validation failed.
- `401`: Unauthorized.
- `403`: Forbidden.
- `404`: Content check not found.

## Changes

- **2026-11-03** `b5dc4bea6d45`: 4 info
  - removed the `ChatGPT-User` enum value from the `crawlerIdentity` response property for the response status `200`
  - removed the `GoogleBot` enum value from the `crawlerIdentity` response property for the response status `200`
  - removed the `OAI-SearchBot` enum value from the `crawlerIdentity` response property for the response status `200`
  - removed the `PerplexityCrawler` enum value from the `crawlerIdentity` response property for the response status `200`

[Operation history](https://skmtc.dev/otterly/apis/otterly-public-api/changes/v1/audits/geo/content-checks/:checkId/get.md)

---

[API](https://skmtc.dev/otterly/apis/otterly-public-api.md) - [All operations](https://skmtc.dev/otterly/apis/otterly-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/otterly/apis/otterly-public-api/revisions/333e3100f0b4?raw)
