isBusinessEmail Check API

The Check API from isBusinessEmail — 2 operation(s) for check.

Operations 3

GET /v1/check Check an email address, domain or website URL #
POST /v1/check Check an email address, domain or website URL (recommended) #
POST /v1/check/batch Check up to 100 emails, domains or website URLs #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/isbusinessemail:isbusinessemail-check-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

isbusinessemail-check-api-openapi.yml Raw ↑
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