A public API that solves Google reCAPTCHA v3 & Enterprise the only way that works: real Chrome, real fingerprints, real interactions. Every request rotates through 162,000 unique device profiles. Every solve begins with a human-shaped mouse trail.
Every layer of the solver targets a specific signal Google uses to score reCAPTCHA v3. This is not a scraper wrapped in Puppeteer — it's an engineered pipeline.
navigator.webdriver, chrome.runtime, permissions, WebGL, iframe.contentWindow, media codecs. Google's detector suite runs blind.9 Chrome UAs × 6 viewports × 6 timezones × 5 GPUs × 10 CPU cores × 10 memory sizes. Same server, different device.execute() fires, the solver traces natural mouse curves, scrolls the page, waits 2–4s. Google's pageInteractionEvents sees a real user, not a headless bot.404 on deep routes. The solver detects this, falls back to the domain root, so the token binds to the correct hostname — not about:blank.How solvr compares to the market on reCAPTCHA v3 score, latency, and cost per 1k solves.
No signup. No card. Watch the solver execute step-by-step, then take the token.
POST some JSON, receive a token. That's it. Full REST API — works with any HTTP client on any platform.
# Solve a reCAPTCHA v3 challenge curl -X POST https://127.0.0.1:3210/solve \ -H "Content-Type: application/json" \ -H "X-API-Key: *** \ -d '{ "siteKey": "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu", "action": "submit", "url": "https://target-site.com/page" }'
import requests resp = requests.post( "https://127.0.0.1:3210/solve", headers={"X-API-Key": "free"}, json={ "siteKey": "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu", "action": "submit", "url": "https://target-site.com/page", }, timeout=45, ) token = resp.json()["token"]
const res = await fetch("https://127.0.0.1:3210/solve", { method: "POST", headers: { "Content-Type": "application/json", "X-API-Key": "free", }, body: JSON.stringify({ siteKey: "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu", action: "submit", url: "https://target-site.com/page", }), }); const { token } = await res.json();
body, _ := json.Marshal(map[string]string{ "siteKey": "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu", "action": "submit", "url": "https://target-site.com/page", }) req, _ := http.NewRequest("POST", "https://127.0.0.1:3210/solve", bytes.NewBuffer(body)) req.Header.Set("X-API-Key", "free") req.Header.Set("Content-Type", "application/json") resp, _ := http.DefaultClient.Do(req)
$ch = curl_init('https://127.0.0.1:3210/solve'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'X-API-Key: __KEY_...>, ], CURLOPT_POSTFIELDS => json_encode([ 'siteKey' => '6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu', 'action' => 'submit', 'url' => 'https://target-site.com/page', ]), ]); $token = json_decode(curl_exec($ch), true)['token'];
let body = json!({ "siteKey": "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu", "action": "submit", "url": "https://target-site.com/page", }); let resp = reqwest::Client::new() .post("https://127.0.0.1:3210/solve") .header("X-API-Key", "free") .json(&body) .send().await?;
| Field | Type | Required | Description |
|---|---|---|---|
siteKey |
string | yes | reCAPTCHA site key from the target page — starts with 6L… |
action |
string | no | Action name expected by the target. Defaults to submit. Must match exactly — check the site's JS bundle. |
url |
string | recommended | Target page URL. Binds hostname to the token — critical for Google score. |
enterprise |
boolean | no | Set true for reCAPTCHA Enterprise (uses grecaptcha.enterprise.execute). |
warmup |
boolean | no | Enable human warmup (default true). Disable for max speed if you don't need max score. |
Free tier gets you 10 req/min · 500 req/month. Higher volumes & dedicated keys through Telegram.