---
title: "Poll a crawl (kept for 24 hours)"
method: GET
path: "/v1/crawl/{id}"
---

# Poll a crawl (kept for 24 hours)

`GET /v1/crawl/{id}`

## Request

- Base URL: `https://api.serpkite.com`
- URL: `https://api.serpkite.com/v1/crawl/{id}`
- Auth: HTTP bearer

## Response `200`

OK

- CrawlTask
  - `id` string, uuid, required
  - `kind` 'crawl', required
  - `status` 'queued' | 'running' | 'completed' | 'failed' | 'canceled', required
  - `created_at` string, date-time, required
  - `started_at` string, date-time, nullable
  - `completed_at` string, date-time, nullable
  - `credits_reserved` number, required
  - `credits_used` number, required
  - `webhook_status` 'pending' | 'delivered' | 'failed' | 'null', nullable
  - `progress` object, nullable
    - `pages_done` integer
    - `pages_failed` integer
    - `pages_queued` integer
    - `pages_discovered` integer
    - `limit` integer
  - `result` CrawlResult
    - `url` string, required
    - `pages` CrawlPage[], required
      - `url` string, required
      - `depth` integer, required: Link hops from the start page
      - `title` string
      - `markdown` string
      - `text` string
      - `published_at` string
      - `metadata` PageMetadata
        - `title` string
        - `description` string
        - `language` string
        - `canonical` string
        - `site_name` string
        - `image` string
        - `published_time` string
        - `author` string
        - `content_type` string: The page's media type
        - `pages` integer: Page count of a PDF
      - `links` PageLink[]
        - `url` string, required: Absolute URL
        - `text` string: Anchor text
    - `failed` ExtractFailure[], required
      - `url` string, required
      - `error` object, required
        - `code` string, required
        - `message` string, required
    - `stats` object, required
      - `pages` integer
      - `failed` integer
      - `seconds` integer
      - `discovered` integer: Unique URLs found that passed the filters
      - `queued` integer: Found but not read when the crawl ended
      - `duplicates` integer: Pages that redirected to a page already read (not charged)
      - `sitemap_urls` integer: URLs taken from sitemaps
      - `robots` 'found' | 'missing' | 'unreachable' | 'none': The start host's robots.txt
      - `robots_disallowed` integer: Disallow rules in force on the start host
      - `robots_blocked` integer: URLs skipped because robots.txt disallows them
      - `crawl_delay_ms` integer: The start host's Crawl-delay, honoured
      - `stopped` 'done' | 'limit' | 'time_limit' | 'size_limit' | 'too_many_failures' | 'canceled': Why the crawl ended
  - `error` TaskError, nullable: Set when the task failed or was canceled
    - `code` string
    - `message` string

## Other responses

- `401`: Error
- `404`: Error
- `429`: Error

---

[API](https://skmtc.dev/serpkite/apis/serpkite-serp-api.md) · [All operations](https://skmtc.dev/serpkite/apis/serpkite-serp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/serpkite/apis/serpkite-serp-api/revisions/f2c6dd05cfc5?raw)
