{
  "openapi": "3.0.1",
  "info": {
    "title": "Akamai Sensor Unblocker — bypass Akamai, get _abck cookies",
    "description": "Clear Akamai Bot Manager's _abck sensor and keep the cookies. Returns the real page plus the clearance cookies your own scraper can reuse. Solves the sensor channel, not SBSD. Powered by xhr.dev.",
    "version": "0.1",
    "x-build-id": "QsmK612qkcPlKbpIH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/xhrdev~akamai-unblocker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-xhrdev-akamai-unblocker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/xhrdev~akamai-unblocker/runs": {
      "post": {
        "operationId": "runs-sync-xhrdev-akamai-unblocker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/xhrdev~akamai-unblocker/run-sync": {
      "post": {
        "operationId": "run-sync-xhrdev-akamai-unblocker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "sites": {
            "title": "Sites",
            "type": "array",
            "description": "The Akamai-protected sites to clear. This Actor only runs against sites verified end to end — each one below clears _abck to its accepted ~0~ state on the first attempt, in every verification run. The list grows on request.",
            "items": {
              "type": "string",
              "enum": [
                "comcast.com",
                "edd.ca.gov",
                "united.com"
              ],
              "enumTitles": [
                "Comcast Business (business.comcast.com)",
                "California EDD e-Services (eddservices.edd.ca.gov)",
                "United Airlines (united.com)"
              ]
            },
            "default": [
              "comcast.com"
            ]
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Akamai relays its sensors through the browser this Actor drives, so there is nothing to route and no proxy is required. Use one when you need a specific geography, or a fresh address after a burn. Apify's RESIDENTIAL group is refused: it bills ~$8/GB against this Actor and was measured at $0.054 per URL against $0.0022 with no proxy. Datacenter groups are fine, and proxyUrls takes your own endpoint. Clearance cookies are bound to the exit IP that earned them, so reuse them from the same session.",
            "default": {
              "useApifyProxy": false
            }
          },
          "returnHtml": {
            "title": "Return page HTML",
            "type": "boolean",
            "description": "Include the full HTML of the unblocked page in each dataset item.",
            "default": true
          },
          "returnCookies": {
            "title": "Return clearance cookies",
            "type": "boolean",
            "description": "Include the full cookie jar (_abck, bm_sz and friends) and a ready-to-send Cookie header.",
            "default": true
          },
          "blockAssets": {
            "title": "Block images, media and fonts",
            "type": "boolean",
            "description": "On by default. Every request this Actor intercepts is refetched through the page's own connection, so images and fonts cost time and — if you configure a proxy — transfer. Akamai scores JavaScript execution and the sensor conversation, not decoded pictures. Turn it off if you need the images themselves.",
            "default": true
          },
          "skipWhenUnchallenged": {
            "title": "Skip the solve when a URL is not blocked",
            "type": "boolean",
            "description": "Off by default, and the default is the one you usually want. Akamai serves its sensor script on an ordinary HTTP 200 and gates only the endpoints behind it, so a landing page returning 200 tells you nothing about whether you can reach the protected pages — you still need an accepted _abck. Leave this off to always earn the cookie. Turn it on if you only want HTML from pages that are not gated, and want to skip the browser launch.",
            "default": false
          },
          "maxRetries": {
            "title": "Attempts per URL",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many times to try a URL before giving up. Each attempt takes a fresh browser context, and a fresh proxy session if a proxy is configured.",
            "default": 2
          },
          "maxConcurrency": {
            "title": "Concurrent URLs",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many URLs to work on at once. Each concurrent solve is a browser context, so keep this low — the solver also queues Akamai sessions.",
            "default": 2
          },
          "startUrls": {
            "title": "Specific URLs (optional)",
            "type": "array",
            "description": "Optional. Exact pages to clear, instead of each site's default page. Every URL must be on one of the supported domains above, or it is refused before the run starts.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "targetPolicy": {
            "title": "Which sites to allow",
            "enum": [
              "verified-only",
              "allow-any"
            ],
            "type": "string",
            "description": "Verified only (the default) refuses any URL outside the supported list, before the run starts. That matters here more than for HTTP-based unblockers: work against an unsupported target does not fail fast, it holds a browser open for the full timeout on every attempt. Need a site added? Ask at https://xhr.dev.",
            "default": "verified-only"
          },
          "timeoutSecs": {
            "title": "Solve deadline (seconds)",
            "minimum": 30,
            "maximum": 600,
            "type": "integer",
            "description": "How long one solve gets to reach an accepted _abck. A cold solve can take 60s; raise this before lowering it.",
            "default": 150
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}