Have I Been Pwned Domain Search API
Verify and search domains you control.
Verify and search domains you control.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/have-i-been-pwned-domain-search-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Have I Been Pwned API v3 Breached Accounts Domain Search API
description: 'The Have I Been Pwned (HIBP) API allows the list of pwned accounts (email addresses, domains,
passwords, and stealer log entries) to be quickly searched via REST. Authenticated endpoints
require an `hibp-api-key` header. All requests must send a `user-agent` header that accurately
identifies the consuming application. Subscriptions range from Pwned 1 to Pwned 5.
'
version: 3.0.0
contact:
name: Have I Been Pwned
url: https://haveibeenpwned.com/API/v3
license:
name: Creative Commons Attribution 4.0
url: https://creativecommons.org/licenses/by/4.0/
servers:
- url: https://haveibeenpwned.com/api/v3
description: HIBP Production API
security:
- ApiKeyAuth: []
tags:
- name: Domain Search
description: Verify and search domains you control.
paths:
/breacheddomain/{domain}:
get:
tags:
- Domain Search
summary: Get Breached Email Addresses For A Domain
description: Returns email aliases on the supplied verified domain that appear in breaches.
operationId: getBreachedDomain
parameters:
- name: domain
in: path
required: true
schema:
type: string
responses:
'200':
description: A map of alias to breach names.
content:
application/json:
schema:
type: object
additionalProperties:
type: array
items:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/subscribeddomains:
get:
tags:
- Domain Search
summary: List Subscribed Domains
description: Returns the domains the calling subscription is currently monitoring.
operationId: listSubscribedDomains
responses:
'200':
description: A list of subscribed domains.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SubscribedDomain'
'401':
$ref: '#/components/responses/Unauthorized'
/domainverification/generateDnsToken:
post:
tags:
- Domain Search
summary: Generate A DNS Verification Token
description: Generates a DNS TXT record value used to verify ownership of a domain.
operationId: generateDnsToken
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomainVerificationRequest'
responses:
'200':
description: A DNS TXT record value.
content:
application/json:
schema:
type: object
properties:
txtRecordValue:
type: string
/domainverification/verifyDnsToken:
post:
tags:
- Domain Search
summary: Verify A DNS Verification Token
description: Triggers DNS verification of a previously generated TXT record.
operationId: verifyDnsToken
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomainVerificationRequest'
responses:
'200':
description: Domain verification succeeded.
/domainverification/sendEmail:
post:
tags:
- Domain Search
summary: Send A Domain Verification Email
description: Sends a verification email to a standard alias on the domain.
operationId: sendDomainVerificationEmail
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomainEmailVerificationRequest'
responses:
'200':
description: Verification email sent.
components:
responses:
Unauthorized:
description: The `hibp-api-key` header is missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: 'The request is forbidden. Common causes include a missing `user-agent` header,
querying an unverified domain, or a feature not included in the calling subscription.
'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: No record matched the supplied identifier.
schemas:
Error:
type: object
description: Standard HIBP error payload.
properties:
statusCode:
type: integer
message:
type: string
required:
- statusCode
- message
DomainVerificationRequest:
type: object
properties:
DomainName:
type: string
description: Fully qualified domain to verify.
required:
- DomainName
DomainEmailVerificationRequest:
type: object
properties:
DomainName:
type: string
description: Fully qualified domain to verify.
EmailAlias:
type: string
description: Local part of the email alias (admin, hostmaster, info, security, webmaster).
required:
- DomainName
- EmailAlias
SubscribedDomain:
type: object
description: A domain monitored by the calling subscription.
properties:
DomainName:
type: string
description: Fully qualified domain name.
PwnCount:
type:
- integer
- 'null'
description: Total pwned email count on the domain.
PwnCountExcludingSpamLists:
type:
- integer
- 'null'
description: Pwned email count excluding spam lists.
PwnCountExcludingSpamListsAtLastSubscriptionRenewal:
type:
- integer
- 'null'
description: Pwned count excluding spam lists at the last renewal.
NextSubscriptionRenewal:
type:
- string
- 'null'
format: date-time
description: Next renewal date for the domain subscription.
required:
- DomainName
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: hibp-api-key
description: '32-character hexadecimal API key issued at https://haveibeenpwned.com/API/Key.
Required for all account, paste, stealer log, domain search, and subscription endpoints.
'