Breach Detection API
Know if an identity is already exposed, check emails, phones, IPs, usernames, domains and passwords against known breach data.
What it checks
Breach Detection checks whether an identifier appears in known data breaches, and returns the breaches it found. You can check an email, phone number, IP, username, domain or password. For passwords it uses a privacy-preserving approach: you never send the plaintext password. Only a partial SHA-1 hash is used for the upstream lookup, with the full match confirmed by hash, so the password itself is never transmitted. It tells you that an identifier has been exposed before, useful context for risk scoring and account security. Crucially, it's a signal, not a verdict: many ordinary people appear in old breaches, so the value is in how you weigh it alongside breach age and your other checks.
What it returns
- List of known breaches , per identifier, every matching breach found
- Supported identifiers , email, phone, IP, username, domain or password. Set the type in the request
- Privacy-preserving password check , plaintext passwords are never sent; only a partial SHA-1 hash is used upstream, with the full match confirmed by hash
- Breach name , the service or dataset the identifier was exposed in
- Domain , the domain associated with the breached service
- Breach date , when the breach occurred, so you can weigh how recent it is
- Description , a short description of what the breach involved
When to use it
- At sign-up or onboarding, as one input into an account-security or risk score.
- In fraud and KYC pre-screening, to weigh exposure alongside other signals before a record becomes trusted evidence.
- When assessing list or lead quality, where patterns of breach exposure can indicate recycled or scraped data.
- To prompt step-up security, for example encouraging a password reset or extra verification on exposed accounts.
When not to use it
- As proof that someone is fraudulent, appearing in a breach is extremely common and is not, on its own, evidence of wrongdoing.
- As proof that someone is real, absence from breach data doesn't confirm a genuine identity either.
- Without weighing breach age, a single old breach is very different from recent, repeated exposure; read the dates.
- As a standalone decision, it's most useful combined with IP fraud, email and name signals, not used in isolation.
How to read the result
Treat breach exposure as one risk signal among many, and weigh it by recency and pattern rather than presence alone.
- No breaches found
- No known exposure for this identifier. A mildly positive signal, but not proof of a genuine identity on its own.
- One old breach
- Very common and low-concern. Most real, long-standing identities appear in at least one historical breach.
- Recent or multiple breaches
- Worth more weight, especially combined with other risk signals. Consider step-up verification or closer review.
- Breach pattern across a list
- If many records share the same breach signature, the source may be scraped or recycled data, investigate provenance.
Pricing
from £0.012 per request, down to £0.003 at volume
| Requests / month | Rate |
|---|---|
| 0 – 5,000 | £0.012 |
| 5,001 – 10,000 | £0.008 |
| 10,001 – 25,000 | £0.007 |
| 25,001 – 50,000 | £0.006 |
| 50,001 – 100,000 | £0.0045 |
| 100,001 – 300,000 | £0.004 |
| 300,001 – 500,000 | £0.0035 |
| 500,001+ | £0.003 |
Prepaid balance, spent across any check. Each request is charged at the rate for the volume band reached, and earlier requests keep their lower rate. See full pricing.
Need custom pricing? pricing@provero.io
API & bulk usage
Run Breach Detection in real time at sign-up, or in bulk to assess exposure across an existing list. Set the identifier type in the request: email, phone, IP, username, domain or password. For passwords, send a partial SHA-1 hash rather than the plaintext, never the password itself. Call it on its own, or combine it with other checks in a single request and get every signal back in one response.
Read the API reference →Request
{
"breach": {
"type": "email",
"value": "simon@provero.io"
}
} Response
{
"breach": {
"value": "simon@provero.io",
"type": "email",
"leaks": [
{
"name": "Adobe",
"domain": "adobe.com",
"breachDate": "2013-10-04",
"description": "User profile and password hints were exposed."
}
]
}
} Breach Detection FAQ
Does a breach hit mean a record is fraudulent?
What identifiers can I check?
How are passwords checked without exposing them?
Why does the breach date matter?
Can I use this for account-security prompts?
How much does breach detection cost?
Start with this check
Create a free account, claim your credits and run Breach Detection as a real-time API or a bulk upload. No card required.
Sign up free