---
title: Bulk Disposable Email Checker API - Check Multiple Emails for Disposable Domains
version: 1.0.0
description: Check up to 100 email addresses in a single POST request for disposable/temporary domains, free webmail providers, spam-listed domains, and role-based accounts. Each entry can include an optional ip to also get its geolocation and security signals. Each entry is processed independently and returned in the same order as the request. The whole request is rejected with a 400 if emailData is empty/missing or contains a null entry or an entry without a valid email. Maximum 100 entries per request.
openapi: 3.1.1
servers:
  - https://api.apifreaks.com/v2.0
paths: 1
operations: 1
schemas: 11
---

## Table of Contents

- [Bulk Disposable Email Checker API - Check Multiple Emails for Disposable Domains v1.0.0](#bulk-disposable-email-checker-api-check-multiple-emails-for-disposable-domains-v100)
  - [Authentication](#authentication)
  - [Email Validation APIs](#email-validation-apis)
    - [bulkCheckDisposableEmail](#bulkcheckdisposableemail)
      - [Parameters](#parameters)
      - [Responses](#responses)
  - [Schemas](#schemas)
    - [BulkDisposableEmailCheckResponse](#bulkdisposableemailcheckresponse)
    - [DisposableEmailCheckResult](#disposableemailcheckresult)
    - [DisposableDomainObject](#disposabledomainobject)
    - [DisposableAccountObject](#disposableaccountobject)
    - [DisposableDnsObject](#disposablednsobject)
    - [BulkDisposableEmailRequest](#bulkdisposableemailrequest)
    - [ErrorResponse](#errorresponse)
    - [DisposableEmailEntry](#disposableemailentry)
    - [AddressObject](#addressobject)
    - [EmailLocation](#emaillocation)
    - [EmailSecurity](#emailsecurity)



# Bulk Disposable Email Checker API - Check Multiple Emails for Disposable Domains v1.0.0

Check up to 100 email addresses in a single POST request for disposable/temporary domains, free webmail providers, spam-listed domains, and role-based accounts. Each entry can include an optional ip to also get its geolocation and security signals. Each entry is processed independently and returned in the same order as the request. The whole request is rejected with a 400 if emailData is empty/missing or contains a null entry or an entry without a valid email. Maximum 100 entries per request.

Base URLs:

* [https://api.apifreaks.com/v2.0](https://api.apifreaks.com/v2.0)

## Authentication

* API Key (ApiKeyAuthHeader)
    - Parameter Name: **X-apiKey**, in: header. Pass your API key via the X-apiKey request header.

* API Key (ApiKeyAuthQuery)
    - Parameter Name: **apiKey**, in: query. Pass your API key via the apiKey query parameter.

## Email Validation APIs

### bulkCheckDisposableEmail

`POST /email/disposable-check/bulk`

*Check multiple emails for disposable/temporary domains*

Checks a bulk of email addresses (each with an optional ip) and returns a disposable email check result for each, in the same order as the request. Maximum `100` entries per request.

> Body parameter

```json
{
  "emailData": [
    {
      "email": "abc"
    },
    {
      "email": "john@microsoft.com",
      "ip": "8.8.8.8"
    },
    {
      "email": "test@mailinator.com"
    }
  ]
}
```

#### Parameters

|Name|In|Type|Required|Description|
|---|---|---|---|---|
|format|query|string|false|Format of the response.|
|body|body|[BulkDisposableEmailRequest](#bulkdisposableemailrequest)|true|none|

##### Enumerated Values

|Parameter|Value|
|---|---|
|format|json|
|format|xml|

> Example responses

> Successful response. Each item corresponds to one requested email, in the same order as the request.

```json
{
  "disposableEmailResponse": [
    {
      "email": "abc",
      "validSyntax": false,
      "domain": {
        "name": "abc",
        "validDomain": false
      }
    },
    {
      "email": "john@microsoft.com",
      "validSyntax": true,
      "domain": {
        "disposable": false,
        "free": false,
        "name": "microsoft.com",
        "spam": false,
        "validDomain": true
      },
      "account": {
        "role": false
      },
      "dns": {
        "mxRecord": [
          "microsoft-com.mail.protection.outlook.com."
        ]
      },
      "ip": "8.8.8.8",
      "address": {
        "validIpAddress": true,
        "location": {
          "city": "Mountain View",
          "district": "Santa Clara",
          "zipcode": "94043-1351",
          "state_prov": "California",
          "country_name": "United States",
          "continent_name": "North America",
          "continent_code": "NA",
          "country_code2": "US",
          "country_code3": "USA",
          "country_name_official": "United States of America",
          "is_eu": false
        },
        "security": {
          "threat_score": 5,
          "is_tor": false,
          "is_proxy": false,
          "is_anonymous": false,
          "is_known_attacker": false,
          "is_spam": false,
          "is_bot": false,
          "is_cloud_provider": true,
          "cloud_provider": "Google LLC"
        }
      }
    },
    {
      "email": "test@mailinator.com",
      "validSyntax": true,
      "domain": {
        "disposable": true,
        "free": false,
        "name": "mailinator.com",
        "spam": false,
        "validDomain": true
      },
      "account": {
        "role": false
      },
      "dns": {
        "mxRecord": [
          "mail.mailinator.com.",
          "mail2.mailinator.com."
        ]
      }
    }
  ]
}
```

> Bad Request – Invalid request body, empty/missing emailData, or a null entry / entry without a valid email

```json
{
  "error": "Missing or Invalid Parameters",
  "message": "Please pass at least one entry in 'emailData'.",
  "path": "/v2.0/email/disposable-check/bulk",
  "status": 400,
  "timestamp": "2026-10-13T10:39:42.887Z"
}
```

```json
{
  "error": "Missing or Invalid Parameters",
  "message": "'emailData' must not contain null entries or entries without a valid 'email'.",
  "path": "/v2.0/email/disposable-check/bulk",
  "status": 400,
  "timestamp": "2026-10-13T10:39:44.002Z"
}
```

```json
{
  "error": "Invalid Param Exception",
  "message": "Please provide apiKey",
  "path": "/v2.0/email/disposable-check/bulk",
  "status": 400,
  "timestamp": "2026-10-13T10:40:02.684Z"
}
```

> Unauthorized – Invalid API key

```json
{
  "error": "API Access Exception",
  "message": "Provided API key is invalid. [For Technical Support: support@apifreaks.com]",
  "path": "/v2.0/email/disposable-check/bulk",
  "status": 401,
  "timestamp": "2026-10-13T10:40:03.166Z"
}
```

> Not Found – The requested resource could not be found

```json
{
  "error": "Resource Not Found",
  "message": "The requested resource could not be found. Please verify the URL and try again.",
  "path": "/v2.0/email/disposable-check/bulkx",
  "status": 404,
  "timestamp": "2026-10-13T11:00:08.337Z"
}
```

> Payload Too Large – emailData exceeds the maximum of 100 entries per request

```json
{
  "error": "Payload too large Exception",
  "message": "Maximum request body size limit exceeded",
  "path": "/v2.0/email/disposable-check/bulk",
  "status": 413,
  "timestamp": "2026-10-13T10:39:58.052Z"
}
```

#### Responses

|Status|Meaning|Description|Schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Successful response. Each item corresponds to one requested email, in the same order as the request.|[BulkDisposableEmailCheckResponse](#bulkdisposableemailcheckresponse)|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request – Invalid request body, empty/missing emailData, or a null entry / entry without a valid email|[ErrorResponse](#errorresponse)|
|401|[Unauthorized](https://tools.ietf.org/html/rfc7235#section-3.1)|Unauthorized – Invalid API key|[ErrorResponse](#errorresponse)|
|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found – The requested resource could not be found|[ErrorResponse](#errorresponse)|
|413|[Payload Too Large](https://tools.ietf.org/html/rfc7231#section-6.5.11)|Payload Too Large – emailData exceeds the maximum of 100 entries per request|[ErrorResponse](#errorresponse)|

#### Response Headers

|Status|Header|Type|Format|Description|
|---|---|---|---|---|
|200|X-AF-Credits-Cost|integer||Specifies the number of credits consumed by the current request. 15 credits per checked record (e.g. 3 emails = 45 credits).|
|200|X-Concurrent-Threads|integer||Specifies the maximum number of concurrent requests allowed.|
|200|X-Concurrent-Threads-Active|integer||Indicates the number of active concurrent requests being processed.|
|400|X-AF-Credits-Cost|integer||Specifies the number of credits consumed by the current request. 15 credits per checked record (e.g. 3 emails = 45 credits).|
|404|X-AF-Credits-Cost|integer||Specifies the number of credits consumed by the current request. 15 credits per checked record (e.g. 3 emails = 45 credits).|
|413|X-AF-Credits-Cost|integer||Specifies the number of credits consumed by the current request. 15 credits per checked record (e.g. 3 emails = 45 credits).|

To perform this operation, you must be authenticated by means of one of the following methods:
ApiKeyAuthHeader, ApiKeyAuthQuery

## Schemas

### BulkDisposableEmailCheckResponse

Wrapper containing the per-email results array.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|disposableEmailResponse|[[DisposableEmailCheckResult](#disposableemailcheckresult)]|true|none|Array of per-email results, one entry per requested email, in the same order as the request.|

### DisposableEmailCheckResult

Disposable email check result for a single item in the bulk request.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|email|string|true|none|The email address submitted for the check.|
|validSyntax|boolean|true|none|Validates email address format compliance with RFC 5322 standards. When false, domain only contains name/validDomain and account/dns are omitted entirely.|
|domain|[DisposableDomainObject](#disposabledomainobject)|true|none|Domain-level disposable/spam/free classification for the email address.|
|account|[DisposableAccountObject](#disposableaccountobject)|false|none|Account-level detection details. Omitted entirely when validSyntax is false.|
|dns|[DisposableDnsObject](#disposablednsobject)|false|none|DNS records for the email domain. Omitted entirely when validSyntax is false or the domain does not exist (NXDOMAIN).|
|ip|any|false|none|The IP address that was looked up.|

anyOf

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|» *anonymous*|string(ipv4)|false|none|none|

or

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|» *anonymous*|string(ipv6)|false|none|none|

continued

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|address|[AddressObject](#addressobject)|false|none|Geolocation and security enrichment data for the IP address.|

### DisposableDomainObject

Domain-level disposable/spam/free classification for the email address.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|name|string|true|none|Extracted domain component from the email address.|
|validDomain|boolean|true|none|Domain validation status confirming DNS resolution capability.|
|disposable|boolean|false|none|Classification flag identifying domains from temporary/throwaway email service providers. Omitted when validSyntax is false or the domain could not be resolved.|
|free|boolean|false|none|Classification indicating free or consumer-grade email service providers. Omitted when validSyntax is false or the domain could not be resolved.|
|spam|boolean|false|none|Reputation indicator flagging domains on spam databases. Omitted when validSyntax is false or the domain could not be resolved.|

### DisposableAccountObject

Account-level detection details. Omitted entirely when validSyntax is false.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|role|boolean|true|none|Detection flag identifying role-based email addresses (e.g., admin@, support@).|

### DisposableDnsObject

DNS records for the email domain. Omitted entirely when validSyntax is false or the domain does not exist (NXDOMAIN).

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|mxRecord|[string]|false|none|Every MX hostname at the domain's lowest preference (not just one). ["."]  means the domain publishes a null MX and accepts no mail at all. Absent entirely when the domain has no MX record of any kind — check aRecord in that case.|
|aRecord|[string]|false|none|Collection of A (Address) records for the domain. Present when the domain has no MX record but does resolve to a web server or other host.|

### BulkDisposableEmailRequest

Request body for bulk disposable email check.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|emailData|[[DisposableEmailEntry](#disposableemailentry)]|true|none|Entries to check. Maximum 100 per request. Must not be empty, and must not contain null entries or entries without a valid email.|

### ErrorResponse

Standard error envelope returned by the API on failed requests.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|error|string|false|none|Short error category or exception type.|
|message|string|true|none|Human-readable error message describing the failure.|
|path|string|false|none|API endpoint path that produced the error.|
|status|integer|false|none|HTTP status code returned with the error.|
|timestamp|string(date-time)|false|none|Timestamp when the error occurred (ISO 8601).|

### DisposableEmailEntry

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|email|string|true|none|The email address to check.|
|ip|any|false|none|Optional IP address to look up for location and security data, such as the IP the signup came from.|

anyOf

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|» *anonymous*|string(ipv4)|false|none|none|

or

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|» *anonymous*|string(ipv6)|false|none|none|

### AddressObject

Geolocation and security enrichment data for the IP address.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|validIpAddress|boolean|false|none|IP recognized/reachable by the geolocation provider.|
|location|[EmailLocation](#emaillocation)|false|none|Geolocation data derived from the IP address.|
|security|[EmailSecurity](#emailsecurity)|false|none|Threat and anonymity profile for the IP address.|

### EmailLocation

Geolocation data derived from the IP address.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|city|string|false|none|Municipal or city name.|
|district|string|false|none|District or neighborhood.|
|zipcode|string|false|none|Postal or ZIP code.|
|state_prov|string|false|none|State or province.|
|country_name|string|false|none|Common country name.|
|country_name_official|string|false|none|Official country name.|
|country_code2|string|false|none|Two-character ISO country code.|
|country_code3|string|false|none|Three-character ISO country code.|
|continent_name|string|false|none|Continental region name.|
|continent_code|string|false|none|Continental region identifier.|
|accuracy_radius|string|false|none|Geolocation precision radius. Not included for every IP.|
|confidence|string|false|none|Confidence score for geolocation accuracy. Not included for every IP.|
|is_eu|boolean|false|none|European Union membership status.|

### EmailSecurity

Threat and anonymity profile for the IP address.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|threat_score|integer|true|none|Quantitative risk assessment score. Higher values indicate elevated security risk.|
|is_tor|boolean|true|none|Detection flag for IP addresses routed through the Tor anonymity network.|
|is_proxy|boolean|true|none|Detection flag identifying IP addresses operating as proxy servers.|
|proxy_type|string|false|none|Classification of detected proxy infrastructure type (e.g. VPN, HTTP, SOCKS). Included only when is_proxy is true.|
|proxy_provider|string|false|none|Identified service provider operating the proxy infrastructure. Included only when is_proxy is true.|
|is_anonymous|boolean|true|none|Anonymization detection flag for IP addresses using identity obfuscation techniques.|
|is_known_attacker|boolean|true|none|Threat intelligence flag for IP addresses documented as confirmed malicious sources.|
|is_spam|boolean|true|none|Reputation flag for IP addresses associated with spam transmission.|
|is_bot|boolean|true|none|Automated traffic detection flag for IP addresses from bot networks.|
|is_cloud_provider|boolean|true|none|Infrastructure classification flag for IP addresses from cloud computing providers.|
|cloud_provider|string|true|none|Identified cloud infrastructure or hosting service provider name.|
