Before you submit — these must be correct
If any of these are wrong, your token may be accepted by our solver but rejected or scored poorly by the target site.
- You do NOT need to send a User-Agent. We mint the _abck in a real Chrome browser and RETURN the exact User-Agent it used — pin THAT value on every subsequent request (Akamai binds the cookie to the UA + TLS fingerprint). If you must replay with a specific Chrome-family UA, pass it as `userAgent` and we'll mint with it; otherwise omit it and use the one we return.
- Any Akamai-protected site works — sites do NOT need to be pre-registered with us. Just submit the task with the target `websiteURL`; there's no allow-list to be added to.
- Cookies are IP-bound. Akamai cross-checks every request against the IP that earned the cookie — use the same proxy for the solve AND for the subsequent calls, or the cookies are rejected immediately. With `AntiAkamaiWebTaskProxyLess` you don't see the issuing IP, so use the ProxyLess variant only when you'll replay the request through Capzy on your behalf; otherwise use `AntiAkamaiWebTask` with your own proxy.
- Use the userAgent we return. Akamai correlates UA with the TLS fingerprint that produced the cookie. Pin the value from the response into your HTTP client — UA mismatch invalidates the session.
- Use a Chrome-compatible TLS stack on replay. Default Python urllib/requests TLS fails Akamai's Phase-1 check before the cookies are even evaluated. curl_cffi, tls-client, or a real browser work.
- Hitting a native mobile app endpoint that expects `X-acf-sensor-data`? That's the BMP variant — use /products/akamai-bmp instead. This Web solver doesn't generate mobile SDK sensor payloads.
Akamai Bot Manager — Web/Desktop, solved in 5.0s.
Bypass Akamai Bot Manager on web/desktop sites. Returns validated _abck (with ~0~), bm_sz, ak_bmsc cookies plus the matching User-Agent.
Akamai Bot Manager is one of the most widely deployed enterprise bot defense systems. On web/desktop deployments it collects 100+ browser signals via an obfuscated JS bundle (bmak), POSTs them as sensor_data, and validates the session via the _abck cookie. A validated _abck contains a `~0~` marker in its segments — e.g. `<hash>~0~<timestamp>~...`. Anything else means Akamai has either rejected the session (`~-1~`) or wants you to solve a secondary challenge (`~3~`). Akamai cross-references the cookie verdict with IP reputation (ASN check), TLS/JA3-JA4 fingerprint, and behavioral signals — all three must agree before a request to a protected endpoint succeeds. For native mobile apps (Android/iOS) that hit Akamai-protected APIs through the BMP SDK, use our separate /products/akamai-bmp solver instead — it returns sensor payloads + X-acf-sensor-data headers over a fast API.
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": "AntiAkamaiWebTask",
"websiteURL": "https://example.com/",
"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)
Using the result
# Step 3: Use the result — set every cookie on a session jar
sol = result["solution"]
session = requests.Session()
for c in sol["cookies"]:
session.cookies.set(c["name"], c["value"], domain=c.get("domain"), path=c.get("path", "/"))
session.headers["User-Agent"] = sol.get("userAgent", "")
# IMPORTANT: route through the SAME proxy you supplied at solve time
resp = session.get("https://target.example.com/", proxies={
"http": "http://USER:PASS@PROXY_HOST:PORT",
"https": "http://USER:PASS@PROXY_HOST:PORT",
})
print(resp.status_code, len(resp.text), "bytes")1. Send Payload
Dispatch your AntiAkamaiWebTask to our processing cluster via the secure API endpoint.
2. Solving Engine
Capzy's proprietary solver returns the validated Akamai cookies once the session is marked `~0~`. The solver returns the full cookie set (`_abck`, `bm_sz`, `ak_bmsc`, plus any secondary Akamai cookies the deployment issues), the exact User-Agent the browser used, and the host the cookies were validated against. Use `AntiAkamaiWebTaskProxyLess` to have Capzy handle the upstream IP, or `AntiAkamaiWebTask` with `proxyAddress`/`proxyPort` to pin the solve to a specific IP you'll reuse — Akamai cookies are IP-bound, so the IP that solves the challenge must be the IP that subsequently uses the cookies.
3. Get Result
Poll getTaskResult for the validated token, then finalize your automated request.
Task Parameters
API SpectypetypestringreqyesWhich variant you want. Use `AntiAkamaiWebTask` and pass your own `proxyAddress`/`proxyPort` — the cookies we return will be bound to YOUR proxy's IP so you can replay them yourself. Use `AntiAkamaiWebTaskProxyLess` only if Capzy will be making the next request on your behalf (we pick the IP, cookies are bound to OUR egress — you can't replay them from a different IP).websiteURLtypestringreqyesFull URL of the Akamai-protected page. Use a real protected URL on the target host — landing pages without bmak don't issue a validated _abck.userAgenttypestringreqnoOptional — you CAN pass your own User-Agent if you want us to mint with a specific Chrome-family value (send exactly what you'll replay with). If you omit it, we mint with a real Chrome and RETURN the exact User-Agent used. Either way the _abck is bound to the UA, so always replay with the userAgent from the solution (whether the one you sent or the one we chose).initCookiestypeobjectreqnoOptional. Any Akamai bootstrap cookies you already hold for the target (e.g. an `ak_bmsc`/`bm_sz` from a prior page load), as a `{name: value}` object. Improves first-try success on sites that seed cookies before the sensor runs. Omit if you have none.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 tokenResponse Shape
cookiestypearrayCookie objects in the form `{name, value, domain, path}`. Always includes `_abck` (containing ~0~), `bm_sz`, and any other Akamai cookies the deployment set (`ak_bmsc`, `bm_sv`, `bm_mi`, `bm_so`, `sbsd_o`). Set every cookie on your HTTP client before the next request.userAgenttypestringExact User-Agent the browser used while earning the cookies. MUST be reused verbatim on subsequent requests — Akamai correlates UA with the TLS fingerprint that produced the cookie.ipBoundtypebooleanAlways `true` for this task type. Cookies are bound to the IP that solved the challenge — reuse the same proxy for both solve and replay.domaintypestringThe hostname the cookies were validated against (host of `websiteURL`). Cookies are scoped to this domain — set them on a different host and Akamai ignores them.sensorPoststypenumberNumber of bmak sensor_data POSTs the solver fired during the validated session. Diagnostic — under normal conditions this is 1–3. Above that suggests the deployment is borderline and the cookies may have a shorter useful life.Example response
{
"errorId": 0,
"status": "ready",
"solution": {
"cookies": [
{
"name": "_abck",
"value": "<hash>~0~<timestamp>~...",
"domain": ".target.example.com",
"path": "/"
},
{
"name": "bm_sz",
"value": "<sensor PRNG seed cookie>",
"domain": ".target.example.com",
"path": "/"
},
{
"name": "ak_bmsc",
"value": "<value>",
"domain": ".target.example.com",
"path": "/"
},
{
"name": "bm_sv",
"value": "<value>",
"domain": ".target.example.com",
"path": "/"
}
],
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36",
"ipBound": true,
"domain": "target.example.com",
"sensorPosts": 2
}
}Error response
{
"errorId": 1,
"errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
"errorDescription": "Solver gave up."
}Features
Pricing & Stats
Start solving akamai bot manager — web/desktop.
$0.10 in free credits — no card. ~250 free solves to test before you spend.