DEV Community

Olly
Olly

Posted on

Validate phone numbers in 3 lines of Python (carrier, line type, E.164)

Bad phone numbers quietly break SMS onboarding, 2FA and CRM imports. Here's how to clean them at signup time with one HTTP call.

The request

import requests
r = requests.get(
    "https://phonekit-phone-number-validation-carrier-line-type.p.rapidapi.com/validate",
    params={"number": "07911 123456", "country": "GB"},
    headers={"X-RapidAPI-Key": "YOUR_KEY",
             "X-RapidAPI-Host": "phonekit-phone-number-validation-carrier-line-type.p.rapidapi.com"})
print(r.json())
Enter fullscreen mode Exit fullscreen mode

What you get back

{"valid": true, "e164": "+447911123456", "international": "+44 7911 123456",
 "line_type": "mobile", "carrier": "JT", "region": "GG",
 "timezones": ["Europe/Guernsey", "Europe/London"]}
Enter fullscreen mode Exit fullscreen mode

Practical uses

  • Store e164 only, so duplicates stop slipping in as "07911…" vs "+44 7911…".
  • Block line_type: "voip" or "fixed_line" before you pay to send an SMS code.
  • Use timezones to avoid texting people at 3 a.m.
  • POST /bulk cleans 100 numbers per call for CRM imports.

It's built on Google's libphonenumber metadata (240+ regions). Free tier: 200 calls/month. PhoneKit on RapidAPI

What do you use for phone validation today? Happy to add fields people need.

Top comments (0)