Guides

Italian phone number format: +39, 3xx mobiles, porting and AGCOM rules

Italian phone number format: +39, 3xx mobiles with 9 or 10 digits, landlines that keep the 0, tested validation code, porting, the RPO and anti-spoofing.

By Published 22 min readHow we research and fact-check

On this page

Italian numbers use the country code +39. A mobile number starts with 3 and has 10 digits after the code, so in E.164 it looks like +39 3XX XXX XXXX; some older mobiles have 9. Landline numbers start with 0, and that 0 stays after +39: a Milan number is +39 02 XXXX XXXX, not +39 2 XXXX XXXX. The prefix names the company that holds the block, but numbers have been portable since 2002, so it doesn't prove the current network.

This guide is part of our phone numbers by country series. The tables are generated from libphonenumber's metadata, our MNP atlas and our public catalog. Code samples use libphonenumber's own example numbers for Italy, and every other example is masked with X. We read AGCOM's numbering plan and decisions, the Garante's guidance, the laws on Normattiva and the Gazzetta Ufficiale, and the ministry's register of assigned numbers, between 2026-11-02 and 2026-11-03; most are in Italian only. This is a summary, not legal advice.

What does an Italian phone number look like?

Italy has no trunk prefix. The first digit of the national number tells you the service, and you dial the number the same way at home and from abroad, after +39. AGCOM's national numbering plan (Delibera 8/15/CIR, Annex A, Article 2) sorts numbers by that first digit:

First digitUsed forExample (masked)
0Geographic (landline) numbers02 XXXX XXXX (Milan), 06 XXXX XXXX (Rome)
1Short numbers and special services, such as 112 and customer care1XX
3Mobile and personal services3XX XXX XXXX
4Internal network services; 43X numbers for SMS, MMS and data services43X XX to 439 XXXXXXX
5Nomadic (VoIP) telephone services, code 5555 XXXX XXXX
7Internet dial-up access and mobile routing codes—
8Toll-free (800, 803), shared cost (84X) and premium rate (89X)800 XXX XXX
2, 6, 9Reserved for future use—

Mobile numbers are 10 digits. The plan gives each mobile operator four-digit codes of the form 3XYZ, with X from 2 to 9, followed by six subscriber digits, so 3XYZ UUUUUU (Article 8.3). Article 8.4 adds the exception: in blocks that were given out earlier under three-digit codes, operators may keep using 9-digit numbers, but no new number may have any length other than 10. So 3XX XXX XXX (9 digits) and 3XX XXX XXXX (10 digits) can both be real. Codes 37XY are reserved for numbers of mobile virtual network operators' customers.

Landline numbers keep their 0. A geographic number is the district code with its 0, then the subscriber number, with at most 11 digits in total (Article 7). The ITU's summary of the plan gives a minimum of 6 digits for geographic numbers, and a PBX with direct dial-in may add one more digit (ITU, 2012; plan, Article 7.2).

ItemValue
Country calling code+39
International call prefix (dialling out)00
Trunk prefix (dialling at home)none
Mobile: digits after +399, 10
Fixed line: digits after +396–12
Toll-free: digits after +396, 9
Premium rate: digits after +396, 8–10
Shared cost: digits after +396, 9
Personal number: digits after +399, 10
VoIP: digits after +3910
Voicemail access: digits after +3911, 12
Mobile, national format (masked)31X XXX XXXX
Mobile, international (masked)+39 31X XXX XXXX
Mobile, E.164 (masked)+3931XXXXXXXX
Fixed line, national format (masked)02 XXXX XXXX
Fixed line, international (masked)+39 02 XXXX XXXX
Fixed line, E.164 (masked)+3902XXXXXXXX

The voicemail row is an Italian detail. Each mobile operator has a three-digit access code in the 3 range that is put in front of the mobile number to reach the mailbox directly, which is why those numbers have 11 or 12 digits (plan, Article 8.7). They are valid numbers, but not a person's phone, so don't accept them as a sign-up number.

Store only the E.164 form: +39, then the national number exactly as written at home, with no spaces. That means +393XXXXXXXXX for a mobile and +3902XXXXXXXX for a Milan landline.

Two +39 number rows: a landline whose kept 0 has a check mark, a mobile starting with 3 with a 9-10 length pill; a crossed-out +39 2; a shield, mast and timeline; an RPO register sheet, clock and two SIM cards.Two +39 number rows: a landline whose kept 0 has a check mark, a mobile starting with 3 with a 9-10 length pill; a crossed-out +39 2; a shield, mast and timeline; an RPO register sheet, clock and two SIM cards.
Landlines keep the 0 after +39, mobiles start with 3, and spoofed Italian caller IDs from abroad are blocked.

Why does the 0 stay after +39?

Because Italy made it part of the number in 1998. Under the change Italy notified to the ITU, from 19 June 1998 every national call to a fixed line had to dial the full number with its 0, local calls included, and international calls changed from +39 NDC SN to +39 0NDC SN. The old and new formats ran in parallel until 18 December 1998; after that only the new one worked. Mobile numbers didn't change (ITU communication of 12 May 1998).

That creates two common data errors:

  • Dropping the 0. Forms and CRMs built for other countries strip a leading 0 before adding the country code. 02 XXXX XXXX then becomes +39 2XXXXXXXX, which is not a valid Italian number. In our test below, libphonenumber rejects it.
  • Adding a 0 to a mobile. Someone who assumes every national number has a trunk 0 writes a mobile as 03XX XXX XXXX. That isn't a mobile any more, and it can look like a valid landline: 031 is the area code of Como, so libphonenumber accepts 0312 345 6789 as a fixed line. A check for "valid" alone won't catch it; a check for "mobile" will.

The rule also runs the other way. Some people write +39 (0)2 … out of habit from Germany or the UK, where the bracketed 0 is dropped from abroad. In Italy it must be dialled, so remove the brackets and keep the digit.

Which prefixes are mobile numbers, and who holds each?

All mobile numbers start with 3. For each two-digit block, the generator counted every 9- and 10-digit number that libphonenumber's mobile pattern for IT accepts:

National prefixInternationalShare of the block that is mobile (9, 10-digit numbers)3-digit sub-blocks that aren't fully mobile
31+39 31100%—
32+39 32100%—
33+39 33100%—
34+39 34100%—
35+39 35100%—
36+39 36100%—
37+39 37100%—
38+39 38100%—
39+39 39100%—
43+39 43100%—

Two rows need a note, because libphonenumber's "mobile" type is wider than "a person's phone":

  • 31 is for specialised mobile services. The plan reserves 31 numbers for services such as satellite phones and the GSM-R railway radio network, in blocks of 100,000 (Article 8.5). In the ministry's register, 313 is held by the national railway network operator and 311XX and 319XX blocks by satellite and business-messaging providers. 30 is reserved for future use, so libphonenumber rejects it.
  • 43 is for SMS and data services. The plan's 43X numbers are reserved for services run over SMS, MMS and data, not voice; the 10-digit 439 form is the one libphonenumber types as mobile (Article 19). Don't treat a 43 number as a personal mobile.

Block holders in the ministry's register

The Ministry of Enterprises and Made in Italy (MIMIT) assigns the numbers and publishes every assigned block. The table below summarises the mobile sheet (3XYZ) of the file as archived on 17 September 2026:

National prefixHolder in the ministry's register
330, 331, 333 to 339, 360, 362, 363, 366, 368, 381, 3500, 3501, 3505Telecom Italia (TIM)
320, 322 to 324, 327 to 329, 355, 373, 380, 388 to 393, 397Wind Tre
340 to 349, 3710, 377, 3784 to 3786, 383Vodafone Italia
3513 to 3519, 3520, 3522, 3523Iliad Italia
3711, 3713 to 3718PosteMobile
3751, 3755 to 3759Fastweb
3508 to 3512, 382Lycamobile
3211 to 3215ENEL Global Services
3532, 3533Digi Italy
3534, 3535COOP Italia
3760 to 3762, 3791 to 3793, 3780, 3712 and othersSmaller providers, such as Plintron Europe, VEI, spusu and Mundio

Since 31 December 2024, Vodafone Italia has belonged to Swisscom, which is combining it with Fastweb (Swissinfo, 2025). The register still lists the two companies' blocks separately, and porting moves numbers between all networks. So a 34X number can be on any Italian network today.

For validation, remember that libphonenumber accepts every 32 to 39 block, assigned or not. "Valid" means "possible under the plan", not "in use". The ministry adds blocks a few at a time: Iliad's 3523 and COOP Italia's 3535 are in the September 2026 file but not in the one dated 15 December 2025. Keep your library current.

Why does a fixed-length regex fail for Italian numbers?

Most tutorials give a pattern such as ^(\+39)?3\d{9}$. It accepts only 10-digit mobiles, so it rejects every valid 9-digit 3XX XXX XXX number from the older blocks. Loosening it to 3\d{8,9} fixes that but lets through 9-digit numbers in blocks that must have 10, such as 31. Neither tells you anything about landlines, whose length depends on the district code.

The generated test table runs the same idea over masked inputs. The shape regex column tests a loose pattern after spaces, dashes and brackets are removed:

#CaseInput (masked)Shape regex ^(?:\+39|0039)?[34]\d{8,9}$libphonenumber (IT)
1National (no trunk prefix)31X XXX XXXXpassesvalid, MOBILE
2International, with spaces+39 31X XXX XXXXpassesvalid, MOBILE
3International dialling prefix 000039 31X XXX XXXXpassesvalid, MOBILE
4E.164+3931XXXXXXXXpassesvalid, MOBILE
5Dashes and brackets(31X) XXX-XXXXpassesvalid, MOBILE
6One digit short31XXXXXXXpassesinvalid
7One digit too many31XXXXXXXXXfailsinvalid
8Mobile shape, unused block 3030XXXXXXXXpassesinvalid
9Fixed line02 XXXX XXXXfailsvalid, FIXED_LINE
10Toll-free range800 XXX XXXfailsvalid, TOLL_FREE

Row 6 is the Italian trap: a 31 number one digit short has a valid length for a 33 or 34 block, so the regex passes it, while libphonenumber knows that 31 numbers need 10 digits. Row 9 is the other one: the landline is a valid Italian number, and the mobile regex rightly rejects it, but a regex that adds a trunk 0 to mobiles would pass mistyped mobiles as landlines.

How do I validate an Italian number in code?

Use a libphonenumber port with full metadata and the default region IT. Keep the type, because a valid Italian number can be a mobile, a landline or a service number, and check the country calling code rather than the region, because the Vatican's 06 698 block shares +39.

Python (pip install phonenumbers):

normalize_it.py
import phonenumbers
from phonenumbers import PhoneNumberFormat, PhoneNumberType


def normalize_it(raw: str) -> tuple[str, str] | None:
    """(E.164, line type) for a valid Italian number, or None. Keeps the leading 0 of landlines."""
    try:
        n = phonenumbers.parse(raw, "IT")
    except phonenumbers.NumberParseException:
        return None
    if not phonenumbers.is_valid_number(n) or n.country_code != 39:
        return None
    kind = {PhoneNumberType.MOBILE: "mobile", PhoneNumberType.FIXED_LINE: "fixed"}.get(
        phonenumbers.number_type(n), "other")
    region = phonenumbers.region_code_for_number(n)  # "IT", or "VA" for the Vatican's 06 698 block
    return phonenumbers.format_number(n, PhoneNumberFormat.E164), f"{kind} ({region})"


for raw in ["312 345 6789", "+39 312 345 6789", "0039 312 345 6789", "02 1234 5678",
            "+39 02 1234 5678", "+39 2 1234 5678", "0312 345 6789", "06 698 12345", "800 123 456", "312 345 678"]:
    print(f"{raw!r:22} -> {normalize_it(raw)}")

JavaScript (npm install libphonenumber-js):

normalize-it.mjs
import { parsePhoneNumberFromString } from "libphonenumber-js/max";

/** "312 …", "+39 …", "0039 …", "02 …" → [E.164, line type] for a valid Italian number, or null. */
export function normalizeIt(raw) {
  const phone = parsePhoneNumberFromString(String(raw), "IT");
  if (!phone?.isValid() || phone.countryCallingCode !== "39") return null;
  const kind = { MOBILE: "mobile", FIXED_LINE: "fixed" }[phone.getType()] ?? "other";
  return [phone.number, `${kind} (${phone.country})`]; // country is "IT", or "VA" for the Vatican's 06 698 block
}

for (const raw of ["312 345 6789", "+39 312 345 6789", "0039 312 345 6789", "02 1234 5678",
  "+39 02 1234 5678", "+39 2 1234 5678", "0312 345 6789", "06 698 12345", "800 123 456", "312 345 678"]) {
  console.log(JSON.stringify(raw).padEnd(22), "->", JSON.stringify(normalizeIt(raw)));
}

The inputs are libphonenumber's own example numbers for Italy and the Vatican (mobile 312 345 6789, fixed line 02 1234 5678, toll-free 800 123 456, Vatican 06 698 12345), plus broken variants of them, not real subscribers. We ran both on 2026-11-03 (Python 3.12 with phonenumbers 9.0.42, Node.js 24 with libphonenumber-js 1.13.13). Python printed:

Text
'312 345 6789'         -> ('+393123456789', 'mobile (IT)')
'+39 312 345 6789'     -> ('+393123456789', 'mobile (IT)')
'0039 312 345 6789'    -> ('+393123456789', 'mobile (IT)')
'02 1234 5678'         -> ('+390212345678', 'fixed (IT)')
'+39 02 1234 5678'     -> ('+390212345678', 'fixed (IT)')
'+39 2 1234 5678'      -> None
'0312 345 6789'        -> ('+3903123456789', 'fixed (IT)')
'06 698 12345'         -> ('+390669812345', 'fixed (VA)')
'800 123 456'          -> ('+39800123456', 'other (IT)')
'312 345 678'          -> None

The JavaScript version gave the same answers, written as JSON arrays (["+393123456789","mobile (IT)"]) and null instead of None. What the output shows:

  • The landline keeps its 0 in E.164 (+3902…), and the same number without the 0 is rejected.
  • A mobile written with an extra 0 comes back as a valid landline in Como. If you need a mobile, check the type, not only validity.
  • The Vatican number is valid with calling code 39 but region VA. Code that checks region == "IT" would reject it.
  • 312 345 678 is rejected because 31 blocks need 10 digits, although 9 digits are fine in some 32 to 39 blocks.

Our Python and JavaScript guides cover more languages, and our E.164 guide explains the storage format.

Does number portability change the carrier?

Yes. AGCOM ordered mobile number portability in June 2001 and required it to be working by 30 April 2002, after an initial phase that began in late 2001 (Delibera 12/01/CIR). A network that didn't open all its codes to porting by 1 May 2002 could not take in ported customers until it did, by 1 July 2002 at the latest (Delibera 7/02/CIR). Today the rules are in AGCOM's mobile portability regulation, Delibera 147/11/CIR, Annex 1:

  • Second working day. Requests the new operator enters by 17:00 go to the old operator the same day, and the cut-over happens on the second working day after the request was entered (Article 2.17).
  • Early morning. Network databases are updated in windows of at most two hours that end by 08:30, to keep the interruption short (Article 4.5).
  • Compensation for delay. If porting is late by more than two working days, the customer can ask the new operator for at least EUR 2.50 per working day of delay, counting from the first day, up to EUR 50 (Article 14).
  • Any number of times. A number can be ported again and again (Article 2.5).

EU law sets the outer limit: porting must be done within one working day of the agreed date, and the service may not be lost for more than one working day (Directive (EU) 2018/1972, Art. 106).

The Italy row of our MNP atlas:

ItemValue
Mobile number portabilityYes
Mobile porting since2002
Maximum porting time1 working day (activation after agreed date)
Governing ruleEECC Directive (EU) 2018/1972, Art. 106
Published porting volumenone published
Sourceeur-lex.europa.eu, btk.gov.tr
Checked2026-09-25

Our MNP atlas compares Italy with other countries. With four network operators, many virtual operators and the Fastweb and Vodafone merger, the block holder is a weak guess. For routing, pricing or fraud rules, look up the current network per number; our post on how to check if a number is ported shows the options.

Inactive prepaid numbers are recycled

The numbering plan lets operators withdraw a prepaid number after at least 24 months without any commercial contact, with 30 days' notice to the customer. A withdrawn mobile number waits three months before it can go to someone else (plan, Articles 8.9 and 8.10). For a customer list, that means a number that has been silent for two years may already belong to another person. A live network status check before a campaign or a reactivation e-mail catches most of these.

What are the rules for SMS, calls and caller ID?

These summarise the laws, AGCOM decisions and Garante guidance as we read them on 2026-11-03. Not legal advice; ask counsel how they apply to you.

Article 130 of the Italian privacy code (Legislative Decree 196/2003) requires the prior consent of the recipient for marketing by automated calls, and extends that rule to e-mail, fax, MMS, SMS "or other" electronic messages (Art. 130). The Garante's 2013 guidelines on promotional activity and spam spell out what that means in practice (Garante, 2013):

  • SMS and MMS are treated like e-mail and automated calls: prior consent is needed (section 2.5).
  • WhatsApp and other messaging apps follow the same rules for promotional messages; the guidelines name Skype, WhatsApp and Viber (section 6.1).
  • The existing-customer exception covers e-mail only. A business may e-mail its own customers about similar products without new consent, if they were told and didn't object, but the guidelines limit this to e-mail and exclude SMS (section 2.7; Art. 130(4)).
  • Passing numbers to third parties for their marketing needs its own specific consent, not a general one, and the notice must name the recipients or their categories (section 2.6.3).
  • Public numbers are not free to use. Finding a number online or in a public list doesn't replace consent (Garante press release, 2013).

The ePrivacy Directive is the EU basis for these rules (Directive 2002/58/EC, Art. 13).

Calls by a person: the opposition register (RPO)

For telephone marketing by a live agent, Italy uses an opt-out register, the Registro pubblico delle opposizioni (RPO). Law 5/2018 lets people register all their fixed and mobile numbers, and registration revokes every earlier marketing consent, except consents given within a contract that is running or ended less than 30 days ago (Law 5/2018, Art. 1(2) and 1(5)). Operators must check their lists against the register every month and in any case before each campaign (Art. 1(12)).

The implementing regulation, Presidential Decree 26/2022, was published in the Gazzetta Ufficiale no. 74 on 29 March 2022 (DPR 26/2022). The extended register, open for the first time to mobile numbers and to numbers not in public directories, went live on 27 July 2022 (TuttoAndroid, 2022). The Fondazione Ugo Bordoni runs it for MIMIT (RPO).

The RPO covers calls by a person and paper mail. It doesn't make SMS or automated calls lawful: those still need consent under Article 130.

The telemarketing code of conduct

The Garante approved a code of conduct for telemarketing and teleselling on 9 March 2023, on condition that a monitoring body was accredited first (Garante, provvedimento 70/2023). It approved the final text and accredited the body on 7 March 2024; the code took full effect after publication in the Gazzetta Ufficiale no. 73 of 27 March 2024 (Garante, provvedimento 148/2024). Joining is voluntary, but the Garante can weigh membership when it sets fines. Among other things, members agree to (code text):

  • Check lists against the RPO before every campaign, keep a record of the result, and check bought lists against their own block list (Article 5).
  • Call only within set hours: not before 9:00 or after 20:00 on weekdays, not before 10:00 or after 19:00 on Saturdays and days before holidays, and never on Sundays or holidays, unless the person asked to be called (Article 7).
  • Forward objections within 24 hours and report opt-outs to the client within 15 days of the campaign's end (Article 7).
  • Use caller IDs that can't be cloned easily, such as a brand alias or a number used only for the client's outbound calls (Article 8.2).

Calls from abroad with an Italian caller ID are blocked

AGCOM's Delibera 106/25/CONS of 30 April 2025 made the carriers that bring international voice calls into Italy block calls that look spoofed (technical specification, Annex A):

  • Italian landline caller ID from abroad: blocked, from 19 August 2025.
  • Italian mobile caller ID (+393…) from abroad: blocked unless the mobile user is roaming abroad. The carrier asks the user's mobile operator, which answers only "block" or "no block". This phase started on 19 November 2025.
  • Numbers that don't follow the ITU numbering rules are blocked too.

AGCOM confirmed the 19 November date and widened the rule to specialised mobile and machine-to-machine numbers in Delibera 271/25/CONS of 6 November 2025 (AGCOM, 2025); the mobile phase did start that day (MondoMobileWeb, 2025).

In April 2026 AGCOM went further, for calls and messages that start in Italy. Delibera 21/26/CIR makes the provider that serves the caller responsible for the caller ID: when a customer sets its own caller ID, the provider must check that the number belongs to that line and customer, and block the call or message if it doesn't. It also lists the only number types that may be shown as caller ID, including registered SMS aliases (AGCOM, 2026).

For a business, the practical result: a voice OTP or callback placed from a platform abroad with an Italian number as caller ID will not arrive. Use a caller ID that the platform really holds, and offer SMS or another channel as a fallback.

Alphanumeric sender IDs (SMS alias)

Italian business SMS often show a brand name instead of a number. AGCOM's regulation on these "SMS alias" senders, Delibera 12/23/CIR of 3 May 2023, replaced a trial that had run since 2013 (AGCOM, 2023). According to AGCOM's registration guide, only authorised electronic communications providers listed in the operators' register can register aliases in the Alias Register, and only registered providers may send with them; a business that wants a brand sender goes through such a provider (AGCOM alias guide). Ask your SMS provider to confirm that your alias is registered for you.

Personal data (GDPR)

A phone number linked to a person is personal data under the GDPR (Regulation (EU) 2016/679). Checking a customer's number, for example for reachability or WhatsApp registration, needs a lawful basis under Art. 6, such as a contract or a legitimate interest you have weighed, and people can object to direct marketing at any time under Art. 21. Our posts on whether a phone number is personal data and on consent for WhatsApp checks give the baseline: your own customers, a stated purpose, minimal data and honoured objections.

Which messaging apps and channels reach people?

SMS reaches every active Italian mobile. We didn't find a primary source that measures messaging-app use in Italy in a way we can verify for this guide, so we don't quote shares. The practical answer is to measure your own opted-in customers: check which apps they are registered on, route each person to the channel they use, and keep SMS as the fallback. Our channel-by-country guide shows the method.

How do I check WhatsApp registration for an Italian customer list?

Normalise every row first, then run one check per number. A check tells you whether a number is registered at the time of the check. It can't tell you whether the person wants your messages, and in Italy marketing on WhatsApp needs consent either way:

AnswerWhat it meansWhat to do
registered: trueThe number has a WhatsApp account at checked_atOffer WhatsApp to customers who opted in to it
registered: falseNo account at checked_atUse SMS or another channel
unknownNo conclusive answer (not billed)Keep the current channel; retry later
invalid_numberFailed format validation (not billed)Fix the data at the source

For lists, use a bulk job. Upload a CSV whose numbers are written the Italian way (3XX XXX XXXX, 02 XXXX XXXX or +39 …) with default_country=IT:

Bulk WhatsApp and live network check for a customer CSV
curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -F file=@customers.csv -F checks=whatsapp,hlr -F default_country=IT

Send the same body to POST /v1/jobs/estimate first: it is free and shows the maximum cost before anything runs.

What changed recently?

The rows for IT and +39 in our numbering-plan changes dataset, built from libphonenumber's release notes:

Change named in the release notes (2019-01-08 to 2026-09-23)Releases
Numbering-plan metadata (validation, lengths, types)6
Original-carrier prefix data4
Short numbers2
Alternate formatting1
Geocoding (area names)1
All14

Latest numbering-plan updates for IT: 2025-09-11 (v9.0.14), 2024-01-10 (v8.13.28), 2022-06-09 (v8.12.50), 2021-11-11 (v8.12.37), 2019-07-15 (v8.10.15).

Italy's numbering-plan metadata changes rarely: six releases since 2019, the latest in September 2025. The plan itself is stable, and the ministry adds mobile blocks a few at a time, such as Iliad's 3523 in 2026. The bigger changes are in the rules:

  • 19 August 2025: foreign calls with an Italian landline caller ID blocked (Delibera 106/25/CONS).
  • 19 November 2025: foreign calls with an Italian mobile caller ID blocked unless the user is roaming (Delibera 106/25/CONS, confirmed by 271/25/CONS).
  • 31 December 2024: Swisscom completed its takeover of Vodafone Italia, to be combined with Fastweb.
  • 14 April 2026: Delibera 21/26/CIR on caller-ID checks for calls and messages that start in Italy. It also creates a new free customer-care range starting with 2 (2XY and 2WZK) for companies that are not telecom providers.
  • 27 March 2024: the telemarketing code of conduct published in the Gazzetta Ufficiale, with an accredited monitoring body.

What can MobileValidate check for Italian numbers?

Generated from our public catalog:

Catalog data as of 2026-11-03.

CheckAccepts Italy numbersNotes
Format and country (every lookup)YesEach number is parsed first; an invalid number returns invalid_number and is never billed.
Carrier lookup (beta)YesLine type and current network where data exists; no data means unknown, not billed. Real time and bulk.
US/CA carrier lookup (premium)No (US, CA only)Answers unsupported_country for other countries, not billed.
Live network status (HLR)YesLive reachability, porting, roaming (true or false) and current network; unknown is free. Real time and bulk.
Number portability (MNP)YesPorted or not ported, and the current network code; unknown is free. Real time and bulk.
Spam reputationLimited accessAll countries except sanctioned ones; report coverage is strongest in North America and Europe.
Messaging appsYes: WhatsApp, Telegram, Viber*, Signal*, iMessage*, RCS*, LINE*, Zalo*, Botim*, Facebook Messenger*Registered, not registered or unknown; unknown is free.
Social networksYes: Facebook, Instagram, Threads, X (Twitter), TikTok*, Snapchat*Not for Italy numbers: LinkedIn (US, IN only).
Online accounts (Apple, Amazon, Microsoft, Netflix)Yes: Apple, Amazon, Microsoft, NetflixRegistered, not registered or unknown; unknown is free.

* bulk jobs only. The live list is at GET /v1/services.

A lookup returns network and registration facts. It never returns a subscriber's name, tax code or address, and we don't offer "number details" searches.

For Italian numbers, the useful pair is a live network status (HLR) check, which tells you whether a mobile is reachable now, whether it has been ported and which network serves it, and an MNP lookup, which answers ported or not ported with the current network code. Because inactive prepaid numbers are withdrawn and reassigned after a quarantine, a reachability check before a campaign also flags numbers that may have changed hands. Both answer unknown when there is no conclusive result, and unknown is free.

How to start without paying:

  • Free test key. Get a test key: it never touches a real network and returns fixed answers for reserved test numbers, so you can build every branch first (test mode).
  • Five real checks. Every live account can run 5 phone numbers and 5 e-mail addresses through the real-time checks for free on the dashboard's Try it page.
  • Free estimate. POST /v1/jobs/estimate shows the maximum cost of a bulk file before anything runs.

To get a live account, request access. Viber and Zalo checks are bulk-only for now, as the asterisks in the table show. Prices are on the pricing page, which also lists the top-up bonuses on larger balances.

Here is a small flow for a customer list. One real-time lookup returns live network status, porting and WhatsApp registration. It uses the public sandbox key mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym and our test values. The sandbox accepts only those UK test numbers, so the example uses them; with a live key, pass the output of normalize_it().

it_reach.py
import os

import requests  # pip install requests

API = "https://api.mobilevalidate.com/v1/lookup"
KEY = os.environ["MOBILEVALIDATE_API_KEY"]


def reach(numbers: list[str]) -> dict[str, dict]:
    """Live network status, porting and WhatsApp registration per number. None means we don't know."""
    r = requests.post(API, headers={"Authorization": f"Bearer {KEY}"}, timeout=15,
                      json={"numbers": numbers, "checks": ["hlr", "whatsapp"], "wait": 5})
    r.raise_for_status()
    out = {}
    for row in r.json()["results"]:
        hlr, wa = row["checks"]["number.hlr"], row["checks"]["whatsapp.registered"]
        attrs = (hlr["attributes"] or {}) if hlr["status"] == "completed" else {}
        out[row["e164"]] = {
            "status": attrs.get("status"),
            "ported": attrs.get("ported"),
            "network": attrs.get("network"),
            "whatsapp": wa["registered"] if wa["status"] == "completed" else None,
        }
    return out


for number, info in reach(["+447700900001", "+447700900002", "+447700900005"]).items():
    print(number, info)

What it printed with the sandbox key on 2026-11-03:

Text
+447700900001 {'status': 'reachable', 'ported': False, 'network': 'Test Mobile', 'whatsapp': True}
+447700900002 {'status': 'unreachable', 'ported': False, 'network': 'Test Mobile', 'whatsapp': False}
+447700900005 {'status': None, 'ported': None, 'network': None, 'whatsapp': None}

Keep None apart from False: None means we don't know, and it's never billed. Requests with 20 or more consecutive numbers are refused (403 suspected_enumeration), and our acceptable use policy forbids finding recipients for unsolicited messages. People can object through our opt-out form. See WhatsApp number check and carrier lookup for the fields.

What are the key takeaways?

  • Italian mobiles are +39 plus 10 digits starting with 3; some older ones have 9. Landlines start with 0, and the 0 stays after +39. Store the E.164 form.
  • Don't validate with a fixed-length regex: mobile length depends on the block, 31 and 43 numbers are special services, and a mobile with an extra 0 can pass as a landline.
  • The ministry's register names the block holder (mainly TIM, Wind Tre, Vodafone Italia and Iliad), not the current network: porting has run since 2002 and the cut-over takes two working days.
  • Marketing SMS, automated calls and WhatsApp messages need prior consent; calls by a person need an RPO check, monthly and before each campaign.
  • Since November 2025, calls from abroad that show an Italian number are blocked unless the mobile user is roaming. Use a caller ID you really hold.

Network, regulator and company names are used descriptively. MobileValidate is not affiliated with any of them.

Sources

  1. Delibera n. 8/15/CIR, Allegato A: Piano di numerazione nel settore delle telecomunicazioni e disciplina attuativa (national numbering plan) — AGCOM (Autorità per le Garanzie nelle Comunicazioni), 2015
  2. Delibera n. 21/26/CIR: update of the numbering plan on the identification of the originator of a communication (14 April 2026) — AGCOM, 2026
  3. Italy (country code +39): communication of 12 May 1998, new numbering plan from 19 June 1998 — ITU-T (International Telecommunication Union), 1998
  4. Italy (country code +39): national E.164 numbering plan, communication of 25 June 2012 — ITU-T (International Telecommunication Union), 2012
  5. Risorse di numerazione: File assegnati (assigned numbering resources, sheet 3XYZ), archived copy of 17 September 2026; compared with the file dated 15 December 2025 — Ministero delle Imprese e del Made in Italy (MIMIT), via Internet Archive, 2026
  6. Delibera n. 147/11/CIR, Allegato 1: Regolamento riguardante la portabilità dei numeri per i servizi di comunicazioni mobili e personali — AGCOM, 2011
  7. Delibera n. 7/02/CIR: mobile number portability, initial phase and deadlines (28 March 2002) — AGCOM, 2002
  8. Delibera n. 12/01/CIR: provisions on number portability between mobile networks (June 2001) — AGCOM, 2001
  9. Allegato A alla delibera n. 106/25/CONS: technical specifications for blocking spoofed calls — AGCOM, 2025
  10. Delibera n. 271/25/CONS: implementing rules for the caller-ID measures of delibera 106/25/CONS (6 November 2025) — AGCOM, 2025
  11. Telemarketing, in vigore anche il blocco delle chiamate dall'estero con numeri mobili falsi (19 November 2025) — MondoMobileWeb, 2025
  12. Delibera n. 12/23/CIR: Regolamento sull'utilizzo dei caratteri alfanumerici che identificano il soggetto mittente (SMS Alias) — AGCOM, 2023
  13. Guida alla registrazione al Registro degli Alias (version 2.0) — AGCOM, 2024
  14. Legge 11 gennaio 2018, n. 5: registration of mobile numbers in the opposition register and consent rules — Normattiva (Istituto Poligrafico e Zecca dello Stato), 2018
  15. D.P.R. 27 gennaio 2022, n. 26: regolamento del Registro pubblico delle opposizioni (Gazzetta Ufficiale n. 74, 29 March 2022) — Gazzetta Ufficiale della Repubblica Italiana, 2022
  16. Registro pubblico delle opposizioni (official site) — Fondazione Ugo Bordoni for MIMIT, 2026
  17. Registro pubblico delle opposizioni per cellulari attivo: come funziona (27 July 2022) — TuttoAndroid, 2022
  18. Decreto legislativo 30 giugno 2003, n. 196 (Codice in materia di protezione dei dati personali), art. 130 Comunicazioni indesiderate — Normattiva (Istituto Poligrafico e Zecca dello Stato), 2018
  19. Linee guida in materia di attività promozionale e contrasto allo spam (4 July 2013, doc. web 2542348) — Garante per la protezione dei dati personali, 2013
  20. NO to Spam, YES to Consumer-Friendly Marketing (press release, July 2013) — Garante per la protezione dei dati personali, 2013
  21. Provvedimento n. 70 del 9 marzo 2023: approval of the code of conduct for telemarketing and teleselling — Garante per la protezione dei dati personali, 2023
  22. Provvedimento n. 148 del 7 marzo 2024: final approval of the telemarketing code of conduct and accreditation of the monitoring body — Garante per la protezione dei dati personali, 2024
  23. Codice di condotta per le attività di telemarketing e teleselling (text) — Registro pubblico delle opposizioni (Fondazione Ugo Bordoni), 2025
  24. Directive (EU) 2018/1972 establishing the European Electronic Communications Code, Art. 106 (number portability) — EUR-Lex, Publications Office of the European Union, 2018
  25. Directive 2002/58/EC on privacy and electronic communications (ePrivacy Directive) — EUR-Lex, Publications Office of the European Union, 2002
  26. Regulation (EU) 2016/679 (General Data Protection Regulation) — EUR-Lex, Publications Office of the European Union, 2016
  27. Swisscom completes takeover of Vodafone Italia (2 January 2025) — Swissinfo (SWI swissinfo.ch), 2025
  28. libphonenumber PhoneNumberMetadata.xml (region IT) and carrier prefix data (39.txt) — libphonenumber project (Apache License 2.0), 2026

Frequently asked questions

How many digits is an Italian phone number?

Mobile numbers have 10 digits after +39 and start with 3, for example +39 3XX XXX XXXX. Some older mobile numbers have 9 digits, because AGCOM's numbering plan lets operators keep using them in blocks first given out under three-digit codes; every new mobile number has 10. Landline numbers start with 0 and have 6 to 11 digits, and the 0 is part of the number.

What is the Italy country code for WhatsApp and international calls?

+39. For a mobile, write +39 and then the number as Italians write it: 3XX XXX XXXX becomes +39 3XX XXX XXXX. For a landline, keep the leading 0: Milan's 02 XXXX XXXX becomes +39 02 XXXX XXXX, not +39 2 XXXX XXXX. Store the E.164 form, such as +393XXXXXXXXX or +3902XXXXXXXX, with no spaces.

Do you drop the 0 when calling an Italian landline from abroad?

No. Since 19 June 1998, international calls to Italian fixed lines dial +39 followed by the full number with its 0, so +39 06 … for Rome and +39 02 … for Milan. The old format without the 0 stopped working after a parallel-running period that ended on 18 December 1998. Italy is one of the few countries where the 0 stays after the country code.

Which network does a 3xx prefix belong to?

The prefix names the company that holds the block in the ministry's register, not the current network. As of the September 2026 file, 33x blocks are held by TIM, 34x by Vodafone Italia, 32x and 38x to 39x mostly by Wind Tre, and 351x to 352x mostly by Iliad. Numbers have been portable since 2002, so look up the current network per number.

How long does it take to port a mobile number in Italy?

Under AGCOM's mobile number portability rules (Delibera 147/11/CIR), the switch happens in the early morning of the second working day after the new operator enters the request, in a window of at most two hours ending by 08:30. If it is late by more than two working days, the customer can claim at least EUR 2.50 per working day of delay, up to EUR 50.

Do I need consent to send marketing SMS or WhatsApp messages in Italy?

Yes. Article 130 of the Italian privacy code requires prior consent for marketing by SMS, MMS, e-mail, fax and automated calls, and the data protection authority (Garante) applies the same rule to WhatsApp and other messaging apps. The exception for existing customers covers e-mail only, not SMS. Marketing calls by a person need a check of the opposition register (RPO), monthly and before every campaign.

Why are calls with an Italian number from abroad blocked?

Since 19 August 2025, carriers that bring international calls into Italy must block calls that show an Italian landline number as caller ID, and since 19 November 2025 calls that show an Italian mobile number unless that mobile user is roaming abroad. AGCOM ordered this in Delibera 106/25/CONS to stop caller-ID spoofing by foreign call centres.

Can I check whether Italian customers are on WhatsApp?

Yes, for numbers you hold with a lawful basis under the GDPR, such as your own customers or sign-ups. A MobileValidate check answers registered, not registered or unknown with a checked_at date; unknown answers are not billed. It never returns a name or profile, and requests that look like scans of number ranges are refused.

All articles

Know before you send.

Create a free account: approved automatically, usually within 10–15 minutes.

Free to start: check 20 phone numbers and 10 e-mail addresses for real on your account, plus an unlimited test mode. You pay only for conclusive answers, from $20.