Tool: Akamai Bypass and Bot Manager Unblocker avatar

Tool: Akamai Bypass and Bot Manager Unblocker

Pricing

from $0.04 / page unblocked

Go to Apify Store
Tool: Akamai Bypass and Bot Manager Unblocker

Tool: Akamai Bypass and Bot Manager Unblocker

Return the real HTML from Akamai Bot Manager protected and geo restricted sites. Get past Access Denied bot walls. Pay a small fee per request and more only on success. Optional AI converts the page into structured JSON.

Pricing

from $0.04 / page unblocked

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Akamai Bypass and Bot Manager Unblocker

Akamai Bypass and Bot Manager Unblocker

Here is one real result, with every field the tool returns (the html value is truncated here for readability):

{
"url": "https://www.scrapingcourse.com/cloudflare-challenge",
"finalUrl": "https://www.scrapingcourse.com/cloudflare-challenge",
"success": true,
"statusCode": 200,
"protectionDetected": "cloudflare",
"pageTitle": "Cloudflare Challenge - ScrapingCourse.com",
"contentLength": 3854,
"html": "<!DOCTYPE html><html lang=\"en\"><head>...<h2 class=\"challenge-title text-xl font-bold\">You bypassed the Cloudflare challenge! :D</h2>...</body></html>",
"json": null,
"generatedSchema": null,
"attempts": 6,
"errorReason": null,
"source": "www.scrapingcourse.com",
"observedAt": "2026-08-10T14:34:14.407Z"
}

An HTTP unblocker that fetches pages sitting behind bot-protection challenges and returns the full rendered HTML with a clear success flag. It reports the protection it detected, retries automatically, follows redirects, supports GET and POST with custom headers and body, can render JavaScript pages, lets you pick a viewing country, and optionally converts the unblocked page to structured JSON with AI.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Type Output Billing

Table of contents

What it does

The tool takes one or more page URLs, fetches each one through an unblocking stack that works through bot-protection challenges, and writes one record per URL to the run's dataset. Each record carries the requested URL and the final URL after redirects, a success flag, the HTTP status code, the protection it detected (for example cloudflare), the page title, the content length, the full page HTML, and the number of attempts it took.

It supports GET and POST with custom request headers and a request body, can render JavaScript-heavy pages and single-page apps when renderJavaScript is on, and lets you view the page from a chosen country. An optional AI add-on (extractToJson) converts the unblocked page to structured JSON, following a custom jsonSchema you supply or inferring one and returning it in generatedSchema. When a page cannot be unblocked, success is false and errorReason explains why. Values are returned as null, never invented.

Quickstart

Open the tool, paste this into the input, and press Run.

{
"urls": ["https://www.scrapingcourse.com/cloudflare-challenge"],
"httpMethod": "GET"
}

Add more URLs to urls to process many in one run. Turn on renderJavaScript for pages whose content is built in the browser.

Input reference

FieldTypeRequiredDefaultDescription
urlsstring[]no(example URL)One or more page URLs to fetch. One run can process many URLs.
httpMethodstringnoGETRequest method for every URL. GET or POST.
headersobjectno(none)Extra request headers to send with every URL, as key/value pairs.
payloadstringno(empty)Request body to send when httpMethod is POST (JSON or form-encoded).
renderJavaScriptbooleannofalseTurn on for JavaScript-heavy pages and single-page apps. Off is faster for normal HTML.
countrystringnoautoCountry to view the page from, for geo-specific content. auto picks the best match, or one of US, GB, CA, AU, DE, FR, ES, IT, NL, BR, MX, AR, CL, CO, PE, JP, KR, IN, SG, HK, AE, ZA.
waitForMsintegerno(none)Extra settle time in milliseconds for JavaScript pages before capture (0 to 30000).
maxUrlsintegerno25Maximum number of URLs to process in this run.
extractToJsonbooleannofalseAI add-on. Convert the unblocked page to structured JSON. Billed separately and only for pages that were successfully unblocked.
jsonSchemaobjectno(none)A JSON schema for the AI extraction to follow exactly. Leave empty and the AI infers the structure and returns it in generatedSchema. Only used when extractToJson is on.

Output reference

One dataset item per URL. Types: string, number, boolean, object, or null when the value is absent.

FieldTypeDescription
urlstringThe requested URL.
finalUrlstringThe final URL after redirects.
successbooleantrue when the page was unblocked and returned.
statusCodenumberHTTP status code of the fetched page, or null.
protectionDetectedstringThe bot protection detected on the page, for example cloudflare, or null when none.
pageTitlestringThe page title, or null.
contentLengthnumberLength of the returned HTML in bytes.
htmlstringThe full page HTML, or null when the page could not be unblocked.
jsonobjectAI-extracted structured JSON when extractToJson is on, else null.
generatedSchemaobjectThe schema the AI used when none was supplied, else null.
attemptsnumberNumber of fetch attempts it took.
errorReasonstringnull on success; a reason string when the page could not be unblocked.
sourcestringThe hostname of the requested URL.
observedAtstringISO 8601 timestamp of when the record was produced.

Example output record

Real record from a live run (input {"urls": ["https://www.scrapingcourse.com/cloudflare-challenge"]}, html truncated for readability):

{
"url": "https://www.scrapingcourse.com/cloudflare-challenge",
"finalUrl": "https://www.scrapingcourse.com/cloudflare-challenge",
"success": true,
"statusCode": 200,
"protectionDetected": "cloudflare",
"pageTitle": "Cloudflare Challenge - ScrapingCourse.com",
"contentLength": 3854,
"html": "<!DOCTYPE html><html lang=\"en\">...<h2 class=\"challenge-title\">You bypassed the Cloudflare challenge! :D</h2>...</html>",
"json": null,
"generatedSchema": null,
"attempts": 6,
"errorReason": null,
"source": "www.scrapingcourse.com",
"observedAt": "2026-08-10T14:34:14.407Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~akamai-bypass-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"urls":["https://www.scrapingcourse.com/cloudflare-challenge"],"httpMethod":"GET"}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~akamai-bypass-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com/product/123"],"renderJavaScript":true,"country":"US"}'

Apify CLI:

apify call scrapers_lat/akamai-bypass-scraper \
--input '{"urls":["https://www.scrapingcourse.com/cloudflare-challenge"]}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per page. Each URL is billed as a page-requested event, plus a page-unblocked event only when the page is successfully unblocked. See the pricing tab for current prices.
  • Premium unblock for the hardest pages. Some pages behind the strongest protections can only be returned through a premium last-resort retrieval path. When that path is what returns the page, a single premium-unblock event is billed instead of page-unblocked (never both, and never on failure). Ordinary pages continue to bill the standard page-unblocked event.
  • AI extraction billed separately. When extractToJson is on, an ai-json-requested event is billed per attempt and an ai-json-delivered event only when structured JSON is returned.
  • No charge for a failed unblock beyond the request. If a page cannot be unblocked, success is false and neither the page-unblocked nor the premium-unblock event is charged.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the tool stops emitting and charging further billable events.

FAQ and troubleshooting

Which protection did it hit? Check protectionDetected on each record. It reports the challenge the tool encountered, for example cloudflare.

A page returned success: false. Why? The page could not be unblocked within the attempt budget. errorReason explains the cause. Only the page request is billed in that case, not the unblock.

How do I handle JavaScript-rendered pages? Turn on renderJavaScript, and add waitForMs if the content needs extra settle time before capture.

Can I get structured data instead of raw HTML? Yes. Turn on extractToJson. Supply a jsonSchema to control the shape, or leave it empty and read the inferred schema from generatedSchema.

Can I send POST requests? Yes. Set httpMethod to POST and pass the body in payload, with any headers in headers.

Is this tool affiliated with Akamai or Cloudflare? No. It is an independent unblocking tool and has no affiliation with Akamai, Cloudflare or any protection vendor. Use it only on pages you are permitted to access.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent unblocking tool, not affiliated with any bot-protection vendor. Use only on pages you are permitted to access.