Crawl summary
GET /api/v1/crawl/{jobId}/summary
Site-wide metrics for a crawl in a single object — overall score, link health, duplicate counts, non-indexable pages and crawl status. Safe to poll while the crawl is still running.
Path & query
| Name | Type | Description |
|---|---|---|
jobId required | string | The crawl job id returned by Start a crawl (POST /api/v1/crawl). Path parameter. |
Request
Response
200 · application/json
- {
- "jobId": "crw_7Hk29fQ",
- "startUrl": "https://example.com",
- "host": "example.com",
- "status": "done",
- "maxPages": 50,
- "createdAt": "2026-06-02T13:24:49.414Z",
- "finishedAt": "2026-06-02T13:24:52.055Z",
- "pagesCrawled": 42,
- "totals": {
- "brokenPages": 1,
- "missingTitle": 0,
- "missingMetaDescription": 3,
- "missingH1": 2,
- "averageWordCount": 815,
- "averageScore": 82
- }
- }
Response fields
| Field | Type | Description |
|---|---|---|
status | string | Crawl state: queued, running, done or error. |
pagesCrawled | number | Number of pages fetched so far (final count once status is done). |
createdAt | string | ISO 8601 timestamp of when the crawl was started. |
finishedAt | string | ISO 8601 timestamp of when the crawl completed; null until the crawl is done. |
totals | object | Aggregate counts across all crawled pages (see below). |
totals.brokenPages | number | Pages that returned an HTTP status ≥ 400. |
totals.missingTitle | number | Pages with no <title>. |
totals.missingMetaDescription | number | Pages with no meta description. |
totals.missingH1 | number | Pages with no <h1>. |
totals.averageWordCount | number | Mean body word count across crawled pages. |
totals.averageScore | number | Mean on-page SEO score (0–100) across crawled pages. |
See Errors for status codes.