Phone number lookup
Check whether a number is valid, how it should be formatted, what the numbering plan and the regulator's own allocation table say about its block, and whether it is fictional, disposable or held by a virtual-number wholesaler. Free, and without dialling anything.
Live demo
POST /demo/phone · no key needed
Response
Look up any number to see the full API response, straight from the live service. National formats need the country.
What gets checked
Every lookup runs the same pipeline as the Spaw API. The number is parsed against libphonenumber's metadata for its region, which settles validity, the E.164, national and international forms, the line type and the time zones. Where a regulator publishes its allocation table (NANPA, the CNAC, Ofcom, ARCEP, ACMA, ACM, the NAD and the IFT today), the block the number sits in is read too: whether it is allocated, who holds it, and, for the North American plan, whether the holder is a wireless carrier or a virtual-number wholesaler. Fictional ranges, the list of numbers published by SMS-receiving sites and a few digit patterns add the risk signals.
Reading the answer
valid means the number is assignable: it fits the plan and, where the table is installed, sits in an allocated block. An unassigned block answers invalid with the reason unassigned_block, because no carrier can have a subscriber there. The flags are tri-state: false is a checked negative and null means the dataset that would answer is not installed for that region. The risk score is plain arithmetic over the flags, listed in risk_signals with the dataset behind each one.
Area code pages
Every area code with allocated blocks has its own page built from the regulator's table: how many blocks it holds, which carriers were allocated them, and what the numbering plan says about the range.
Frequently asked questions
Does this tell me whether a number is active right now?
No. It tells you whether the number is valid for its numbering plan, which block it sits in and who that block was allocated to, whether the block is in service at all, and whether the number is fictional, disposable or held by a virtual-number wholesaler. Live reachability needs a carrier-network query, which the full API offers as an opt-in paid check.
Is the carrier the one serving the number today?
Not necessarily. The carrier comes from the regulator's allocation table or the numbering metadata, both of which record who a block was originally allocated to. A ported number keeps its original block, so the answer says who was allocated the block, never who serves the number now.
Why does a US number come back as fixed_line_or_mobile?
The North American plan assigns mobiles and landlines from the same blocks, so the number alone cannot tell them apart. When the block holder is a wireless carrier or a virtual-number wholesaler, the lookup uses that to settle the type and says so in line_type_source. Otherwise it stays honest and leaves the type ambiguous.
Is there a limit on this free lookup?
Ten lookups a minute per visitor, and repeated lookups of the same number are answered from a short cache. For volume, batch and bulk lists of up to 100,000 numbers, webhooks and monitors, create a free API key with 10 lookups a month included.
Need this at scale?
The Spaw API runs the same checks plus mailbox-level SMTP verification, batch and bulk endpoints, and list monitoring — 10 free lookups a month, no card required.