GET /v1/breaches returns every data breach our breach-data provider knows of, in one answer: which company or service was breached, when, how many records, and which kinds of data they hold. It answers “which breaches exist, and what is in them?”. To learn whether one email address is in them, use the breach search instead.

When to use it

  • Show a catalogue of breaches in your own tool, like orelys.io/pwned.
  • Look up what a breach holds — its kinds of data, size and dates — by its id or its name.
  • Follow new breaches: the most recently added come first.
  • See which group claimed an attack, in claimed_by.

Request

GET /v1/breaches. No parameters, no body, no key.
The list comes from a copy the API keeps and refreshes in the background, so it usually answers at once. Only when the API has no copy at all, just after a restart without a saved one, does a call wait for our breach-data provider: up to about 90 seconds, or 503 breach_catalogue_unavailable if that load fails. The timeout above leaves room for it.

What you get back

Each breach has:

Cost and limits

The list is free: no key, no account, no credits, nothing taken from a quota. It works the same with any plan, or with none. Its only limit is the 120 calls a minute per address shared with every call to the API (rate limits). Past it, the API answers 429 ip_rate_limited: wait for Retry-After seconds — the minute is a sliding window.

Errors

Errors use the usual envelope: { "error": { "code": "…", "message": "…" } }.

Tips

  • Fetch it once, keep it a few minutes. The whole list — close to 900 breaches — comes in one answer. Keep a copy on your side rather than fetching it on every page view. updated_at changes at most every 30 minutes: asking more often brings nothing new.
  • Call it from your backend. The API does not answer browser calls from other sites, so a web page should get the list through its own server.
  • Show names as text. Breach names come from third parties: never render them as HTML.
  • Keep unknown keys. data_types is not a closed list: show a key you do not know as it is. What each key means →
  • Checking an address? The breach search returns the breaches that hold it, with these same fields, plus a summary and the kinds of data the address was found under.

Reference

List data breaches

The response schema, and a playground to try it.