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()
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_typefield 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
- Signup form phone validation with carrier and type detection
- SMS gateway integration — verify mobile numbers before sending
- CRM phone number cleaning and standard formatting
- Two-factor authentication phone validation
- International phone number formatting for global contact lists