isBusinessEmail Check API
The Check API from isBusinessEmail — 2 operation(s) for check.
The Check API from isBusinessEmail — 2 operation(s) for check.
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/isbusinessemail:isbusinessemail-check-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: isBusinessEmail Check API
version: 1.0.0
description: 'Is this a work email? Business vs personal vs disposable, plus Google Workspace / Microsoft 365 detection. Free. Docs: https://isbusinessemail.com/docs'
contact:
name: isBusinessEmail
email: hello@isbusinessemail.com
url: https://isbusinessemail.com
termsOfService: https://isbusinessemail.com/terms
servers:
- url: https://api.isbusinessemail.com
security:
- bearer: []
- apiKey: []
tags:
- name: Check
paths:
/v1/check:
get:
summary: Check an email address, domain or website URL
description: Pass exactly one of email, domain or url. Prefer POST so addresses do not end up in URLs and logs. Test addresses under test.isbusinessemail.com need no key.
parameters:
- name: email
in: query
schema:
type: string
- name: domain
in: query
schema:
type: string
- name: url
in: query
schema:
type: string
description: A website address such as https://www.acme.io/pricing; its host is checked.
- name: policy
in: query
schema:
type: string
enum:
- b2b
- strict
- lenient
default: b2b
- name: deep
in: query
schema:
type: boolean
default: false
description: Domain age (RDAP) + homepage check. Counts as 5.
responses:
'200':
description: Verdict
content:
application/json:
schema:
$ref: '#/components/schemas/CheckResult'
'400':
$ref: '#/components/responses/E400'
'401':
$ref: '#/components/responses/E401'
'403':
$ref: '#/components/responses/E403'
'429':
$ref: '#/components/responses/E429'
tags:
- Check
operationId: getV1Check
x-operation-id-source: derived
post:
summary: Check an email address, domain or website URL (recommended)
requestBody:
required: true
content:
application/json:
schema:
type: object
description: Exactly one of email, domain or url.
properties:
email:
type: string
domain:
type: string
url:
type: string
maxLength: 2048
description: A website address; its host (without www.) is checked.
policy:
type: string
enum:
- b2b
- strict
- lenient
deep:
type: boolean
examples:
email:
value:
email: jane@acme.io
url:
value:
url: https://www.acme.io/pricing
responses:
'200':
description: Verdict
content:
application/json:
schema:
$ref: '#/components/schemas/CheckResult'
'400':
$ref: '#/components/responses/E400'
'401':
$ref: '#/components/responses/E401'
'403':
$ref: '#/components/responses/E403'
'413':
$ref: '#/components/responses/E413'
'429':
$ref: '#/components/responses/E429'
tags:
- Check
operationId: postV1Check
x-operation-id-source: derived
/v1/check/batch:
post:
summary: Check up to 100 emails, domains or website URLs
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- items
properties:
items:
type: array
maxItems: 100
items:
type: string
maxLength: 2048
description: An email (has @), a URL (has a scheme or a path) or a domain.
policy:
type: string
enum:
- b2b
- strict
- lenient
responses:
'200':
description: Results in input order
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/CheckResult'
took_ms:
type: integer
request_id:
type: string
'400':
$ref: '#/components/responses/E400'
'401':
$ref: '#/components/responses/E401'
'403':
$ref: '#/components/responses/E403'
'413':
$ref: '#/components/responses/E413'
'429':
$ref: '#/components/responses/E429'
tags:
- Check
operationId: postV1CheckBatch
x-operation-id-source: derived
components:
responses:
E413:
description: Problem details (RFC 9457)
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
E403:
description: Problem details (RFC 9457)
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
E429:
description: Problem details (RFC 9457)
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
E400:
description: Problem details (RFC 9457)
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
E401:
description: Problem details (RFC 9457)
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
schemas:
Problem:
type: object
required:
- type
- title
- status
- code
- detail
properties:
type:
type: string
format: uri
title:
type: string
status:
type: integer
code:
type: string
examples:
- rate_limited
detail:
type: string
docs_url:
type: string
format: uri
CheckResult:
type: object
required:
- domain
- is_business
- category
- confidence
- recommendation
- reasons
properties:
email:
type:
- string
- 'null'
description: The address as sent (null for domain and URL checks).
url:
type: string
description: 'Only for URL checks: the website address as sent. Its host (without www.) is the checked domain.'
normalized_email:
type:
- string
- 'null'
description: Lowercased, IDN-normalised, +tag removed.
domain:
type:
- string
- 'null'
is_business:
type: boolean
description: True for business, education and government.
category:
type: string
enum:
- business
- personal
- disposable
- relay
- education
- government
- invalid
- unknown
confidence:
type: number
minimum: 0
maximum: 1
recommendation:
type: string
enum:
- allow
- review
- block
policy:
type: string
enum:
- b2b
- strict
- lenient
is_free_provider:
type: boolean
is_disposable:
type: boolean
is_relay:
type: boolean
is_role_account:
type: boolean
shared_inbox:
type: object
description: 'Hint that the address is a shared inbox: one mailbox several people answer from (a Microsoft 365 shared mailbox, a Google collaborative inbox, a helpdesk address) such as support@ or billing@. Only the name is evidence: 0.3 (low) on a match, 0 otherwise. Never changes the recommendation.'
properties:
confidence:
type: number
enum:
- 0
- 0.3
- 1
match:
type:
- string
- 'null'
description: The word that matched, or googlegroups.com.
examples:
- support
- billing
- sales
group:
type: object
description: Hint that the address is a group that forwards to many members (a Google Group, a Microsoft 365 group or distribution list) such as team@ or all@. 0.3 (low) on a name match, 1 for @googlegroups.com, 0 otherwise. Never changes the recommendation.
properties:
confidence:
type: number
enum:
- 0
- 0.3
- 1
match:
type:
- string
- 'null'
description: The word that matched, or googlegroups.com.
examples:
- team
- all
- googlegroups.com
is_blocked:
type: boolean
is_new_domain:
type: boolean
is_lookalike:
type: boolean
has_subaddress:
type: boolean
did_you_mean:
type:
- string
- 'null'
description: Suggested domain for a likely typo.
mail:
type: object
properties:
has_mx:
type:
- boolean
- 'null'
provider:
type:
- string
- 'null'
examples:
- google_workspace
- microsoft_365
- proofpoint
mx:
type: array
items:
type: object
properties:
priority:
type: integer
host:
type: string
provider:
type:
- string
- 'null'
spf:
type:
- string
- 'null'
dmarc_policy:
type:
- string
- 'null'
enum:
- none
- quarantine
- reject
- null
workspace:
type: object
properties:
google_workspace:
type: object
properties:
detected:
type: boolean
evidence:
type: array
items:
type: string
microsoft_365:
type: object
properties:
detected:
type: boolean
tenant_id:
type:
- string
- 'null'
format: uuid
tenant_region:
type:
- string
- 'null'
auth:
type:
- string
- 'null'
enum:
- managed
- federated
- null
identity_provider:
type:
- string
- 'null'
examples:
- okta
- adfs
- ping
evidence:
type: array
items:
type: string
other_suite:
type:
- string
- 'null'
pending:
type: boolean
integrations:
type: object
properties:
google_workspace_ready:
type: boolean
microsoft_365_ready:
type: boolean
domain_age_days:
type:
- integer
- 'null'
reasons:
type: array
items:
type: string
description: See https://isbusinessemail.com/docs/reason-codes
degraded:
type: boolean
description: DNS was unavailable; the verdict is from lists only.
cached:
type: boolean
took_ms:
type: integer
request_id:
type: string
securitySchemes:
bearer:
type: http
scheme: bearer
description: 'Authorization: Bearer ibe_live_...'
apiKey:
type: apiKey
in: header
name: X-API-Key