Skip to content
capzy
Akamai Bot Manager — Web/Desktop
AntiAkamaiWebTask
proxy required

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.

Avg Speed~5.0s
Success99%+
Cost / 1k$2.00
Throughput12/m

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

solve.py
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

use_result.py
# 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 Spec
Proxy fields below are required for this captcha — userAgent must match the one you’ll use when submitting the resulting token.
typetypestringreqyesWhich 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 socks5
proxyAddresstypestringreqyesProxy IP address or hostname
proxyPorttypenumberreqyesProxy port number
proxyLogintypestringreqnoProxy username (if auth required)
proxyPasswordtypestringreqnoProxy password (if auth required)
userAgenttypestringreqnoUser-Agent string to use. Must match the UA you use when submitting the token

Response 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

Returns the validated `_abck` cookie (with `~0~`) plus the full secondary cookie set (`bm_sz`, `ak_bmsc`, `bm_sv`, `bm_mi` where issued)
User-Agent + cookies returned as a matched pair for direct session reuse
Produces the validated sensor_data payload bmak expects
Pixel-challenge (`~3~`) and rejected-session (`~-1~`) detection — fast-fail with a refund instead of grinding the timeout

Pricing & Stats

Per 1,000 solves$2.00
Avg solve time~5.0s
Success rate99%+
Throughput12/m

Start solving akamai bot manager — web/desktop.

$0.10 in free credits — no card. ~250 free solves to test before you spend.

Frequently asked questions