Captcha Solver Available

Grid Image Solver

High-accuracy solution for Grid Image captchas of any difficulty.

CaptchaAI provides a powerful Grid Image CAPTCHA solver for developers and automation systems. Easily solve reCAPTCHA grid image challenges and bypass reCAPTCHA image verification workflows with our grid image CAPTCHA solving service, offering fast responses and scalable concurrency.

  • > 99% success rate
  • Thread-based subscription
  • Unlimited solving
  • Per 1,000: Custom quote
  • No per-captcha billing
Grid Image
Product
Success Rate
Speed
Subscription
Per 1,000
How to bypass
Grid Image
High-accuracy solution for Grid Image captchas of any difficulty.
99%+
Success Rate
< 1 sec
Typical solving time
Custom plan
Unlimited solving
Custom quote
Per 1,000

How to Solve Grid Image CAPTCHA

CaptchaAI fully supports Grid Image CAPTCHA solving Our grid image solver enables you to solve reCAPTCHA image challenges
and bypass reCAPTCHA grid verification using a simple task submission process.

Step 1: Prepare the Image and Instruction

  • Capture the full reCAPTCHA grid image (not cropped)
  • Identify the instruction text (e.g., "crosswalks", "traffic lights", "cars")
  • Determine grid size: 3×3 or 4×4

The grid cells are numbered in reading order:

PYTHON
3×3 Grid:          4×4 Grid:
1 2 3              1  2  3  4
4 5 6              5  6  7  8
7 8 9              9  10 11 12
                   13 14 15 16

Step 2: Submit the Task to CaptchaAI

Send a POST request to https://ocr.captchaai.com/in.php with the image file and instruction.

PYTHON
import requests

# Prepare the data
with open('grid_image.jpg', 'rb') as f:
    files = {'file': f}
    data = {
        'key': 'YOUR_API_KEY',
        'method': 'post',
        'grid_size': '3x3',
        'img_type': 'recaptcha',
        'instructions': 'crosswalks',
        'json': '1'
    }
    
    response = requests.post('https://ocr.captchaai.com/in.php', files=files, data=data)
    result = response.json()
    task_id = result['request']

Step 3: Retrieve the Solution

Wait 5 seconds, then poll for the result using a GET request to https://ocr.captchaai.com/res.php:

PYTHON
import time
import json

time.sleep(5)  # Wait 5 seconds

params = {
    'key': 'YOUR_API_KEY',
    'action': 'get',
    'id': task_id,
    'json': '1'
}

response = requests.get('https://ocr.captchaai.com/res.php', params=params)
result = response.json()

if result['status'] == 1:
    solution = json.loads(result['request'])  # e.g., [1, 3, 6, 9]
    print(f"Grid cells to click: {solution}")

Step 4: Apply the Solution

The response contains an array of cell indices that match the instruction. For example:

  • [1, 3, 6, 9] means cells 1, 3, 6, and 9 contain the matching objects
  • Click or select these cells in your automation script to complete the captcha

Developer Quick Start

Solve Grid Image Captcha Using CaptchaAI API

Integrate grid image captcha solving easily using the CaptchaAI API.
Use ready-to-run examples to automate grid-based verification challenges quickly.

import requests
import time
import base64

API_KEY = "YOUR_API_KEY_HERE"
INSTRUCTIONS = "crosswalks"  # What to select (e.g., "traffic lights", "cars")
GRID_SIZE = "3x3"  # "3x3" or "4x4"

# Read and encode image
with open("grid_captcha.jpg", "rb") as f:
    image_data = base64.b64encode(f.read()).decode('utf-8')

# Submit captcha
response = requests.post("https://ocr.captchaai.com/in.php", data={
    'key': API_KEY,
    'method': 'base64',
    'img_type': 'recaptcha',
    'body': image_data,
    'instructions': INSTRUCTIONS,
    'grid_size': GRID_SIZE,
    'json': 1
})

task_id = response.json()['request']
print(f"Task ID: {task_id}")

# Wait and get result
time.sleep(15)
while True:
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        'key': API_KEY,
        'action': 'get',
        'id': task_id,
        'json': 1
    }).json()
    
    if result['status'] == 1:
        print(f"Tiles to click: {result['request']}")
        break
    time.sleep(5)
const axios = require('axios');
const fs = require('fs');

const API_KEY = 'YOUR_API_KEY_HERE';
const INSTRUCTIONS = 'crosswalks';  // What to select (e.g., 'traffic lights', 'cars')
const GRID_SIZE = '3x3';  // '3x3' or '4x4'

async function solveCaptcha() {
  // Read and encode image
  const imageBuffer = fs.readFileSync('grid_captcha.jpg');
  const imageData = imageBuffer.toString('base64');
  
  // Submit captcha
  const formData = new URLSearchParams({
    key: API_KEY,
    method: 'base64',
    img_type: 'recaptcha',
    body: imageData,
    instructions: INSTRUCTIONS,
    grid_size: GRID_SIZE,
    json: 1
  });
  
  const submitRes = await axios.post('https://ocr.captchaai.com/in.php', formData);
  const taskId = submitRes.data.request;
  console.log(`Task ID: ${taskId}`);
  
  // Wait and get result
  await new Promise(resolve => setTimeout(resolve, 15000));
  
  while (true) {
    const result = await axios.get('https://ocr.captchaai.com/res.php', {
      params: { key: API_KEY, action: 'get', id: taskId, json: 1 }
    });
    
    if (result.data.status === 1) {
      console.log(`Tiles to click: ${result.data.request}`);
      break;
    }
    await new Promise(resolve => setTimeout(resolve, 5000));
  }
}

solveCaptcha();
<?php

$API_KEY = 'YOUR_API_KEY_HERE';
$INSTRUCTIONS = 'crosswalks';  // What to select (e.g., 'traffic lights', 'cars')
$GRID_SIZE = '3x3';  // '3x3' or '4x4'

// Read and encode image
$imageData = base64_encode(file_get_contents('grid_captcha.jpg'));

// Submit captcha
$ch = curl_init('https://ocr.captchaai.com/in.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'key' => $API_KEY,
    'method' => 'base64',
    'img_type' => 'recaptcha',
    'body' => $imageData,
    'instructions' => $INSTRUCTIONS,
    'grid_size' => $GRID_SIZE,
    'json' => 1
]));

$response = json_decode(curl_exec($ch), true);
curl_close($ch);

$taskId = $response['request'];
echo "Task ID: $taskId\n";

// Wait and get result
sleep(15);

while (true) {
    $ch = curl_init('https://ocr.captchaai.com/res.php?' . http_build_query([
        'key' => $API_KEY,
        'action' => 'get',
        'id' => $taskId,
        'json' => 1
    ]));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = json_decode(curl_exec($ch), true);
    curl_close($ch);
    
    if ($result['status'] == 1) {
        echo "Tiles to click: " . json_encode($result['request']) . "\n";
        break;
    }
    sleep(5);
}

?>

FAQ

Frequently Asked Questions

 A Grid Image CAPTCHA is a verification method where users must select specific images from a grid based on a given instruction (e.g., “select all traffic lights”). It is widely used across different CAPTCHA systems to distinguish humans from bots. 

Grid Image captchas can be solved by identifying required objects within the image grid and submitting the correct selection programmatically.

Yes. Grid image selection is a core part of Google reCAPTCHA v2, typically triggered when additional verification is required after the initial checkbox or risk analysis.

Failures may occur due to dynamic image refresh, incorrect object recognition, or expired verification sessions.

Need more help? Check CaptchaAI Help Center

channel avatar
CaptchaAI
online

Welcome 👋

Contact Us On Telegram!

Contact Team
Telegram