Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in

Error codes · Cloudflare

Cloudflare Error 1020: Access denied

Cloudflare error 1020, "Access denied", means a Cloudflare security feature that the owner of the site configured blocked your request. It comes with status 403, and it is a refusal, not a check, so reloading does not clear it. A visitor changes network or asks the site. A script sends a different request with one Web Unlocker call.

9 of 9
calls to Cloudflare-protected pages answered with the real page, canary of 11 November 2026
88.9%
across all 27 protected targets of the same run
4.1 s
median response across the run

What you are looking at

A 1020 is short and final. There is nothing to click and nothing that clears by itself: the request matched a block.

Where to lookWhat it shows
Status code403.
Text on the page"Error 1020" and "Access denied", with a Ray ID and a timestamp.
Which systemCloudflare, enforcing a block that the owner of the site set up.
What produces itA security rule with a Block action and no custom response. Cloudflare's documentation gives API Shield schema validation and JWT validation as examples.
What does notWAF custom rules and WAF managed rules. Cloudflare's documentation says requests blocked by those get the WAF block response instead, which is a different page.
Response headersserver: cloudflare and a cf-ray id. No cf-mitigated: challenge: that header marks a challenge, and a 1020 is not one.
Ray IDThe owner of the site finds the event by the Ray ID or by your IP address, and sees which feature and rule blocked the request.
How to read Cloudflare error 1020: first the words Error 1020, Access denied, with a 403 status, then a block page with three marked zones (status, words, the Ray ID), last a card that names the system as Cloudflare, the kind of block as a refusal set by the site, the Ray ID mark, and what to do next: send a different request.
What the page shows, which system sent it, and what to do next.

If you are a visitor

Reloading will not help: a 1020 is a decision, not a test. Something in your request matched a block that the owner of the site set up. It can be the address or network you came from, your country, the browser or an extension that changed the request, or the page you asked for.

  • Turn off the VPN or proxy, or switch between Wi-Fi and mobile data, and open the page again.
  • Use a normal window of an up-to-date browser with extensions paused.
  • Open the site from its home page rather than from a saved link or a form you had left open.
  • If the error stays, take a screenshot of it with the Ray ID and send it to the site's support. This is Cloudflare's own advice: the owner can look the Ray ID up and see which rule blocked you.

If your script gets it

For a script, a 1020 says the request itself was refused by a rule. No challenge was offered, so there is nothing for a browser to solve, and the same request gets the same answer.

  • The address: a rule that blocks hosting networks or whole countries refuses the request whatever the client is.
  • The client: a request that does not look like the browser it names, in its headers or in what it asks for, can match a block.
  • The call: on API routes, features such as schema validation and JWT validation refuse calls that lack the shape or the token the API expects. Only a valid call changes that.
  • The path: admin, login and internal routes are often closed to everyone outside a list. Those stay closed.

The whole picture of the system is in the guide: How to Bypass Cloudflare When Scraping.

Get the page with one call

When the refusal is about where the request came from or what sent it, a different request gets a different answer. Send the URL to the REST endpoint: it leaves from a residential or mobile IP in the country you choose, with a browser-grade client, and a refused attempt is retried on a fresh exit.

curl -X POST https://app.quanticdata.io/api/v1/scraper/unlock \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/", "country": "us"}'

Set country to a country the site serves. If the answer still comes back with blocked: true and blockClass: "access_denied", the rule is about the page or the call itself, and no exit changes it.

What the answer tells you

FieldWhat it says
blockedfalse when the real page came back. true only when every attempt met the block; the block page is then in body.
vendorThe system the engine recognised on a blocked attempt. For this page: cloudflare.
blockClassaccess_denied for a 1020: a flat refusal, with no challenge offered. geo when the site does not serve the country of the exit.
tier_servedtls for a browser-grade request, browser when a real browser had to open the page.
attempts, latency_msHow many tries the call took and how long it lasted.
costThe bytes this call moved and what it was charged.

Measured, with a date

In the canary of 11 November 2026, all 9 calls to Cloudflare-protected pages came back with the real page. Across the whole run, 72 of 81 calls on 27 protected targets did, with a median response of 4.1 s.

A call counts only when the answer is 2xx and carries the real page, not a challenge. The list, the method and every run are on the Web Unlocker status page.

What it is for, and what it does not do

  • It is for pages anyone can open in a browser without signing in: prices, listings, reviews, search results, public profiles.
  • Challenges that need no human input are handled by the browser tier. An interactive captcha that asks a person to click, pick images or type is not solved: the answer comes back with blocked: true and blockClass: "captcha", so your code can skip the page or try later.
  • It does not log in for you and it does not create accounts. Pages behind a login stay behind it.
  • Whether you may collect a page depends on the terms of the site and on the law that covers the data. A protection system does not change that, in either direction.

Error 1020: questions people ask

What does Cloudflare error 1020 mean?

Per Cloudflare's own page, error 1020 Access denied means a Cloudflare security feature configured by the website owner blocked the request. It is returned with status 403. It is the site's decision, enforced by Cloudflare: your browser reached Cloudflare, and a rule there refused to pass the request on.

Is error 1020 caused by a WAF rule?

Not by WAF custom rules or WAF managed rules: Cloudflare's documentation says requests blocked by those get the WAF block response instead, not a 1020. A 1020 comes from another security feature with a Block action and no custom response. The documentation names API Shield schema validation and JWT validation as examples.

How do I fix error 1020 as a visitor?

You cannot be sure to fix it from your side, because the rule is the site's. Try without a VPN, on another network and in a normal browser with extensions paused. If the error stays, send the site's support a screenshot with the Ray ID: they can find the rule that blocked you.

What is the Ray ID on the error page?

An identifier Cloudflare gives to every request. On a 1020 page it lets the owner of the site find your blocked request in the Security Events log, by the Ray ID or by your IP address, and see which security feature and rule refused it. It means nothing to anyone outside that account.

Does error 1020 mean my IP is banned?

Not necessarily. A banned IP address has Cloudflare errors of its own, and a 1020 only says that a block matched something in the request. That can be the address or its network, but also the country, the client or the path. Trying another network is the quickest way to tell.

Can a scraper get past error 1020?

When the rule looks at the address or the client, yes: the same URL sent from a residential IP in a country the site serves, with a coherent browser identity, is a different request. When the rule protects the route itself, such as an API that validates each call, only a valid call changes the answer.