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? Contact us.
Submit numbers
POST up to 10 phone numbers. You receive a request_id 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 status is completed or failed. Poll calls do not consume quota.
curl https://api.bulknumberchecker.com/api/v1/check/req_abc123xyzExample 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 status is completed, 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/csvCSV 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 /openapi.json. 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.
Check Numbers Free