Captcha Solver Available

BLS Solver

High-accuracy solution for BLS Captchas of any difficulty.

CaptchaAI is a powerful BLS CAPTCHA solver for developers and automation systems. Easily solve BLS CAPTCHA challenges and bypass BLS CAPTCHA verification in booking and appointment workflows with our BLS CAPTCHA solving service, offering fast token generation and scalable concurrency.

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

How to Solve BLS CAPTCHA

CaptchaAI provides automated BLS Captcha solving for developers and automation systems. 
Our BLS Captcha solver allows you to solve BLS Captcha and bypass BLS Captcha verification using a simple API workflow.

Step 1: Prepare the Grid Images and Instruction

  • Extract all 9 images from the grid as separate images
  • Convert each image to Base64 data URI format: data:image/gif;base64,R0lGODlh...
  • Identify the numeric instruction code (e.g., 664, 123, 546)

The grid cells are numbered in reading order:

PYTHON
1 2 3
4 5 6
7 8 9

Step 2: Submit the Task to CaptchaAI

Send a POST request to https://ocr.captchaai.com/in.php with all 9 images and the instruction code.

PYTHON
import requests

# Prepare the data
data = {
    'key': 'YOUR_API_KEY',
    'method': 'bls',
    'instructions': '664',
    'json': '1'
}

# Add all 9 base64 images
files = {f'image_base64_{i+1}': (None, images[i]) for i in range(9)}

response = requests.post('https://ocr.captchaai.com/in.php', data=data, files=files)
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, 4, 7, 8]
    print(f"Selected cells: {solution}")

Step 4: Apply the Solution

The response contains an array of cell indices (1–9) that match the instruction. For example:

  • [1, 4, 7, 8] means cells 1, 4, 7, and 8 contain the matching pattern
  • Click or select these cells to complete the captcha

Developer Quick Start

Solve BLS Captcha Using CaptchaAI API

Integrate BLS Captcha solving easily using the CaptchaAI API.
Use ready-to-run examples to automate BLS Captcha verification flows quickly.


import requests
import time
import json

API_KEY = "YOUR_API_KEY_HERE"
INSTRUCTION = "123"  # Numeric instruction code

# Prepare 9 base64 data URIs (one for each grid cell)
images = [
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
    "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
]

# Submit captcha
data = {
    'key': API_KEY,
    'method': 'bls',
    'instructions': INSTRUCTION,
    'json': '1'
}

files = {}
for i, img in enumerate(images, 1):
    files[f'image_base64_{i}'] = (None, img)

response = requests.post('https://ocr.captchaai.com/in.php', data=data, files=files)
result = response.json()

if result.get('status') == 1:
    task_id = result.get('request')
    print(f"Task ID: {task_id}")
    
    # Wait and get result
    time.sleep(10)
    while True:
        res = requests.get('https://ocr.captchaai.com/res.php', params={
            'key': API_KEY,
            'action': 'get',
            'id': task_id,
            'json': '1'
        }).json()
        
        if res.get('status') == 1:
            solution = json.loads(res.get('request'))
            print(f"Solution: {solution}")
            break
        elif res.get('request') == 'CAPCHA_NOT_READY':
            time.sleep(5)
        else:
            print(f"Error: {res}")
            break
else:
    print(f"Error: {result}")
const axios = require('axios');
const FormData = require('form-data');

const API_KEY = 'YOUR_API_KEY_HERE';
const INSTRUCTION = '123';  // Numeric instruction code

// Prepare 9 base64 data URIs (one for each grid cell)
const images = [
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
  'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
];

async function solveBLSCaptcha() {
  // Submit captcha
  const form = new FormData();
  form.append('key', API_KEY);
  form.append('method', 'bls');
  form.append('instructions', INSTRUCTION);
  form.append('json', '1');
  
  for (let i = 0; i < 9; i++) {
    form.append(`image_base64_${i + 1}`, images[i]);
  }

  try {
    const response = await axios.post('https://ocr.captchaai.com/in.php', form, {
      headers: form.getHeaders()
    });
    
    const data = response.data;
    if (data.status === 1) {
      const taskId = data.request;
      console.log(`Task ID: ${taskId}`);
      
      // Wait and get result
      await new Promise(resolve => setTimeout(resolve, 10000));
      
      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) {
          const solution = JSON.parse(result.data.request);
          console.log(`Solution: ${solution}`);
          break;
        } else if (result.data.request === 'CAPCHA_NOT_READY') {
          await new Promise(resolve => setTimeout(resolve, 5000));
        } else {
          console.error('Error:', result.data);
          break;
        }
      }
    } else {
      console.error('Error:', data);
    }
  } catch (error) {
    console.error('Error:', error.message);
  }
}

solveBLSCaptcha();
<?php

$API_KEY = 'YOUR_API_KEY_HERE';
$INSTRUCTION = '123';  // Numeric instruction code

// Prepare 9 base64 data URIs (one for each grid cell)
$images = [
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
];

// Submit captcha using multipart form data
$ch = curl_init('https://ocr.captchaai.com/in.php');

$postData = [
    'key' => $API_KEY,
    'method' => 'bls',
    'instructions' => $INSTRUCTION,
    'json' => '1'
];

for ($i = 0; $i < 9; $i++) {
    $postData["image_base64_" . ($i + 1)] = $images[$i];
}

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));

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

if ($response['status'] == 1) {
    $taskId = $response['request'];
    echo "Task ID: $taskId\n";
    
    // Wait and get result
    sleep(10);
    
    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) {
            $solution = json_decode($result['request'], true);
            echo "Solution: " . json_encode($solution) . "\n";
            break;
        } else if ($result['request'] == 'CAPCHA_NOT_READY') {
            sleep(5);
        } else {
            echo "Error: " . json_encode($result) . "\n";
            break;
        }
    }
} else {
    echo "Error: " . json_encode($response) . "\n";
}

?>

FAQ

Frequently Asked Questions

BLS captcha typically uses grid-based image selection challenges to prevent automated submissions.

Automated solving can be achieved through grid recognition and token generation workflows.

Failures may occur due to dynamic image updates or incorrect grid response handling.

Yes. Although both may use grid-based selection, BLS captcha implementations differ in verification structure.

Need more help? Check CaptchaAI Help Center

channel avatar
CaptchaAI
online

Welcome 👋

Contact Us On Telegram!

Contact Team
Telegram