What is Yandex SmartCaptcha?
Yandex SmartCaptcha is used by Yandex services and Russian websites. It presents a checkbox ('I'm not a robot') and escalates to a synthetic-tone audio challenge or visual puzzle when it detects suspicious traffic. Tokens are single-use with a 5-minute TTL. The customer validates them server-side via Yandex's API.
How it works
Send Task
POST your YandexSmartCaptchaTaskProxyLess with the target URL and sitekey to our API. We'll queue it instantly.
We Solve
Capzy's proprietary solver returns valid Yandex SmartCaptcha tokens. ProxyLess is routed for you; YandexSmartCaptchaTask with your own proxy gives the highest success rate.
Get Token
Poll getTaskResult — when status is 'ready', the solution contains the token to inject into the target page.
Quick integration
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": "YandexSmartCaptchaTaskProxyLess",
"websiteKey": "ysc1_bFdbbET5WBnPTvoE5jTXxxxx",
"websiteURL": "https://example.ru/login"
}
}).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)
# Step 3: Use the result — paste the token into g-recaptcha-response
token = result["solution"]["gRecaptchaResponse"]
# Browser side: document.querySelector('textarea[name="g-recaptcha-response"]').value = token
# Or include it in your form POST:
resp = requests.post("https://target.example.com/login", data={
"username": "...",
"password": "...",
"g-recaptcha-response": token,
})
print(resp.status_code)Using your own proxy
Use YandexSmartCaptchaTask instead of YandexSmartCaptchaTaskProxyLess to route the solve through your own proxy. This is useful when the target site checks the IP that solved the captcha matches the IP submitting the form.
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": "YandexSmartCaptchaTask",
"proxyPort": "8080",
"proxyType": "http",
"proxyLogin": "user",
"websiteKey": "ysc1_bFdbbET5WBnPTvoE5jTXxxxx",
"websiteURL": "https://example.ru/login",
"proxyAddress": "123.45.67.89",
"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)
# Step 3: Use the result — paste the token into g-recaptcha-response
token = result["solution"]["gRecaptchaResponse"]
# Browser side: document.querySelector('textarea[name="g-recaptcha-response"]').value = token
# Or include it in your form POST:
resp = requests.post("https://target.example.com/login", data={
"username": "...",
"password": "...",
"g-recaptcha-response": token,
})
print(resp.status_code)additional proxy parameters
proxyTypetypestringreqyesProxy protocol: http or httpsproxyAddresstypestringreqyesProxy 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
typetypestringreqyesYandexSmartCaptchaTaskProxyLess or YandexSmartCaptchaTaskwebsiteURLtypestringreqyesThe page URLwebsiteKeytypestringreqyesThe sitekey (starts with ysc1_ or demo format)Solution response
tokentypestringThe Yandex SmartCaptcha clearance token. Drop into the `smart-token` or `yandex-captcha-token` form field, depending on the integration.gRecaptchaResponsetypestringAlias of `token`. Some sites integrate Yandex SmartCaptcha through a reCAPTCHA-compatible wrapper that expects this field name — submit either, whichever the form expects.Example response
Full getTaskResult response shape. The fields in the table above describe what's inside solution — the outer envelope (errorId, status) is identical for every captcha type.
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "dD9KbWxoLlh5Pm83cw==.long_yandex_smart_token_string",
"gRecaptchaResponse": "dD9KbWxoLlh5Pm83cw==.long_yandex_smart_token_string"
}
}Error response
Failures use the same envelope with errorId: 1 plus errorCode + errorDescription. See the error-code reference for the full list.
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Solver gave up — automatically refunded."
}Pending response
While the solver is still working, getTaskResult returns status: "processing". Poll every 1–2 seconds until ready or failed.
{
"errorId": 0,
"status": "processing"
}Features
task types
proxyless: YandexSmartCaptchaTaskProxyLess
with proxy: YandexSmartCaptchaTask