HTTP Errors

What Is the 409 Status Code? (Conflict)

On this page

HTTP 409 Conflict means your request clashes with the resource's current state, so the server refuses it. The server understood what you asked but can't do it because it would conflict with how the data stands right now — common cases are trying to create something that already exists, editing a record that someone else has changed since you last read it, or two writes hitting the same resource at the same moment. You'll also see it written as "HTTP 409" or just "409 error" / "409 status code."

Quick facts

Status code409
MeaningConflict
Category4xx Client Error
Common causes (scraping)Duplicate create, stale-version edit, racing concurrent writes
Right responseFix the request / retry with backoff; for disguised blocks use a real-browser unblock

What a 409 Conflict means

A 409 means the server won't complete your request because it would conflict with the resource's current state. Typical triggers: creating a record that already exists (a duplicate create), editing an item against a stale version (you're working from an old copy someone has since updated), or two writes racing each other to change the same thing. In short, a 409 status code says your request conflicts with the current state of the resource.

Why scrapers see 409

Plain read-only scraping rarely triggers a 409 — it almost always appears when you're writing or submitting data: creating something that already exists, posting a form twice, or calling an API that uses optimistic-concurrency checks. (Optimistic concurrency means the server tags each version of a resource with an ETag — a fingerprint of that version — and your request sends it back via If-Match; if the version has moved on, you get a 409.) Highly parallel jobs that fire the same action at once can also race into 409s.

How to fix a 409 error

Make the operation idempotent (safe to repeat without side effects) or check the resource's state before you write. For versioned resources, honor ETag/If-Match and re-fetch the latest version before retrying. De-duplicate submissions and serialize conflicting writes so two workers never act on the same resource at the same time. A 409 is a state/logic problem, not a block — blindly retrying just repeats the same conflict.

Related terms

Concept map

How 409 Status Code (409 Conflict) 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 409 a client or server error?

It's a client-side error (the 4xx family). The server is telling you something in your request is the problem, not that the server itself failed.

Does a 409 mean I'm blocked when scraping?

Not necessarily. A 409 points at your request, not a ban. That said, anti-bot layers sometimes return a 409 instead of a 403, so read the response body and headers to confirm what you're actually dealing with.

How do I fix a 409 error?

The cause is that your request conflicts with the resource's current state, so the fix targets exactly that: correct the offending part of the request, then retry.

What's the difference between 409 and 422?

A 409 Conflict is about the resource's state — for example a version clash or a uniqueness clash. A 422 Unprocessable Entity is about your payload failing validation. Put simply: 409 = state problem, 422 = data problem.

Last updated: 2026-05-31