---
title: Bulk Domain Checker API - Search Multiple Domains at Once
version: 1.0.0
description: Check the availability of up to 100 domains in a single POST request. Uses DNS-based or WHOIS-based lookups to determine domain availability. Returns an array of results with domain name, availability status, and a per-item processing flag. Domains that fail to resolve are still returned with status false and no domainAvailability field, rather than as a separate error object — such a batch returns 206 Partial Success, and result order is not guaranteed to match the request order.
openapi: 3.1.1
servers:
  - https://api.apifreaks.com/v1.0
paths: 1
operations: 1
schemas: 4
---

## Table of Contents

- [Bulk Domain Checker API - Search Multiple Domains at Once v1.0.0](#bulk-domain-checker-api-search-multiple-domains-at-once-v100)
  - [Authentication](#authentication)
  - [Domain APIs](#domain-apis)
    - [checkBulkDomainAvailability](#checkbulkdomainavailability)
      - [Parameters](#parameters)
      - [Responses](#responses)
  - [Schemas](#schemas)
    - [BulkDomainCheckRequest](#bulkdomaincheckrequest)
    - [BulkDomainCheckResponse](#bulkdomaincheckresponse)
    - [BulkDomainCheckItem](#bulkdomaincheckitem)
    - [ErrorResponse](#errorresponse)



# Bulk Domain Checker API - Search Multiple Domains at Once v1.0.0

Check the availability of up to 100 domains in a single POST request. Uses DNS-based or WHOIS-based lookups to determine domain availability. Returns an array of results with domain name, availability status, and a per-item processing flag. Domains that fail to resolve are still returned with status false and no domainAvailability field, rather than as a separate error object — such a batch returns 206 Partial Success, and result order is not guaranteed to match the request order.

Base URLs:

* [https://api.apifreaks.com/v1.0](https://api.apifreaks.com/v1.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.

## Domain APIs

### checkBulkDomainAvailability

`POST /domain/availability`

*Check the availability of multiple domains in a single request.*

Perform Bulk Domain Availability checks using a list of domains. Supports upto `100 Domains Per Request`.

> Body parameter

```json
{
  "domainNames": [
    "google.com",
    "example.com",
    "techguruss.com"
  ]
}
```

#### Parameters

|Name|In|Type|Required|Description|
|---|---|---|---|---|
|format|query|string|false|Format of the response.|
|source|query|string|false|Specify the data source for domain availability checks. Use "dns" for DNS-based lookups or "whois" for WHOIS-based lookups. By default, "dns" is used.|
|body|body|[BulkDomainCheckRequest](#bulkdomaincheckrequest)|true|none|

##### Enumerated Values

|Parameter|Value|
|---|---|
|format|json|
|format|xml|
|source|dns|
|source|whois|

> Example responses

> Successful response — every domain in the batch resolved.

```json
{
  "bulk_domain_availability_response": [
    {
      "domain": "google.com",
      "domainAvailability": false,
      "status": true
    },
    {
      "domain": "thisdomainisdefinitelyavailablexyz123abc.com",
      "domainAvailability": true,
      "status": true
    }
  ]
}
```

> Partial Success — one or more domains in the batch failed to resolve. Failed entries have status false and no domainAvailability field. Even a batch where every domain fails still returns 206, not an error status.

```json
{
  "bulk_domain_availability_response": [
    {
      "domain": "notadomain",
      "status": false
    },
    {
      "domain": "google.com",
      "domainAvailability": false,
      "status": true
    },
    {
      "domain": "test.an",
      "status": false
    }
  ]
}
```

> Bad Request — Missing or malformed request body

```json
{
  "error": "Invalid request body Exception",
  "message": "Please provide data in required format in request body",
  "path": "/v1.0/domain/availability",
  "status": 400,
  "timestamp": "2026-07-27T12:23:33.394Z"
}
```

> Payload Too Large — Request body exceeds the size limit

```json
{
  "error": "Payload too large Exception",
  "message": "Maximum request body size limit exceeded",
  "path": "/v1.0/domain/availability",
  "status": 413,
  "timestamp": "2026-07-27T12:23:46.923Z"
}
```

#### Responses

|Status|Meaning|Description|Schema|
|---|---|---|---|
|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Successful response — every domain in the batch resolved.|[BulkDomainCheckResponse](#bulkdomaincheckresponse)|
|206|[Partial Content](https://tools.ietf.org/html/rfc7233#section-4.1)|Partial Success — one or more domains in the batch failed to resolve. Failed entries have status false and no domainAvailability field. Even a batch where every domain fails still returns 206, not an error status.|[BulkDomainCheckResponse](#bulkdomaincheckresponse)|
|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request — Missing or malformed request body|[ErrorResponse](#errorresponse)|
|413|[Payload Too Large](https://tools.ietf.org/html/rfc7231#section-6.5.11)|Payload Too Large — Request body exceeds the size limit|[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.|
|206|X-AF-Credits-Cost|integer||Specifies the number of credits consumed by the current request.|
|400|X-AF-Credits-Cost|integer||Specifies the number of credits consumed by the current request.|
|413|X-AF-Credits-Cost|integer||Specifies the number of credits consumed by the current request.|

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

## Schemas

### BulkDomainCheckRequest

Request body for bulk domain availability check.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|domainNames|[string]|true|none|List of domain names to check. Maximum 100 domains per request.|

### BulkDomainCheckResponse

Wrapper containing the per-domain results array.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|bulk_domain_availability_response|[[BulkDomainCheckItem](#bulkdomaincheckitem)]|true|none|Array of per-domain results. Order is not guaranteed to match the request order. Domains that fail to resolve appear with status false and no domainAvailability field.|

### BulkDomainCheckItem

Result for a single domain in a bulk check. domainAvailability is present only when status is true.

#### Properties

|Name|Type|Required|Restrictions|Description|
|---|---|---|---|---|
|domain|string|true|none|Name of the queried domain.|
|domainAvailability|boolean|false|none|True if available, false if not available. Absent when this domain failed to resolve (status false).|
|status|boolean|true|none|Whether this domain was successfully processed.|

### 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).|
