# Get scrape result

Always returns 200. Check the `status` discriminator for the scrape state.

**GET** `/v1/scrape/{id}`

## Parameters

- `id` (path, string, required)

## Responses

### 200 — Scrape state (queued, success, or failed).
- `schema_version`
- `status`
- `id`
- `url`
- `final_url`
- `content_type`
- `content_length`
- `status_code`
- `retrieved_at`
- `formats`
- `formats.raw`
- `formats.markdown`
- `formats.links`
- `formats.links.url`
- `formats.links.text`
- `formats.links.isInternal`
- `formats.links.rel`
- `formats.images`
- `formats.images.url`
- `formats.images.alt`
- `formats.images.width`
- `formats.images.height`
- `formats.images.format`
- `formats.images.score`
- `formats.json`
- `formats.json.data`
- `formats.json.validated`
- `formats.json.model`
- `metadata`
- `metadata.title`
- `metadata.description`
- `metadata.language`
- `metadata.canonicalUrl`
- `metadata.ogTitle`
- `metadata.ogDescription`
- `metadata.ogImage`
- `metadata.ogUrl`
- `metadata.ogSiteName`
- `metadata.robots`
- `metadata.byline`
- `metadata.publishedAt`
- `tables`
- `tables.kind`
- `tables.gfm`
- `tables.rows`
- `tables.cols`
- `warnings`
- `warnings.code`
- `warnings.message`
- `warnings.element`
- `stats`
- `stats.chars`
- `stats.tokens`
- `stats.blocks`
- `markdown_tokens`
- `markdown_tokens.kept`
- `markdown_tokens.total`
- `markdown_tokens.truncated`
- `billing`
- `billing.raw_bytes`
- `billing.factors`
- `billing.factors.name`
- `billing.factors.value`
- `billing.factors.reason`
- `billing.multiplier`
- `billing.billed_bytes`
- `custom`
- `cache`
- `cache_age_s`
- `error`
- `error.code`
- `error.message`
- `error.http_status`
- `error.retry_after_seconds`
- `error.failed_at`
- `status_url`
- `queued_at`
- `events`

### 401 — Unauthorized. The request carried no valid credential, and no work was
performed. The unified `Error` envelope carries one of the codes below
in `error.code`; match on the code, never on the prose.

- `invalid_api_key` — a bearer API key was presented and rejected:
  unknown, revoked, expired or malformed. The bearer-only operations
  (`/v1/webhook-deliveries*` among them) also return it when no
  `Authorization` header is sent. `GET /v1/account` is the exception
  to "malformed": it returns `invalid_api_key` only for a key that
  starts `sk_test_` or `sk_live_` and is unknown, revoked or expired.
- `unauthorized` — the `Authorization` header is absent or malformed on
  an operation that also accepts a dashboard session (the dual-auth and
  billing operations). `GET /v1/account` also returns it, for no
  `Authorization` header and for any bearer value that does not start
  `sk_test_` or `sk_live_` (that value is checked as a dashboard
  session token).

Not retryable as-is: supply a valid API key first.
- `status`
- `error`
- `error.code`
- `error.message`
- `error.http_status`
- `error.failed_at`
- `error.details`

### 404 — Resource not found.
- `status`
- `error`
- `error.code`
- `error.message`
- `error.http_status`
- `error.failed_at`
- `error.details`