Getting Started

How to Pick the Right CaptchaAI Thread Count for Your Workload

CaptchaAI plans are priced by concurrent thread count. More threads = more CAPTCHAs solved simultaneously. Picking the right number means you don't overpay for idle capacity or underpay and constantly hit ERROR_NO_SLOT_AVAILABLE.

This guide gives you the formula to calculate exactly what you need.


The core formula

Required threads = Peak solves per minute × Avg solve time (seconds) / 60

Or equivalently:

Required threads = Peak solves per second × Avg solve time (seconds)

Example: You need 120 reCAPTCHA v2 solves per minute at peak. reCAPTCHA v2 averages 15 seconds per solve.

Required threads = 120 solves/min × 15 seconds / 60 = 30 threads

The ADVANCE plan (50 threads, $90/month) would handle this comfortably, with 20 threads of headroom.


Average solve times by CAPTCHA type

Use these figures in your calculation:

CAPTCHA type Avg solve time Use in formula
Image/OCR 0.5 seconds 0.5
BLS CAPTCHA 0.8 seconds 0.8
Grid Image 0.9 seconds 0.9
reCAPTCHA v3 4 seconds 4
Cloudflare Turnstile 7 seconds 7
Cloudflare Challenge 12 seconds 12
reCAPTCHA v2 15 seconds 15
reCAPTCHA v2 Invisible 20 seconds 20
reCAPTCHA Enterprise 20 seconds 20
GeeTest v3 10 seconds 10

Thread calculator in Python

def required_threads(peak_solves_per_minute, avg_solve_seconds, headroom_factor=1.25):
    """
    Calculate required CaptchaAI threads.

    Args:
        peak_solves_per_minute: Maximum solves needed per minute at peak
        avg_solve_seconds: Average solve time in seconds for your CAPTCHA type
        headroom_factor: Safety margin (1.25 = 25% headroom, recommended)

    Returns:
        Minimum recommended thread count
    """
    base_threads = (peak_solves_per_minute * avg_solve_seconds) / 60
    return int(base_threads * headroom_factor) + 1

# Solve type → avg seconds
SOLVE_TIMES = {
    "image_ocr": 0.5,
    "bls": 0.8,
    "grid_image": 0.9,
    "recaptcha_v3": 4,
    "cloudflare_turnstile": 7,
    "cloudflare_challenge": 12,
    "recaptcha_v2": 15,
    "recaptcha_invisible": 20,
    "recaptcha_enterprise": 20,
    "geetest_v3": 10,
}

PLANS = [
    ("BASIC", 5, 15),
    ("STANDARD", 15, 30),
    ("ADVANCE", 50, 90),
    ("PREMIUM", 100, 170),
    ("CORPORATE", 150, 240),
    ("ENTERPRISE", 200, 300),
    ("VIP-1", 1000, 1500),
    ("VIP-2", 3000, 4500),
    ("VIP-3", 5000, 7500),
]

def recommend_plan(peak_per_minute, captcha_type):
    solve_time = SOLVE_TIMES.get(captcha_type)
    if not solve_time:
        raise ValueError(f"Unknown CAPTCHA type: {captcha_type}")

    threads_needed = required_threads(peak_per_minute, solve_time)

    for plan_name, threads, price in PLANS:
        if threads >= threads_needed:
            effective_cost = price / (peak_per_minute * 60 * 16 * 30)
            print(f"Recommended: {plan_name} ({threads} threads, ${price}/month)")
            print(f"  Threads needed: {threads_needed}")
            print(f"  Effective cost per solve at peak: ${effective_cost:.8f}")
            return plan_name, threads, price

    print(f"Needs {threads_needed} threads — contact CaptchaAI for custom plan")

# Examples
recommend_plan(peak_per_minute=10, captcha_type="recaptcha_v2")
# → BASIC (5 threads, $15/month)

recommend_plan(peak_per_minute=60, captcha_type="recaptcha_v2")
# → ADVANCE (50 threads, $90/month)

recommend_plan(peak_per_minute=200, captcha_type="cloudflare_turnstile")
# → ENTERPRISE (200 threads, $300/month)

recommend_plan(peak_per_minute=5000, captcha_type="image_ocr")
# → BASIC (5 threads, $15/month) — image is so fast, 5 threads handle enormous volume

Common workload examples

Small monitoring tool (price checker, job board watcher)

  • 5 CAPTCHA checks every 30 minutes
  • Peak: ~1 solve/minute
  • CAPTCHA type: reCAPTCHA v2 (15s)
  • Required threads: (1 × 15) / 60 = 0.25 → 1 thread (BASIC)
  • Plan: BASIC at $15/month

Medium scraping pipeline (e-commerce data)

  • 200 product pages/hour, each with a Cloudflare Turnstile
  • Peak: 200/60 = 3.3 solves/minute
  • CAPTCHA type: Cloudflare Turnstile (7s)
  • Required threads: (3.3 × 7) / 60 = 0.39 × 1.25 = 0.49 → 1–2 threads (BASIC)
  • Plan: BASIC at $15/month

Production scraping team (real estate, finance data)

  • 1,000 pages/hour across 5 scrapers, reCAPTCHA v2
  • Peak: 1,000/60 = 16.7 solves/minute
  • Required threads: (16.7 × 15) / 60 × 1.25 = 5.2 → 6 threads (STANDARD)
  • Plan: STANDARD at $30/month

High-volume pipeline (market research SaaS)

  • 10,000 reCAPTCHA v2 solves/hour at peak
  • Peak: 166.7 solves/minute
  • Required threads: (166.7 × 15) / 60 × 1.25 = 52 → 55 threads (ADVANCE)
  • Plan: ADVANCE at $90/month

Mixed CAPTCHA types

If your operation handles multiple types, calculate threads per type and sum them:

Mixed pipeline:

  - 50 reCAPTCHA v2/min → (50 × 15) / 60 = 12.5 threads
  - 100 Cloudflare Turnstile/min → (100 × 7) / 60 = 11.7 threads
  - 500 image OCR/min → (500 × 0.5) / 60 = 4.2 threads

Total: 12.5 + 11.7 + 4.2 = 28.4 → 36 threads with 25% headroom

Plan: ADVANCE (50 threads, $90/month) — 39% headroom

Signs you've picked the wrong plan

Too many threads (overpaying):

  • ERROR_NO_SLOT_AVAILABLE never appears
  • Thread utilization dashboard shows < 50% consistently
  • Solution: Drop to the next tier down at renewal

Too few threads (bottlenecked):

  • ERROR_NO_SLOT_AVAILABLE appears frequently
  • Solve times in your pipeline exceed CaptchaAI's published averages (queue wait adding delay)
  • Pipeline throughput is capped below what your other infrastructure can handle

FAQ

What if my workload is highly variable? Size for your peak load with 25% headroom. During low periods, unused threads just sit idle — you still pay the flat monthly fee, but there's no penalty for underutilization.

Can I add threads mid-month without switching plans? Subscribe to an additional plan. Threads stack. If you're on BASIC (5T) and need 8T temporarily, adding another BASIC gives 10T for $30 total.

Is there a way to monitor thread utilization? The CaptchaAI dashboard shows current and historical usage. Use this to validate your thread estimate after the first week of production.

Does reCAPTCHA v2 always take 15 seconds? No. The 15-second figure is an average. Solves range from a few seconds to 60 seconds. Plan for the average, size headroom for peaks.


Calculate and commit

Use the formula, pick your plan, and start solving. If you over- or underestimate, adjusting your plan is straightforward — no configuration changes to your code needed. See all plans at captchaai.com.

Discussions (0)

No comments yet.