---
title: "Retrieve a scan · API docs · CheckAnySite"
description: "Returns a scan’s status and, once it has completed, its result with the checks that were asked for."
url: "https://docs.checkanysite.com/api/get-scan"
---

API reference

# Retrieve a scan

GET `/v1/scans/{id}`

Returns a scan’s status and, once it has completed, its result with the checks that were asked for.

Read the scan at its `links.self`, which includes those checks. `complete` becomes true when the scan has failed, or has completed with every slow source in. Until then, the `Retry-After` header says when to read it again.

Credits

Free.

## Request

```bash cURL
curl "https://api.checkanysite.com/v1/scans/0b5a7a6e-1f7e-4d7c-9a4e-2f0d8b1c6a11?checks=ai" \
  -H "Authorization: Bearer $CHECKANYSITE_API_KEY"
```

```python
from checkanysite import CheckAnySite

client = CheckAnySite()  # Reads the key from CHECKANYSITE_API_KEY.

scan = client.scans.retrieve(
    "0b5a7a6e-1f7e-4d7c-9a4e-2f0d8b1c6a11", checks=["ai"]
)
```

```javascript
const url = 'https://api.checkanysite.com/v1/scans/0b5a7a6e-1f7e-4d7c-9a4e-2f0d8b1c6a11?checks=ai';
const response = await fetch(url, {
  headers: {
    Authorization: `Bearer ${process.env.CHECKANYSITE_API_KEY}`,
  },
});
const scan = await response.json();
```

## Parameters

- `id` string required path

  The scan’s `id`, returned by POST /scans.
- `checks` string query

  The checks the scan was asked for; `links.self` includes them.

  One of: `ai`, `readiness`, `popularity`, `tech`, `dns`, `trust`, `summary`, `history`.

## Response

| Status | Body | When |
| --- | --- | --- |
| 200 OK | `Scan` | The scan as it is now. |

```json Response 200: A completed scan
{
  "id": "0b5a7a6e-1f7e-4d7c-9a4e-2f0d8b1c6a11",
  "domain": "wikipedia.org",
  "checks": [
    "ai"
  ],
  "status": "completed",
  "createdAt": "2026-11-10T09:30:00.000Z",
  "finishedAt": "2026-11-10T09:30:06.000Z",
  "complete": true,
  "failure": null,
  "result": {
    "domain": "wikipedia.org",
    "checks": [
      "ai"
    ],
    "scanId": "0b5a7a6e-1f7e-4d7c-9a4e-2f0d8b1c6a11",
    "scannedAt": "2026-11-10T09:30:06.000Z",
    "complete": true,
    "pending": [],
    "limited": null,
    "finalUrl": "https://www.wikipedia.org/",
    "resultUrl": "https://checkanysite.com/site/wikipedia.org?focus=ai",
    "versions": {
      "signatures": "0.6.1",
      "score": "1.1"
    },
    "ai": {
      "level": "none",
      "builders": [],
      "patterns": []
    },
    "readiness": null,
    "popularity": null,
    "tech": null,
    "dns": null,
    "trust": null,
    "score": null,
    "summary": null,
    "history": null,
    "notes": []
  },
  "links": {
    "self": "https://api.checkanysite.com/v1/scans/0b5a7a6e-1f7e-4d7c-9a4e-2f0d8b1c6a11?checks=ai",
    "result": "https://checkanysite.com/site/wikipedia.org?focus=ai"
  }
}
```

- `id` string

  The scan’s id.
- `domain` string

  The domain scanned.
- `checks` array of one of: ai, readiness, popularity, tech, dns, trust, summary, history

  The checks its result holds: those asked that the scan answers.
- `status` string

  Where it is: `queued`, `running`, `completed` or `failed`.

  One of: `queued`, `running`, `completed`, `failed`.
- `createdAt` date-time

  When it was asked for.
- `finishedAt` date-time or null

  When it finished; null while it runs.
- `complete` boolean

  True once the scan failed, or completed with every slow source in.
- `failure` object or null

  Why the scan couldn’t finish; null unless `status` is `failed`.
- `result` object or null

  The result once `status` is `completed`.
- `links` object

  Where to poll the scan, and where its result is shown.

Once completed, `result` holds the site’s result, as on [the result object](https://docs.checkanysite.com/api/result).

## Errors

| Status | Code | What happened |
| --- | --- | --- |
| 404 | [scan\_not\_found](https://docs.checkanysite.com/errors#scan_not_found) | Scan not found |
| 410 | [scan\_expired](https://docs.checkanysite.com/errors#scan_expired) | Scan expired |
| 400 | [invalid\_parameter](https://docs.checkanysite.com/errors#invalid_parameter) | Invalid parameter |
| 401 | [missing\_api\_key](https://docs.checkanysite.com/errors#missing_api_key) | No API key |
| 401 | [invalid\_api\_key](https://docs.checkanysite.com/errors#invalid_api_key) | Unknown API key |
| 401 | [revoked\_api\_key](https://docs.checkanysite.com/errors#revoked_api_key) | Revoked API key |
| 401 | [expired\_api\_key](https://docs.checkanysite.com/errors#expired_api_key) | Expired API key |
| 429 | [rate\_limited](https://docs.checkanysite.com/errors#rate_limited) | Too many requests |
| 500 | [internal\_error](https://docs.checkanysite.com/errors#internal_error) | Internal error |
