NumValidate

Data API · Phone validation · Number type detection · Carrier lookup

TL;DR

NumValidate verifies international phone numbers. Submit a number with country code and get validation status, line type (mobile, landline, VoIP, toll-free), carrier/operator name, location, and formatted output. Supports numbers from 200+ countries and territories worldwide.

Quick start: https://api.numvalidate.com/validate?access_key=YOUR_KEY&number=14158586273

Free tier available — register for an API key (free plan includes 100 requests/month)

How to Use This API

1. Validate a Phone Number (E.164 Format)

https://api.numvalidate.com/validate?access_key=YOUR_KEY&number=14158586273

Returns validation status, country, location, carrier, line type, and international/local formatted numbers.

2. Check with Country Code

https://api.numvalidate.com/validate?access_key=YOUR_KEY&number=442079460003&country_code=GB

Specify ISO country code to improve validation accuracy. Especially helpful for numbers with ambiguous country prefixes.

3. JavaScript — Signup Phone Validator

async function validatePhone(number, countryCode, apiKey) {
  const resp = await fetch(
    `https://api.numvalidate.com/validate` +
    `?access_key=${apiKey}&number=${encodeURIComponent(number)}` +
    (countryCode ? `&country_code=${countryCode}` : '')
  );
  const data = await resp.json();
  
  return {
    valid: data.valid,
    number: data.international_format || data.local_format,
    location: data.location,
    carrier: data.carrier,
    lineType: data.line_type,
    country: data.country_name
  };
}

async function checkNumber() {
  const result = await validatePhone('14158586273', 'US', 'YOUR_KEY');
  if (result.valid) {
    console.log(`${result.number} is valid`);
    console.log(`Type: ${result.lineType}, Carrier: ${result.carrier}`);
    console.log(`Location: ${result.location}, ${result.country}`);
  } else {
    console.log('Invalid phone number');
  }
}

checkNumber();

4. Python — Batch Phone Validation

import requests

def validate_phone(number, api_key, country_code=None):
    params = {
        'access_key': api_key,
        'number': number
    }
    if country_code:
        params['country_code'] = country_code
    
    resp = requests.get(
        'https://api.numvalidate.com/validate',
        params=params
    )
    return resp.json()

def check_phone_list():
    api_key = 'YOUR_KEY_HERE'
    numbers = [
        ('14158586273', 'US'),
        ('447911123456', 'GB'),
        ('61415012345', 'AU')
    ]
    
    for number, country in numbers:
        result = validate_phone(number, api_key, country)
        status = 'Valid' if result.get('valid') else 'Invalid'
        print(f"{result.get('international_format', number)}: {status}")

check_phone_list()
Test phone validation (replace key): https://api.numvalidate.com/validate?access_key=YOUR_KEY&number=14158586273

Frequently Asked Questions

What number formats are supported?
Accepts international (E.164), national, and local formats. Best results with the full international number including country code (e.g., 14158586273 for US).
What line types can it detect?
Mobile, landline, VoIP, toll-free, premium rate, shared cost, and personal numbering. Helpful for determining SMS capabilities.
What is the free tier limit?
100 requests per month on the free plan. Paid plans offer higher volumes and additional features.
Does it work for all countries?
200+ countries and territories supported. Numbering plan data is regularly updated to reflect new area codes and carrier assignments.
Can I detect if a number is a mobile for SMS?
Yes, the line_type field indicates "mobile" when the number belongs to a mobile carrier — perfect for SMS deliverability checks.

API Details

API URL
https://api.numvalidate.com
Documentation
numvalidate.com/documentation
Category
Data
Authentication
API Key Required (free tier available)
Geographic Coverage
200+ Countries

What You Can Build