Phone Number Lookup & Validation API
Check whether a phone number is real, which carrier it belongs to and whether it's mobile, landline or VoIP, with one API call. Stop fake sign-ups and failed SMS before they cost you.
Checking a single number? Use the free phone number validator
Everything you need to clean and enrich phone data
Validation, carrier lookup and formatting in one API, at a price that grows with you.
100 free requests a month
Enough to build and test your integration before you pay anything.
Global coverage
Numbers from 230+ countries and territories, from data sources we update continuously.
Support from engineers
Your questions go to the people who build the API, and you get an answer within 24 hours.
No rate limits on paid plans
Validate as many numbers in parallel as you need. Paid plans have no rate limit.
What every lookup returns
One request gives you everything you need to store, route and contact a number correctly.
- Carrier & line type
- The carrier and whether the number is mobile, landline, toll-free, premium-rate or satellite.
- VoIP detection
- A fine-grained number type flags VoIP, shared-cost, personal and UAN numbers, useful against fake sign-ups.
- Ready-to-use formats
- E.164 for SMS and voice providers, the national format for display and a tel: link for click-to-call.
- Local time zones
- The time zones of the number’s area, so you call and message customers at a sensible local time.
- 100 numbers per request
- Clean contact lists and CRM imports with batch validation: up to 100 numbers in one request.
- 230+ countries
- Validation and formatting for phone numbers of every country and territory.
Look up a number now
Enter any phone number and see exactly what the API returns for it.
Plain REST and JSON, with code examples, a Postman collection and complete documentation.
1
2
3
4
5
6
7
8
9
10{
"valid": true,
"line_type": "mobile",
"intl_format": "12069220880",
"local_format": "2069220880",
"country_name": "United States of America",
"country_code": "US",
"carrier": "AT&T Mobility LLC",
"location": "Novato"
}
"We had a few special requirements, and the NumlookupAPI team was super responsive & helpful, as they replied to all our questions and helped us get started within just a few hours. With the help of their phone number validation API, we managed to get our registration forms completely spam-free!"
Wernhard Berger Co-CEO, Breatheilo
// validate phone number
curl --request GET \
--url "https://api.numlookupapi.com/v1/validate/+12069220880" \
--header "apikey: YOUR-APIKEY"
// latest rates
$url = "https://api.numlookupapi.com/v1/validate/+12069220880?apikey=YOUR-APIKEY";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
// latest rates
const request = require('request-promise');
request('https://api.numlookupapi.com/v1/validate/+12069220880?apikey=YOUR-APIKEY')
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
// latest rates
try {
String apikey = "YOUR-APIKEY";
String url = "https://api.numlookupapi.com/v1/validate/+12069220880";
URL urlForGetRequest = new URL(url);
String readLine = null;
HttpURLConnection connection = (HttpURLConnection) urlForGetRequest.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer response = new StringBuffer();
while ((readLine = in.readLine()) != null) {
response.append(readLine);
}
in.close();
System.out.println(response.toString());
} else {
throw new Exception("Error in API Call");
}
} catch (Exception ex) {
ex.printStackTrace();
}
Up and running in minutes
One GET request with your API key returns everything about a number as JSON. The documentation covers every field and every error code.