#
Python SDK
Official Python SDK for CaptchaSolv. Async support, automatic polling, and type hints included.
pip install captchasolv
# For async: pip install captchasolv[async]
#
Quick Start
from captchasolv import CaptchaSolv
solver = CaptchaSolv("YOUR_API_KEY")
result = solver.turnstile(
website_url="https://example.com",
website_key="0x4AAAAAAABS7vwvV6VFfMcD"
)
print(result.solution.token)
import asyncio
from captchasolv import AsyncCaptchaSolv
async def main():
async with AsyncCaptchaSolv("YOUR_API_KEY") as solver:
result = await solver.turnstile(
website_url="https://example.com",
website_key="0x4AAAAAAABS7vwvV6VFfMcD"
)
print(result.solution.token)
asyncio.run(main())
#
Methods
#
Cloudflare Turnstile
result = solver.turnstile(
website_url="https://example.com",
website_key="0x4AAAAAAABS7vwvV6VFfMcD",
proxy="http://user:pass@ip:port", # optional
user_agent="Mozilla/5.0 ..." # optional
)
#
reCAPTCHA v3
result = solver.recaptcha_v3(
website_url="https://example.com",
website_key="6Le-xxxxx",
page_action="login", # optional
)
#
GeeTest v4
result = solver.geetest_v4(
website_url="https://example.com",
website_key="captcha_id_here",
)
#
Akamai
result = solver.akamai(
website_url="https://example.com",
akamai_script="https://example.com/akam/13/xxxxx",
data={"_abck": "...", "bm_sz": "..."}, # optional
)
print(result.solution.cookies)
#
Kasada
result = solver.kasada(
website_url="https://example.com",
pjs="https://example.com/{uuid1}/{uuid2}/p.js",
v="i-1.18.2", # optional
)
print(result.solution.headers)
#
DataDome Tags
#
AWS WAF
result = solver.aws_waf(
website_url="https://example.com",
aws_key="AWS_KEY", # optional
)
All methods accept optional proxy and user_agent parameters.
#
Generic Solve
from captchasolv import TaskType
result = solver.solve(
task_type=TaskType.TURNSTILE,
website_url="https://example.com",
website_key="0x4AAAAAAABS7vwvV6VFfMcD",
)
#
Polling Mode
task_id = solver.create_task(
task_type=TaskType.TURNSTILE,
website_url="https://example.com",
website_key="0x4AAAAAAABS7vwvV6VFfMcD"
)
result = solver.wait_for_result(task_id, timeout=120)
#
Balance
balance = solver.get_balance()
#
Error Handling
from captchasolv import (
CaptchaSolvError,
InvalidKeyError,
LimitExceededError,
CaptchaUnsolvableError,
TaskNotFoundError,
)
try:
result = solver.turnstile(...)
except InvalidKeyError:
print("Invalid API key")
except LimitExceededError:
print("Balance exhausted")
except CaptchaUnsolvableError:
print("Failed — retry")
except CaptchaSolvError as e:
print(f"[{e.error_code}]: {e.error_description}")
#
Configuration
solver = CaptchaSolv(
api_key="YOUR_API_KEY",
base_url="https://v1.captchasolv.com",
timeout=130.0,
poll_interval=3.0,
)
#
Response Object
result.status # "ready" or "processing"
result.is_ready # True if solved
result.cost # Cost string
result.solution.token # Token
result.solution.user_agent # User agent used
result.solution.cookies # Cookies dict (Akamai, DataDome)
result.solution.headers # Headers dict (Kasada)
result.solution.raw # Raw response dict