GeeTest v3/v4 Solver, solved in 5.0s.
Solve GeeTest slider, click, and icon challenges. Supports both v3 (gt + challenge) and v4 (captchaId) formats.
GeeTest is a popular captcha used by many Chinese and international sites. It offers multiple challenge types: slider puzzles (drag to complete the image), click-in-order (click words/icons in sequence), and icon selection. GeeTest v3 uses a 'gt' key + server-generated 'challenge' value. GeeTest v4 uses a simpler 'captchaId' format.
Quick Integration
captchaId-based widgets. Send just the captchaId — we return the lot_number / pass_token / gen_time / captcha_output tuple.
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "GeeTestTaskProxyLess",
"websiteURL": "https://example.com",
"captchaId": "647f5ed2ed8acb4be36784e01556bb71"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
Using the result
captchaId-based widgets — submit these five fields; your backend forwards them to GeeTest's /validate.
# Step 3 — GeeTest v4: submit these to your site's form / endpoint
sol = result["solution"]
requests.post("https://target.example.com/verify", data={
"captcha_id": sol["captcha_id"],
"lot_number": sol["lot_number"],
"pass_token": sol["pass_token"],
"gen_time": sol["gen_time"],
"captcha_output": sol["captcha_output"],
})1. Send Payload
Dispatch your GeeTestTaskProxyLess to our processing cluster via the secure API endpoint.
2. Solving Engine
Capzy's proprietary solver handles slider and click variants and returns the validation token plus session cookies needed to submit the form.
3. Get Result
Poll getTaskResult for the validated token, then finalize your automated request.
Using your own proxy
Use GeeTestTask instead of GeeTestTaskProxyLess to route the solve through your own proxy — useful when the target site checks that the solving IP matches the submitting IP.
import requests, time
API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"
# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "GeeTestTask",
"websiteURL": "https://example.com",
"captchaId": "647f5ed2ed8acb4be36784e01556bb71",
"proxyType": "http",
"proxyAddress": "123.45.67.89",
"proxyPort": "8080",
"proxyLogin": "user",
"proxyPassword": "pass"
}
}).json()
task_id = task["taskId"]
print(f"Task created: {task_id}")
# Step 2: Poll for result
while True:
result = requests.post(f"{API}/getTaskResult", json={
"clientKey": KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
print("Solved!", result["solution"])
break
elif result["status"] == "failed":
print("Failed:", result.get("errorDescription"))
break
time.sleep(1)
Additional proxy parameters
proxyTypetypestringreqyesProxy protocol: http, https, socks4, or socks5proxyAddresstypestringreqyesProxy IP address or hostnameproxyPorttypenumberreqyesProxy port numberproxyLogintypestringreqnoProxy username (if auth required)proxyPasswordtypestringreqnoProxy password (if auth required)userAgenttypestringreqnoUser-Agent string to use. Must match the UA you use when submitting the tokenTask Parameters
API SpectypetypestringreqyesGeeTestTaskProxyLess or GeeTestTaskwebsiteURLtypestringreqyesThe page URLcaptchaIdtypestringreqnoGeeTest v4 captcha ID (use this OR gt+challenge)gttypestringreqnoGeeTest v3 'gt' parameterchallengetypestringreqnoGeeTest v3 'challenge' parameter (server-generated, single-use)Response Shape
captcha_idtypestringGeeTest v4: the captcha ID echoed backlot_numbertypestringGeeTest v4: lot numberpass_tokentypestringGeeTest v4: pass token for server validationgen_timetypestringGeeTest v4: generation timestampcaptcha_outputtypestringGeeTest v4: captcha output stringExample response
{
"errorId": 0,
"status": "ready",
"solution": {
"captcha_id": "647f5ed2ed8acb4be36784e01556bb71",
"lot_number": "8a2c4e5b3f1d4567a9b8c0d2e3f4a5b6",
"pass_token": "<long pass token from validation server>",
"gen_time": "1735689600",
"captcha_output": "<base64-encoded captcha output>"
}
}Error response
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Solver gave up."
}Features
Pricing & Stats
Start solving geetest v3/v4.
$0.10 in free credits — no card. ~250 free solves to test before you spend.