Skip to content

Phone numbers in Portugal (+351)

+351 is the calling code of Portugal. There is no trunk prefix, and the international prefix is 00. Every mobile number starts with 169, 609, 639, 659, 669, 91–93, 948 or 96, and no other type of number in the plan does. Read from libphonenumber’s numbering metadata (release 9.0.41), never from a number anyone typed.

Dialling and writing numbers in Portugal

The trunk prefix is dialled in front of a number inside the country and dropped after the calling code; the international prefix is dialled to call out of it. The lengths and the leading digits below say which numbers the plan accepts and what their first digits tell you about the line type.

trunk prefixnone: a number is dialled the same way at home and after the calling code
international prefix00
length, mobile9 digits
length, fixed line9 digits
length, toll free9 digits
length, premium rate9 digits
length, shared cost9 digits
length, VoIP9 digits
length, personal number9 digits
length, pager9 digits
length, universal access number9 digits
mobiles start with169, 609, 639, 659, 669, 91–93, 948 or 96
mobile vs fixed lineseparate ranges in the plan

Lengths count the national significant number, the digits after the calling code, without the trunk prefix. Every value is read from libphonenumber’s metadata, release 9.0.41, which a lookup runs on.

One number in each of its written forms

written nationally912 345 678
written internationally+351 912 345 678
E.164+351912345678
dialled from the United States011 351 912 345 678
dialled from the United Kingdom00 351 912 345 678

This is libphonenumber’s example mobile number, formatted by libphonenumber. An example number can be in service, so read it as notation and never dial or text it.

The numbering plan for Portugal

Every phone lookup starts from the numbering metadata: it settles whether a number is valid for Portugal, how it is written nationally and internationally, and which line type its range belongs to. The example numbers below are libphonenumber’s examples of each line type’s format; one may be in service, so read them for their shape and never dial or text one as a test.

calling_code+351
example, mobile+351 912 345 678
example, fixed line+351 21 234 5678
example, toll free+351 800 123 456
example, premium rate+351 760 123 456
example, VoIP+351 301 234 567
example, pager+351 622 212 345
example, shared cost+351 808 123 456
regulator tablenone — libphonenumber only
SMS-receiving listings83 listings that still score disposable, of 183 numbers listed for Portugal (lists of 2026-10-28)
fictional rangesnone in Spaw’s list
continentEurope
currencyEUR
timezoneEurope/Lisbon

The regulator table behind a lookup here

Spaw syncs no regulator block table for Portugal, so a lookup here answers from the numbering metadata alone: the format, the line type and the region of a number, with block_status null and carrier the original network of the range where the metadata’s carrier data names one (carrier_source numbering_plan), else null.

What a lookup answers for a number here

Every number the plan accepts for Portugal comes back with its formats, its line_type and line_type_source, its region and timezones, and the is_fictional and is_disposable flags from the bundled fiction ranges and the synced list of SMS-receiving numbers. With no regulator table here, block_status answers null, and carrier is the range’s original network where the numbering metadata names one (carrier_source numbering_plan), else null.

That carrier is the network libphonenumber’s carrier data names for the range, its original allocation. Mobile numbers here can move between networks (the metadata flags the region as portable), so it says nothing about who serves one number today, and a name can be one the network no longer trades under.

Europe/Lisbon: the whole country keeps one clock, so a lookup answers that zone for every number here.

Run the lookup

The plan’s own example number, answered with every field:

curl https://spaw.co/api/v1/phone \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"phone": "+351 912 345 678", "country": "PT"}'

Or try one without a key on the free phone number lookup, and read every field in the phone intelligence guide.

Other regions

Wrong result, or is it about you? If this tool said something you think is wrong, tell us and a person reads it. If Spaw is holding data about you and you never signed up here — a customer may have had your address verified, or reported that a message to it bounced — erase it yourself, confirmed by mail to that address and with no account needed.

More free tools

All free tools

Need this at scale?

The Spaw API runs the same lookup with batch and bulk endpoints, monitored number lists, your own suppression list and SMS outcome reporting — 100 free credits a month, no card required.

Get your API key