BuyProxy logo
Log inSign up

Cloudflare 1015Cloudflare errors

Cloudflare error 1015: what the rate limit means and what to do

Short answer

Cloudflare error 1015 means the website you are visiting uses Cloudflare, and its owner has set a rate limiting rule that your requests went over. Cloudflare blocks further requests from you for a period the site owner chose, then lets them through again. It is a rate limit, like an HTTP 429, shown as a Cloudflare page with the error number and a Ray ID.

A Cloudflare error number, not a standard HTTP status code.

What causes error 1015

  • Too many requests in the rule's time window. The site owner chooses what to count (often requests per IP address, to one path or the whole site), the threshold and the period.
  • Bursts. Opening many pages or tabs at once, an app that polls the site, or a script without delays.
  • Shared IP addresses. On an office network, a VPN or a mobile carrier's shared address, other people's requests can count toward the same limit.
  • Retries. Reloading or retrying while blocked adds more requests.

Who sends error 1015?

Cloudflare sends it on behalf of the site, using rules the site owner set. Your proxy doesn't send it, and neither does the site's own server: the request stopped at Cloudflare. The response carries Server: cloudflare and a CF-Ray header, the page shows the Ray ID, and the HTTP status is usually 429.

Because the rule belongs to the site owner, only the site owner can change it. If you think it is blocking you by mistake, contact the site, not Cloudflare.

How to fix error 1015

If you are the visitor

  1. Stop sending requests to the site for a while. The block ends after the period the site owner set.
  2. Then continue at a lower rate: fewer tabs and refreshes, longer delays in any script.
  3. If you need more than the limit allows, contact the site owner with the Ray ID and the time. Ask whether there is an API, a data export or a higher limit for your use.

If you run the site

  1. Find the rule: look up the Ray ID in Cloudflare's security events, which show the rule that matched.
  2. Check the threshold and period against real use. A limit low enough to catch normal browsing blocks real visitors.
  3. Check what the rule counts. Counting by IP address alone groups together everyone behind one shared address, such as an office or a mobile carrier's network.
  4. Exclude traffic you want, such as your own monitoring, in the rule's expression.
  5. Publish your limits or offer an API for heavy users, so they don't have to guess.

Pace requests and pause on a rate limit: curl and Python

bash
# Check who answered and with which status before scripting anything
curl -sS -o /dev/null -D - https://example.com/ | grep -iE "^(HTTP|server|cf-ray|retry-after)"

# One request every 2 seconds instead of all at once
while read -r url; do
  curl -sS -o /dev/null -w "%{http_code} $url\n" "$url"
  sleep 2
done < urls.txt
python
import time
from datetime import datetime, timezone
from email.utils import parsedate_to_datetime

import requests


def retry_after_seconds(value):
    """Seconds to wait from a Retry-After header: a number of seconds or an HTTP date."""
    if not value:
        return None
    value = value.strip()
    if value.isdigit():
        return int(value)
    try:
        when = parsedate_to_datetime(value)
        return max(0.0, (when - datetime.now(timezone.utc)).total_seconds())
    except (TypeError, ValueError):
        return None


def fetch_all(urls, proxies=None, delay=2.0, max_blocks=3):
    """Fetch one URL at a time. On a rate limit, pause, then carry on at half the speed."""
    results = {}
    blocks = 0
    for url in urls:
        while True:
            r = requests.get(url, proxies=proxies, timeout=30)
            if r.status_code != 429:  # a Cloudflare 1015 page usually arrives as 429
                results[url] = r
                break
            blocks += 1
            if blocks > max_blocks:
                raise RuntimeError("Still rate limited: stop and ask the site owner about limits or an API")
            time.sleep(retry_after_seconds(r.headers.get("Retry-After")) or 300)
            delay *= 2  # come back slower than before
        time.sleep(delay)
    return results

Error 1015 and proxies

Rate limiting rules often count requests per IP address, which makes it tempting to spread requests over many proxy IPs. Don't. The rule is the site owner saying how much traffic they accept, and BuyProxy's acceptable use policy asks you to respect each site's rate limits and terms. Depending on the site's Cloudflare plan, rules can also count by more than the IP address, such as a header, a cookie or the path.

Pace the whole job, not each IP, so the total rate stays within what the site accepts. Proxies are for seeing the site from the right place: country-targeted requests for localized pages, or a sticky session that keeps one IP through a signed-in flow.

If you keep hitting 1015 on a site you need data from, ask the owner for an API or a data feed.

Cloudflare error 1015: frequently asked questions

What does Cloudflare error 1015 mean?

The site's Cloudflare rate limiting rule blocked your requests because you sent too many in a short time. The block lasts for a period the site owner set.

How long does error 1015 last?

There is no fixed length: the site owner sets it in the rule. Stop sending requests, wait, then come back at a slower rate.

Can Cloudflare remove a 1015 block for me?

No. The rule belongs to the site owner. Contact the site with the Ray ID shown on the page and the time it happened.

Is error 1015 the same as a 429?

It is the same idea. 1015 is Cloudflare's number for its rate limiting page, which is usually sent with HTTP status 429.

Can a VPN or proxy cause error 1015?

It can play a part when many people share one address, because their requests count together if the rule counts by IP address. The fix is still to slow down, or to contact the site owner.

Testing proxies for a project? There is no free trial period, but support can add 100 MB of free Premium Residential bandwidth to a new account on request, by chat, Discord or email, so you can try your own targets first.

Residential proxies