Skip to content
BulkNumberChecker

WAChecker Public API

A simple, no-auth REST API to check whether phone numbers are registered on WhatsApp. Build automations, AI agents, and integrations without signing up or paying.

Free tier limits

  • 10 numbers per request — submit up to 10 phone numbers in one API call.
  • 5 requests per IP per day — quota resets at UTC midnight.
  • Poll endpoints are unmetered — GET calls do not consume quota. Poll as often as needed.

Need higher limits? .

Submit numbers

POST up to 10 phone numbers. You receive a immediately. Validation happens asynchronously.

curl -X POST https://api.bulknumberchecker.com/api/v1/check \
  -H "Content-Type: application/json" \
  -d '{
    "numbers": ["+6281234567890", "+14155552671"],
    "default_country": "ID"
  }'

Example response:

{
  "request_id": "req_abc123xyz",
  "total": 2,
  "cached": 0,
  "pending": 2,
  "status": "pending",
  "status_url": "https://api.bulknumberchecker.com/api/v1/check/req_abc123xyz",
  "rate_limit": {
    "limit": 5,
    "remaining": 4,
    "reset_at": "2026-04-16T00:00:00.000Z"
  }
}

Poll for results

Poll every 3–5 seconds until is or . Poll calls do not consume quota.

curl https://api.bulknumberchecker.com/api/v1/check/req_abc123xyz

Example completed response:

{
  "request_id": "req_abc123xyz",
  "status": "completed",
  "progress": { "total": 2, "completed": 2, "cached": 0 },
  "eta_seconds": null,
  "results": [
    {
      "input": "+6281234567890",
      "phoneNumber": "+6281234567890",
      "countryCode": "ID",
      "countryName": "Indonesia",
      "whatsappStatus": "valid"
    },
    {
      "input": "+14155552671",
      "phoneNumber": "+14155552671",
      "countryCode": "US",
      "countryName": "United States",
      "whatsappStatus": "invalid"
    }
  ]
}

Download CSV

Once is , download results as a CSV file. Returns 404 {error:"not_ready"} if called before completion.

curl -o results.csv \
  https://api.bulknumberchecker.com/api/v1/check/req_abc123xyz/csv

CSV columns: Input, Phone Number, Country Code, Country, WhatsApp Status

Code examples

// JavaScript (fetch) — submit, poll, and print results
const API = "https://api.bulknumberchecker.com";

async function checkNumbers(numbers) {
  // Step 1: submit
  const res = await fetch(`${API}/api/v1/check`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ numbers }),
  });
  if (!res.ok) throw new Error(`Submit failed: ${res.status}`);
  const { request_id } = await res.json();

  // Step 2: poll until completed
  while (true) {
    const poll = await fetch(`${API}/api/v1/check/${request_id}`);
    const data = await poll.json();

    if (data.status === "completed") return data.results;
    if (data.status === "failed")   throw new Error("Validation failed");

    await new Promise((r) => setTimeout(r, 3000)); // wait 3s
  }
}

checkNumbers(["+6281234567890", "+14155552671"])
  .then((results) => console.log(results))
  .catch(console.error);

OpenAPI 3.1 Specification

The full machine-readable API spec is available at . Load it into any OpenAPI-compatible tool (Postman, Insomnia, Stoplight, Scalar, etc.) or feed it to an AI agent as a tool definition.

Resources

Try the web tool

No code needed — paste numbers and get results in 30 seconds.