hCaptcha · reCAPTCHA · Cloudflare Turnstile

Solve any CAPTCHA.
One API call.

Send a sitekey and a page URL. Get back a working token. No queues to manage, no browser farm to run — just a token your request can use.

~6.2s
AVG RESPONSE
99.2%
SOLVE RATE
2.4M
TOKENS / MONTH
SELECT ALL TILES WITH A TRAFFIC LIGHT
// response
{ "success": true, "token": "P0_eyJ0eXAiOiJKV1QiLCJhbGc..." }
6.2s
AVG SOLVE TIME
99.2%
SUCCESS RATE
6
CAPTCHA TYPES SUPPORTED
24/7
UPTIME
Integration

Drop it into your stack.

Official SDKs for JavaScript, Python, and Go. Or skip the wrapper and call the REST API directly.

import { CapFF } from "@capff/sdk";

const capff = new CapFF(process.env.CAPFF_API_KEY);

const { token } = await capff.solve({
  type: "hcaptcha",
  sitekey: "10000000-ffff-ffff-ffff-000000000001",
  pageUrl: "https://example.com/login",
});

console.log(token); // "P0_eyJ0eXAiOiJKV1QiLCJhbGc..."
from capff import CapFF
import os

capff = CapFF(api_key=os.environ["CAPFF_API_KEY"])

result = capff.solve(
    type="hcaptcha",
    sitekey="10000000-ffff-ffff-ffff-000000000001",
    page_url="https://example.com/login",
)

print(result.token)  # "P0_eyJ0eXAiOiJKV1QiLCJhbGc..."
package main

import (
    "fmt"
    "os"

    "github.com/capff/capff-go"
)

func main() {
    client := capff.New(os.Getenv("CAPFF_API_KEY"))

    result, err := client.Solve(capff.Request{
        Type:    "hcaptcha",
        SiteKey: "10000000-ffff-ffff-ffff-000000000001",
        PageURL: "https://example.com/login",
    })
    if err != nil {
        panic(err)
    }

    fmt.Println(result.Token) // "P0_eyJ0eXAiOiJKV1QiLCJhbGc..."
}
# 1. Create a solve task
curl -X POST https://api.capff.dev/v1/solve \
  -H "Authorization: Bearer $CAPFF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "hcaptcha",
    "sitekey": "10000000-ffff-ffff-ffff-000000000001",
    "pageurl": "https://example.com/login"
  }'
# → { "id": "tsk_8f2a1c", "status": "processing" }

# 2. Poll for the result
curl https://api.capff.dev/v1/result/tsk_8f2a1c \
  -H "Authorization: Bearer $CAPFF_API_KEY"
# → { "status": "solved", "token": "P0_eyJ0eXAiOiJKV1QiLCJhbGc..." }
Process

How a token gets made.

Three calls, start to finish. No browser to babysit on your end.

01 / SEND

Send the challenge.

POST the sitekey and the page URL where the CAPTCHA is shown. That's the whole request.

02 / SOLVE

We solve it.

Our solving engine works the challenge and produces a token that the target site will accept.

03 / RETURN

Get your token.

Submit the token in your form or request exactly where the solved CAPTCHA response normally goes.

Coverage

Every major challenge type.

One integration, six CAPTCHA providers. Switch the type field, nothing else changes.

hCaptcha

Checkbox and image-grid challenges, both visible and invisible.

reCAPTCHA v2

"I'm not a robot" checkbox and image-selection fallback.

reCAPTCHA v3

Score-based, invisible challenges — returns a usable action token.

Cloudflare Turnstile

Managed and non-interactive widget modes.

FunCaptcha

Rotation and puzzle-style challenges from Arkose Labs.

GeeTest

Slide, gobang, and icon-matching challenge formats.

Pricing

Pay for tokens, not seats.

No minimums. Usage resets monthly, and unused volume discounts kick in automatically.

Pay as you go
$0.80 / 1,000 solves
  • All 6 CAPTCHA types
  • 20 requests / second
  • Community support
Start free
Team
$0.55 / 1,000 solves
  • All 6 CAPTCHA types
  • 100 requests / second
  • Priority queue
  • Email + chat support
Get API key
Enterprise
Custom
  • Dedicated capacity
  • Custom rate limits
  • SLA + uptime guarantee
  • Direct engineering line
Talk to us
FAQ

Good to know.

How fast is a typical solve?

Most hCaptcha and reCAPTCHA v2 tokens come back in 4–9 seconds. reCAPTCHA v3 and Turnstile are usually faster since there's no visual challenge to work through.

What happens if a token comes back invalid?

You're not charged for it. Failed solves are automatically retried once before they're returned as an error, so a bad token reaching you is rare.

Do I need to handle polling myself?

Only if you're calling the REST API directly. The JavaScript, Python, and Go SDKs poll for you and resolve once the token is ready.

Is there a rate limit?

Yes, tied to your plan — 20 req/s on Pay as you go, 100 req/s on Team. Enterprise plans set a custom ceiling.

What can I use this for?

CapFF is built for clearing CAPTCHA challenges your own automated requests encounter — QA testing, monitoring, and scraping your own or permitted properties. You're responsible for using tokens in line with the target site's terms.

Get started

Your first 500 solves are on us.

No credit card to start. Drop in an SDK and get a token in minutes.

Get API key View the docs