Skip to content
HTTP Errors

What Is the 503 Status Code? (503 Service Unavailable)

Pim

Pim · Scrappey Research

May 31, 2026 3 min read

What Is a 503 Error (Service Unavailable)? — conceptual illustration
On this page

HTTP 503 Service Unavailable means the server can't handle your request right now — usually because it's overloaded, under maintenance, or deliberately turning traffic away at its outer edge. Think of it as a shop with a "back in 5 minutes" sign on the door. For scrapers, a 503 most often means a CDN (the network of edge servers that sits in front of a website) or a bot-detection layer chose to drop your request instead of passing it to the real server — or that an upstream service is being rate-limited. A proper 503 includes a `Retry-After` header telling you when to try again.

Quick facts

Status code503
Category5xx Server Error
Common causes (general)Server overload, scheduled maintenance, upstream timeouts
Common causes (scraping)Cloudflare "Just a moment" challenge, WAF interstitials, edge throttling
Right responseHonor Retry-After, exponential backoff, escalate if persistent

Why 503s happen

A 503 comes from one of two places. The first is the real server genuinely struggling: it's overloaded, restarting, mid-deployment, or its database timed out. These 503s are temporary and fix themselves within seconds or minutes. The second — the one scrapers see all the time — is bot detection. Cloudflare historically returned 503 alongside its "Checking your browser…" interstitial (a holding page shown while it inspects you); modern Cloudflare uses 403 for outright blocks and saves 503 for protecting capacity, but the old pattern still shows up. Akamai, AWS WAF, and Imperva also return 503 in various managed-block setups. The quickest way to tell the two apart: read the response body. A vendor-branded page means bot detection; a plain "Service Unavailable" or your own server's error template means real overload.

How scrapers should respond to 503

Treat 503 as worth retrying — but not blindly. If a `Retry-After` header is present, wait exactly that long. Otherwise use exponential backoff with jitter, meaning you double the wait each time and add a small random offset so many retries don't all fire at once: 2s, 4s, 8s, 16s, capping at a few minutes. If the body shows a bot-detection interstitial, retrying as the same "person" won't help — rotate your proxy (use a different exit IP) and refresh your fingerprint (the bundle of browser traits sites use to recognize you) before trying again. If 503s come in bursts and then recover, that's probably genuine origin overload and your retries will eventually get through. If your scraper gets 503s constantly but a normal browser doesn't, you're being blocked, not throttled.

Avoiding 503s in the first place

Spread your requests out over time. Set concurrency limits (how many requests run at once) per-domain rather than globally — pointing 50 parallel workers at a single site reliably triggers 503s even on sturdy servers. Reuse TCP/TLS connections: a single HTTP/2 connection can carry many requests, and opening a fresh connection for every request is both slower and more obviously bot-like (TLS is the encryption layer behind https). Cache aggressively — if you scraped a page in the last 24 hours, don't fetch it again. And keep monitoring: a sudden jump in 503s from a target that was stable usually means it just rolled out new rate limits or a new bot-detection rule, and your strategy needs to adapt.

Next in Server and edge failures · 3 of 5

The edge-specific version you will see behind a CDN.

What Is a 520 Error?

Related terms

Concept map

Concept map

How 503 Status Code (503 Service Unavailable Error) connects

The terms most directly tied to this one. Hover a node to see its neighbours, click to preview, drag to rearrange.

0 terms · 0 connections
You are here · HTTP Errors
Building map…

Frequently asked questions

Is a 503 always temporary?

By definition, yes — 503 means "come back later." In practice, the bot-detection kind sticks around until you change something about how your scraper presents itself, so it isn't temporary the way the spec assumes.

What's the difference between 503 and 502?

502 Bad Gateway means a proxy passed along a broken response it got from an upstream server. 503 means the server itself is refusing to serve right now. Both are 5xx errors and both are worth retrying, but a 502 usually points to a more serious upstream problem.

Should I treat 503 as success-eventually or as failure?

Treat it as eventual success on the first 2–3 retries, then as failure after that. Most production scrapers retry 3–5 times with backoff, then mark the URL as failed and move on. Failing fast keeps the queue moving.

Does a 503 count against my scraping API quota?

It depends on the provider. Most credit you back for upstream 503s, charge you for transient ones, and usually charge you when the 503 was caused by bot detection. Read the provider's billing docs — this is one of the bigger sources of surprise charges.

Last updated: 2026-05-31