---
title: "Web Unlocker"
method: POST
path: "/v1/tools/fetch/webpage"
tags: ["Tools"]
---

# Web Unlocker

`POST /v1/tools/fetch/webpage`

## Request

- Base URL: `https://api.anchorbrowser.io`
- URL: `https://api.anchorbrowser.io/v1/tools/fetch/webpage`
- Auth: API key in header `anchor-api-key`

Fetch the fully rendered HTML of any URL — including CAPTCHA- and bot-protected sites — with a single sessionless request.

Each request runs in a stealth browser behind a residential proxy. JavaScript is fully rendered, cookie-consent dialogs are dismissed,
and CAPTCHA or bot-detection challenges (Cloudflare, reCAPTCHA, FunCaptcha, DataDome, Kasada, Akamai, PerimeterX) are solved automatically —
you receive the page behind the challenge, never the interstitial. No browser session is created and the request does not count
against your concurrent-browser limit.

**Response:** the page body is returned directly (not wrapped in JSON). HTML pages return `text/html`; PDFs and file downloads are
passed through as binary with their original content type and a `Content-Disposition: attachment` header.

**Limits:** 2,000 requests per minute per API key by default. Requests can take up to about two minutes when a challenge must be
solved, so configure client timeouts of at least 120 seconds.

**Billing:** 0.005 credits per `200` response, regardless of page content. `4xx` and `5xx` responses are not billed.

See the [Web Unlocker guide](/advanced/web-unlocker) for examples, retry guidance, and a comparison with browser sessions.

## Request body

- WebUnlockerRequestSchema
  - `url` string, required: The fully-qualified URL to fetch, including the scheme (e.g. `https://www.linkedin.com/company/openai`).
  - `options` object: Optional retrieval settings.
    - `return_partial_on_timeout` boolean: When a page is still loading at the deadline, return the content rendered so far instead of failing. Set to `false` to receive a `504` instead of partial content.

## Response `200`

Page content returned successfully. The body is the resource itself, not a JSON envelope.
The `Content-Type` header reflects the target: HTML pages return `text/html`; PDFs and file downloads are
returned as binary with `Content-Disposition: attachment`; other resources keep their upstream content type.

- unknown

## Other responses

- `400`: Invalid request — check the URL and try again.
- `402`: Insufficient credits balance.
- `403`: Project cost limit reached.
- `422`: Could not reach the requested URL, the hostname did not resolve, or the challenge could not be solved.
- `429`: Rate limit exceeded.
- `500`: Failed to fetch the requested page.
- `503`: Service temporarily unavailable — retry with backoff.
- `504`: The page took too long to load.

## Changes

- **2026-10-16** `b3bfdb98c79e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/anchorbrowser/apis/anchorbrowser-api/changes/v1/tools/fetch/webpage/post.md)

---

[API](https://skmtc.dev/anchorbrowser/apis/anchorbrowser-api.md) - [All operations](https://skmtc.dev/anchorbrowser/apis/anchorbrowser-api/llms.txt) - [OpenAPI document](https://skmtc.dev/anchorbrowser/apis/anchorbrowser-api/revisions/9d755f22df0e?raw)
