Google reCAPTCHA Solver API RELEASED

Ultra-fast, AI-driven solver for Google reCAPTCHA v2 Checkbox, 3x3 Grid, 4x4 YOLO Grid, Invisible & Enterprise challenges with 99.2% measured accuracy and < 350ms latency.

⚡ High-Speed Hybrid AI Pipeline: Powered by batch ONNX tile classification and YOLO11 instance segmentation. Automatically detects and returns exact grid tile indices for traffic lights, fire hydrants, crosswalks, buses, bicycles, and motorcycles in a single millisecond API call.

Supported Challenge Types

1. 3x3 Tile Grid (Classification)

Classifies 9 tiles against challenge title prompt (traffic lights, buses, fire hydrants, bicycles). Supports dynamic replacement tiles via focus_tiles.

grid: "3x3"

2. 4x4 YOLO Grid (Segmentation)

YOLO instance segmentation for objects spanning across multiple grid cells (crosswalks, bridges, large vehicles). Returns ordered indices (0-15).

grid: "4x4"

3. Token Bypass (v2 / v3 / Enterprise)

Returns complete g-recaptcha-response token ready for direct form injection without loading any browser images.

via: /in.php & /res.php

Endpoint Information

POST https://captchakings.com/api/recaptcha.php
💰 Pricing: $0.001 per solve ($1.00 / 1,000 solves) — Lowest rates in the industry with 99.9% uptime!
🔑 Authentication: Pass your API key via Authorization: Bearer ck_... header, X-API-Key header, or JSON field api_key.

Request Parameters

Parameter Type Required Description
grid / type string No Grid challenge format: "3x3" (default) or "4x4".
image_base64 / image string / file Yes The reCAPTCHA payload canvas image (Base64 string or multipart file upload).
challenge_title string Yes The instruction prompt (e.g. "traffic lights", "crosswalks", "fire hydrant", "bus", "bicycles", "motorcycles").
focus_tiles array Optional Array of tile numbers (e.g. [0, 4, 8]) to re-evaluate when dynamic replacement images fade in.
min_confidence float Optional Custom detection confidence threshold between 0.20 and 0.90 (default optimized dynamically per class).
api_key string Yes* Your CaptchaKings API key (optional if Authorization: Bearer header is sent).

Example Responses

1. 3x3 Tile Grid Classification Response

{
  "success": true,
  "type": "recaptcha_3x3",
  "grid": "3x3",
  "tiles_to_click": [0, 1, 4],
  "num_detections": 3,
  "challenge_title": "traffic lights",
  "confidence": 0.985,
  "processing_time": "0.182s",
  "billing": {
    "amount_charged": "0.001000",
    "balance_remaining": "9.999000",
    "plan": "professional"
  },
  "message": "reCAPTCHA 3x3 challenge solved successfully"
}

2. 4x4 YOLO Grid Segmentation Response

{
  "success": true,
  "type": "recaptcha_4x4",
  "grid": "4x4",
  "tiles_to_click": [5, 6, 9, 10],
  "num_detections": 2,
  "challenge_title": "crosswalks",
  "confidence": 0.972,
  "processing_time": "0.215s",
  "billing": {
    "amount_charged": "0.001000",
    "balance_remaining": "9.998000",
    "plan": "professional"
  },
  "message": "reCAPTCHA 4x4 challenge solved successfully"
}

Code Examples

Python (Requests)

import requests
import base64

API_KEY = "ck_your_api_key_here"
API_URL = "https://captchakings.com/api/recaptcha.php"

# Read captcha image file as Base64
with open("recaptcha_challenge.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode("utf-8")

payload = {
    "grid": "3x3",
    "image_base64": image_b64,
    "challenge_title": "traffic lights"
}

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(API_URL, json=payload, headers=headers)
data = response.json()

if data.get("success"):
    print("Tiles to click (0-8):", data["tiles_to_click"])
    print("Solve latency:", data["processing_time"])
else:
    print("Solve failed:", data.get("error"))

Node.js / JavaScript (Fetch / Axios)

const fs = require('fs');

async function solveRecaptcha() {
    const apiKey = 'ck_your_api_key_here';
    const imageBase64 = fs.readFileSync('recaptcha_challenge.png', { encoding: 'base64' });

    const response = await fetch('https://captchakings.com/api/recaptcha.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ' + apiKey
        },
        body: JSON.stringify({
            grid: '3x3',
            image_base64: imageBase64,
            challenge_title: 'traffic lights'
        })
    });

    const data = await response.json();
    if (data.success) {
        console.log('Click tiles:', data.tiles_to_click);
    } else {
        console.error('Error:', data.error);
    }
}

solveRecaptcha();

PHP (cURL)

<?php
$apiKey = 'ck_your_api_key_here';
$imagePath = 'recaptcha_challenge.png';
$imageBase64 = base64_encode(file_get_contents($imagePath));

$payload = [
    'grid'            => '3x3',
    'image_base64'    => $imageBase64,
    'challenge_title' => 'crosswalks'
];

$ch = curl_init('https://captchakings.com/api/recaptcha.php');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode($payload),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'Authorization: Bearer ' . $apiKey
    ]
]);

$result = curl_exec($ch);
curl_close($ch);

$data = json_decode($result, true);
if (!empty($data['success'])) {
    print_r($data['tiles_to_click']);
}
?>

cURL Command Line

curl -X POST https://captchakings.com/api/recaptcha.php \
  -H "Authorization: Bearer ck_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "grid": "3x3",
    "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
    "challenge_title": "traffic lights"
  }'

Automated Browser Solver Integration (Puppeteer / Playwright)

Below is the browser automation snippet to solve reCAPTCHA grid challenges inside Puppeteer or Playwright:

async function solveRecaptchaChallenge(bframe, apiKey) {
    // 1. Extract challenge instructions
    const promptText = await bframe.$eval('.rc-imageselect-desc-no-canonical strong, .rc-imageselect-desc strong', el => el.innerText.trim());
    
    // 2. Extract challenge grid table (3x3 or 4x4)
    const is4x4 = await bframe.$('.rc-imageselect-table-44') !== null;
    const gridType = is4x4 ? '4x4' : '3x3';
    
    // 3. Capture payload image
    const payloadEl = await bframe.$('.rc-image-tile-wrapper img');
    const imageBase64 = await payloadEl.screenshot({ encoding: 'base64' });

    // 4. Send request to CaptchaKings API
    const response = await fetch('https://captchakings.com/api/recaptcha.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ' + apiKey
        },
        body: JSON.stringify({
            grid: gridType,
            image_base64: imageBase64,
            challenge_title: promptText
        })
    });

    const result = await response.json();
    if (!result.success) throw new Error(result.error);

    // 5. Click the predicted tile squares
    const tiles = await bframe.$$('.rc-imageselect-tile, .rc-image-tile-target');
    for (const tileIndex of result.tiles_to_click) {
        if (tiles[tileIndex]) {
            await tiles[tileIndex].click();
            await new Promise(r => setTimeout(r, 200));
        }
    }

    // 6. Click Verify
    await bframe.click('#recaptcha-verify-button');
    return true;
}