Bright Data Web Unlocker API

Single-endpoint web unblocking with a 98%+ success rate. Send any URL, Bright Data handles residential proxy selection, JavaScript rendering, CAPTCHA solving, fingerprint spoofing, and anti-bot evasion, returning the fully rendered page. Supports both synchronous and asynchronous modes via `/unblocker/req` with `/unblocker/get_result` for polling. Pay only for successful requests.

Bright Data Web Unlocker API is one of 11 APIs that Bright Data publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Web Unlocker, Unblocking, Anti-Bot, and CAPTCHA. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

bright-data-web-unlocker-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bright Data Web Unlocker API
  description: |
    Web Unlocker is a single-endpoint unblocking service. Submit any target URL and Bright Data
    handles residential proxy selection, JavaScript rendering, CAPTCHA solving, fingerprint
    management, and anti-bot evasion, returning the fully rendered response. Supports both
    synchronous (one-shot) and asynchronous (submit + poll) modes.

    Authentication uses a Bearer API token. Successful requests only — failed unlocks are not billed.
  version: '1.0'
  contact:
    name: Bright Data
    url: https://docs.brightdata.com
servers:
  - url: https://api.brightdata.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Unlock
    description: Submit and retrieve unlock requests.
paths:
  /request:
    post:
      summary: Unlock a URL (Synchronous)
      description: |
        Submit a URL for synchronous unblocking. Bright Data returns the rendered response (HTML,
        JSON, or raw bytes) once the page is unlocked. Use the asynchronous endpoints for long-running
        targets or batch flows.
      operationId: unlockSync
      tags: [Unlock]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [url, zone]
              properties:
                url: { type: string, format: uri }
                zone: { type: string, description: Web Unlocker zone name. }
                country: { type: string, description: ISO 3166-1 alpha-2 country code. }
                format: { type: string, enum: [raw, json] }
                method: { type: string, enum: [GET, POST] }
                data: { type: string }
      responses:
        "200":
          description: Unlocked response.
          content:
            application/json: { schema: { type: object, additionalProperties: true } }
            text/html: { schema: { type: string } }
  /unblocker/req:
    post:
      summary: Submit Asynchronous Unlock Request
      operationId: unlockAsync
      tags: [Unlock]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [url, zone]
              properties:
                url: { type: string, format: uri }
                zone: { type: string }
                country: { type: string }
                response_id: { type: string, description: Optional caller-provided correlation id. }
                callback_url: { type: string, format: uri, description: Webhook for completion. }
                format: { type: string, enum: [raw, json] }
      responses:
        "200":
          description: Submitted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  response_id: { type: string }
  /unblocker/get_result:
    get:
      summary: Get Asynchronous Unlock Result
      operationId: getUnlockResult
      tags: [Unlock]
      parameters:
        - { name: response_id, in: query, required: true, schema: { type: string } }
      responses:
        "200":
          description: Result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status: { type: string, enum: [pending, ready, failed] }
                  result: { type: object, additionalProperties: true }
                  status_code: { type: integer }
        "202":
          description: Not yet ready.
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer