# Phone Number Lookup and Carrier Identification

- **URL:** https://hackindex.io/platforms/osint/identity-and-people-intelligence/phone-number-intelligence/carrier-lookup
- **Path:** OSINT > Identity & People Intelligence > Phone Number Intelligence
- **Up:** [Phone Number Intelligence](https://hackindex.io/platforms/osint/identity-and-people-intelligence/phone-number-intelligence.md)
- **Published:** 2026-04-11
- **Updated:** 2026-04-11

## Overview

Carrier lookup validates a phone number, identifies its country and network operator, and determines whether it is a mobile, landline, or VoIP number. This is the first step in any phone number investigation. It confirms the number is real, narrows the geographic scope, and tells you what kind of account to expect on messaging platforms.

VoIP numbers from providers like Google Voice, Twilio, or Skype are frequently used to maintain anonymity. Identifying a VoIP number early prevents wasted effort on reverse lookup sources that only hold data for carrier-registered numbers.

## Number Format Validation

Before querying any API, normalise the number to E.164 international format. A number without a country code will produce inconsistent results across tools.

Use `phonenumbers` in Python to parse and validate:

```python
import phonenumbers

number = phonenumbers.parse("+447911123456", None)
print(phonenumbers.is_valid_number(number))
print(phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.E164))
print(phonenumbers.region_code_for_number(number))
```

```
True
+447911123456
GB
```

The region code confirms the registered country. A number claiming to be from one country but registered in another is a useful anomaly worth noting.

## Carrier and Line Type Lookup

Twilio's Lookup API returns carrier name, line type, and ported status for any number. Ported status tells you whether the number has been moved between carriers, which is relevant for determining the current provider.

```bash
curl -s -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN "https://lookups.twilio.com/v2/PhoneNumbers/$PHONE_NUMBER?Fields=line_type_intelligence" | jq '{carrier: .line_type_intelligence.carrier_name, line_type: .line_type_intelligence.type, country: .country_code}'
# {
#   "carrier": {
#     "name": "Vodafone UK",
#     "type": "mobile",
#     "mobile_country_code": "234",
#     "mobile_network_code": "15"
#   },
#   "line_type": "mobile",
#   "country": "GB"
# }
```

Line type values to know:

- `mobile`: standard SIM-based mobile number, most likely to have messaging platform accounts
- `landline`: fixed line, cannot receive SMS verification so unlikely to have WhatsApp or Signal
- `voip`: internet-based number, often used for anonymity, may still have Telegram registered
- `prepaid`: pay-as-you-go SIM, harder to attribute to a real identity through carrier records

## NumVerify

NumVerify provides carrier, line type, and location data with a free tier suitable for low-volume lookups:

```bash
curl -s "http://apilayer.net/api/validate?access_key=$NUMVERIFY_API_KEY&number=$PHONE_NUMBER&country_code=&format=1" | jq '{valid, country_name, carrier, line_type}'
# {
#   "valid": true,
#   "country_name": "United Kingdom",
#   "carrier": "Vodafone",
#   "line_type": "mobile"
# }
```

## PhoneInfoga

PhoneInfoga is a dedicated phone number OSINT tool that combines format validation, carrier lookup, and open source searches in a single run. It queries multiple sources and returns a consolidated report.

```bash
phoneinfoga scan -n $PHONE_NUMBER
# [+] Running local scan
#   Country code: +44
#   Country: United Kingdom
#   Carrier: Vodafone
#   Line type: mobile
# [+] Running Numverify scan
# [+] Running Google scan
# [+] Running Ovh scan
```

```bash
phoneinfoga serve
```

The `serve` command launches a local web interface for running scans interactively. Useful when investigating multiple numbers in a session.

## Interpreting Results

Carrier and line type data tells you where to focus next. A mobile number on a major national carrier moves to reverse phone search and messaging platform enumeration. A VoIP number is less likely to yield a real name from carrier records but may still have Telegram registered and is worth checking for breach appearances. A prepaid mobile from a country inconsistent with other intelligence about the subject is worth noting as a potential anonymisation measure.

## References

- [Twilio Lookup API v2](https://www.twilio.com/docs/lookup/v2-api) - Carrier, line type, and caller name lookup endpoint (v2, current)
- [PhoneInfoga: GitHub](https://github.com/sundowndev/phoneinfoga) - Phone number OSINT tool combining carrier lookup and open source searches
- [NumVerify API Documentation](https://numverify.com/documentation) - Phone number validation and carrier lookup with free tier
