On this page
Qatar phone numbers use the country code +974 and have 8 digits, with no area code and no trunk prefix. Mobile numbers start with 3, 5, 6 or 7, such as 3312 XXXX; from abroad you just put +974 in front: +974 3312 XXXX, stored in E.164 as +9743312XXXX. Landlines start with 4. The prefix doesn't tell you the network: mobile numbers have been portable since 31 January 2013.
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. Example numbers are masked with X. The code samples use libphonenumber's own example numbers, which are for testing only; don't call or text them. On 2026-11-08 we read the Communications Regulatory Authority's (CRA) numbering plan and portability pages, the Personal Data Privacy Protection Law and the National Cyber Security Agency's (NCSA) guidance. The CRA's website didn't load from our location, so we read its documents in dated archive copies, linked in the sources. This is a summary, not legal advice.
What does a Qatar phone number look like?
A Qatari number is always eight digits, written in two groups of four: 3312 XXXX for a mobile, 4412 XXXX for a landline. There is no 0 in front and no area code. The CRA's National Numbering Plan organises numbers by their first digit, called a "level", and gives each level a use (National Numbering Plan, article 4):
| First digit | Use in the CRA plan | Format |
|---|---|---|
0 | 00 is the international access code; 01–09 reserved | 00 + country code |
1 | Short numbers: emergency, public services, operator services | 3 to 5 digits |
2 | Four-digit short numbers, security and military numbers, M2M/IoT | varies |
3 | Mobile | 3XXX XXXX |
4 | Fixed line | 4XXX XXXX |
5, 6, 7 | Mobile | AXXX XXXX |
8 | 800 Freefone (toll-free); the rest reserved | 800 XXXX |
9 | 900 premium rate, 92 and 97 SMS short codes, 99X emergency | varies |
Two points in the plan matter for anyone storing numbers. The landline digits carry no geography: "to the calling Customer, there is no geographic significance that can be inferred from any of the digits" (article 4.7.2). And the plan recommends writing an 8-digit number as XXXX XXXX at home and +974 XXXX XXXX abroad (article 4.12.1).
| Item | Value |
|---|---|
| Country calling code | +974 |
| International call prefix (dialling out) | 00 |
| Trunk prefix (dialling at home) | none |
| Mobile: digits after +974 | 8 |
| Fixed line: digits after +974 | 8 |
| Toll-free: digits after +974 | 7, 9, 11 |
| Pager: digits after +974 | 7 |
| Mobile, national format (masked) | 33XX XXXX |
| Mobile, international (masked) | +974 33XX XXXX |
| Mobile, E.164 (masked) | +97433XXXXXX |
| Fixed line, national format (masked) | 40XX XXXX |
| Fixed line, international (masked) | +974 40XX XXXX |
| Fixed line, E.164 (masked) | +97440XXXXXX |
The "Pager: 7 digits" row is libphonenumber's name for a few 7-digit ranges starting 21, 23 and 26. In the CRA plan these sit in level 2, which holds four-digit short numbers and numbers assigned to security and military services before the CRA existed (article 4.5.2). Customers can't get them, so you won't see them in a sign-up form.
Store only the E.164 form: +974 and the eight digits, with no spaces, dashes or brackets. Because there is no trunk prefix, nothing is dropped: 3312 3456, +974 3312 3456 and 00974 3312 3456 are the same number.
Why do 7-digit Qatar numbers fail?
Because Qatar's numbers grew from seven to eight digits just after midnight on 28 July 2010. The rule was simple: the first digit was doubled. Numbers starting 3, 4, 5, 6 and 7 began with 33, 44, 55, 66 and 77 from then on, for mobiles, landlines and fax lines alike. For three months, callers to an old number heard a message asking them to redial; after that, old numbers were reported as not in service (ictQATAR, 2010).
Sixteen years later, old CRMs, scanned business cards and imported spreadsheets still hold 7-digit numbers. A validator rightly rejects them. Don't "fix" them by doubling the first digit automatically: the number may have changed hands since, and a 7-digit 800 XXXX is a valid toll-free number, not an old mobile. Ask the customer to confirm a current number.
Which prefixes are mobile numbers?
The generator counted every 8-digit number that libphonenumber's mobile pattern for QA accepts:
| National prefix | International | Share of the block that is mobile (8-digit numbers) | 3-digit sub-blocks that aren't fully mobile |
|---|---|---|---|
AA, for 40 blocks AA = 30–39, 50–59, 60–69, 70–79 | +974 AA | 100% | — |
libphonenumber accepts every number starting 3, 5, 6 or 7 as mobile, which matches the CRA's levels. The plan's own matrix (annexure A of the 2020 edition) is narrower. It marks only some second digits as mobile in use and the rest as reserved:
| Range | CRA matrix, 2020 edition | libphonenumber carrier data, 2026 |
|---|---|---|
30, 33 | Mobile | 30, 310–316 Vodafone; 33 Ooredoo |
50, 55 | Mobile | 50, 51, 52, 55 Ooredoo |
66 | Mobile | 600, 66 Ooredoo |
70, 74, 77 | Mobile | 70, 71, 720–726, 74, 77 Vodafone |
Other 3, 5, 6, 7 blocks | Reserved | no carrier listed |
So blocks such as 31, 51, 52 and 71, reserved in the 2020 matrix, now appear in the library's carrier data: the CRA has allocated more mobile ranges since. That is a reason to keep the library's broad pattern rather than a hand-made list of "known" prefixes. It also means a valid result says little: a number in an unallocated block such as 38 passes format validation, and only a live lookup shows whether it is in service.
Allocations are made in blocks of 100,000 numbers for mobile and 1,000 or 10,000 for fixed lines (articles 4.6.3, 4.7.4, 4.8.3). M2M and IoT devices get numbers in level 2 (28, 29) or on the international codes +882 and +883 (article 4.5), not in the mobile levels.
Who holds the blocks?
Qatar has two mobile network operators: Ooredoo (formerly Qtel) and Vodafone Qatar. As the table shows, libphonenumber's carrier data (974.txt) names Ooredoo for most 33, 5 and 66 blocks and Vodafone for 30, 31 and most 7 blocks. Treat that as the original holder only. A ported number keeps its prefix, so for routing, pricing or fraud rules you need the current network per number.
What are 800, 900 and the short numbers?
These are valid Qatari numbers, but not personal mobiles:
| Range | Use (CRA plan) | Digits | libphonenumber type |
|---|---|---|---|
800 XXXX | Freefone: free to the caller (article 4.9) | 7 | TOLL_FREE |
+800 XXXX XXXX | Universal International Freefone Number, allocated by the ITU (article 4.10) | 11 after +800 | TOLL_FREE (country code 800) |
900 XXXX | Value-added and premium-rate services (article 4.11) | 7 | invalid (not in metadata 9.0.39) |
92XXX, 97XXX | Value-added SMS short codes, in blocks of 1,000 (article 4.11.10) | 5 | short number |
999, 112 | Emergency; free from every network (article 4.4.5) | 3 | short number |
Premium SMS and 900 services must state their price in every advertisement, and operators must let customers bar them (articles 4.11.4 and 4.11.5). A 92XXX or 97XXX short code is how many Qatari services receive SMS replies such as competition entries; it can't be a sign-up number.
Why does a simple regex fail for Qatari numbers?
The usual tutorial pattern, "8 digits starting with 3, 5, 6 or 7", is close to libphonenumber's own mobile rule for Qatar. Its weakness is not the shape but what it can't know:
- It accepts unallocated blocks, because the shape is the same.
- It rejects the 7-digit numbers from before 2010 without telling you why, so support teams see "invalid" with no hint.
- It says nothing about the network or whether the number is in service.
Our post on why an E.164 regex is not enough shows the same pattern in other countries. A library keeps the type rules up to date; a lookup answers the rest.
How do I validate a Qatari number in code?
Remove spaces and punctuation, parse with full metadata and the default region QA, and keep only numbers typed as mobile. Qatar needs no special rewrites: 00974 is a normal exit code, and there is no trunk 0 to drop. Before you write code, you can paste a few numbers into our free phone number validator to see the same result.
Python (pip install phonenumbers):
import re
import phonenumbers
from phonenumbers import PhoneNumberType
def normalize_qa(raw: str) -> str | None:
"""E.164 for a Qatari mobile number (8 digits starting 3, 5, 6 or 7), or None."""
s = re.sub(r"[\s().-]", "", raw)
try:
n = phonenumbers.parse(s, "QA")
except phonenumbers.NumberParseException:
return None
if (not phonenumbers.is_valid_number(n) or phonenumbers.region_code_for_number(n) != "QA"
or phonenumbers.number_type(n) != PhoneNumberType.MOBILE):
return None
return phonenumbers.format_number(n, phonenumbers.PhoneNumberFormat.E164)
for raw in ["3312 3456", "+974 3312 3456", "00974 3312 3456", "(+974) 3312-3456",
"4412 3456", "800 1234", "212 3456", "312 3456", "3312 34567"]:
print(f"{raw!r:20} -> {normalize_qa(raw)}")JavaScript (npm install libphonenumber-js):
import { parsePhoneNumberFromString } from "libphonenumber-js/max";
/** "3312 3456", "+974 …" or "00974 …" → E.164 for a Qatari mobile number, or null. */
export function normalizeQa(raw) {
const input = String(raw).replace(/[\s().-]/g, "");
const phone = parsePhoneNumberFromString(input, "QA");
if (!phone?.isValid() || phone.country !== "QA" || phone.getType() !== "MOBILE") return null;
return phone.number;
}
for (const raw of ["3312 3456", "+974 3312 3456", "00974 3312 3456", "(+974) 3312-3456",
"4412 3456", "800 1234", "212 3456", "312 3456", "3312 34567"]) {
console.log(JSON.stringify(raw).padEnd(20), "->", normalizeQa(raw));
}We ran both on 2026-11-08 (Python 3.12 with phonenumbers 9.0.40, Node.js 24 with libphonenumber-js 1.13.13). The inputs are libphonenumber's example numbers, plus a 7-digit version of the mobile example. Both printed the same results; Python prints None and single quotes, JavaScript null and double quotes:
'3312 3456' -> +97433123456
'+974 3312 3456' -> +97433123456
'00974 3312 3456' -> +97433123456
'(+974) 3312-3456' -> +97433123456
'4412 3456' -> None
'800 1234' -> None
'212 3456' -> None
'312 3456' -> None
'3312 34567' -> NoneThe first four are one number written four ways. The landline, toll-free and 7-digit level-2 numbers are valid but not mobile, so they are dropped. 312 3456 is the old 7-digit shape from before 2010, and the last input has one digit too many.
The generated test table runs the same idea over masked inputs, with the raw library call. The shape regex column tests the tutorial pattern, after spaces, dashes and brackets are removed:
| # | Case | Input (masked) | Shape regex ^(?:\+974|00974)?[35-7]\d{7}$ | libphonenumber (QA) |
|---|---|---|---|---|
| 1 | National (no trunk prefix) | 33XX XXXX | passes | valid, MOBILE |
| 2 | International, with spaces | +974 33XX XXXX | passes | valid, MOBILE |
| 3 | International dialling prefix 00 | 00974 33XX XXXX | passes | valid, MOBILE |
| 4 | E.164 | +97433XXXXXX | passes | valid, MOBILE |
| 5 | Dashes and brackets | (33XX) XXXX | passes | valid, MOBILE |
| 6 | One digit short | 33XXXXX | fails | invalid |
| 7 | One digit too many | 33XXXXXXX | fails | invalid |
| 8 | Fixed line | 40XX XXXX | fails | valid, FIXED_LINE |
| 9 | Toll-free range | 800XXXXXX | fails | valid, TOLL_FREE |
Rows 3, 8 and 9 are the ones to remember:
- Row 3:
00974works in Qatar, unlike some countries where00isn't the exit code. Both the regex and libphonenumber accept it. - Row 8: a landline fails the mobile regex, but libphonenumber says it's valid, as
FIXED_LINE. If you need a number that can receive SMS, check the type, not only validity. - Row 9: the toll-free number is valid too. It can't receive an OTP.
Our Python and JavaScript guides cover more languages. For a whole file, the free phone list cleaner normalises numbers to E.164 and removes duplicates in your browser before you upload anything.
Does number portability change the carrier?
Yes. Mobile number portability (MNP) has been available in Qatar since 31 January 2013, after a regulator decision that month. The CRA's FAQ gives the rules (CRA MNP FAQs):
- Apply to the new operator. The customer visits a shop of the operator they want to move to, fills in the porting form and shows a Qatari ID, a passport or a GCC ID. Business customers go through their account manager.
- Up to one working day. In principle a port takes up to one working day after a complete application, and the switch itself happens between 11 a.m. and noon. The new operator issues a new SIM with the same number.
- Bills first. Outstanding bills on the number must be paid before switching; a final bill from the old operator is due within 30 days.
- As often as you like. There is no limit on the number of ports while nothing is owed. A validated request can't be cancelled.
- Prepaid credit is lost. Unused credit, voicemail and mobile money accounts with the old operator don't move with the number.
- Check the network by SMS. Inside Qatar, an SMS with an 8-digit number to
167returns the network it's on. The service is free and only works from a Qatari mobile within Qatar.
The CRA's portability page dates the service to 2012, while the FAQ and the 2013 launch announcement give 31 January 2013 (CRA MNP page; ictQATAR, 2013). We use the date customers could port. By October 2020 more than 215,000 mobile numbers had been ported. Fixed-line portability followed in March 2020 (The Peninsula, 2020).
| Item | Value |
|---|---|
| Mobile number portability | Yes |
| Mobile porting since | 2013-01-31 |
| Maximum porting time | 1 working day |
| Governing rule | CRA Mobile Number Portability service (numbering management framework) |
| Published porting volume | none published |
| Source | cra.gov.qa |
| Checked | 2026-11-08 |
The atlas row doesn't have the launch date or the porting time yet; the facts above are what we would add. Our MNP atlas compares portability across countries, and how to check if a phone number is ported shows the lookup. With two operators and unlimited ports, the block holder is right more often than in a five-operator market, but you can't tell from the digits which numbers have moved.
What are the rules for SMS, caller ID and personal data?
These summarise the law and official documents as we read them on 2026-11-08. Not legal advice; ask counsel how they apply to you.
Consent for marketing: the PDPPL
Qatar's Personal Data Privacy Protection Law, Law No. 13 of 2016 (PDPPL), was issued on 3 November 2016. It applies to personal data processed electronically, and a phone number tied to a person is personal data. The National Cyber Governance and Assurance Affairs, part of the National Cyber Security Agency (NCSA), enforces it under Amiri Decree No. 1 of 2021 (NCSA guidelines, 2022). The articles that matter for number checks and messaging, from the unofficial English translation (PDPPL):
| Article | Rule |
|---|---|
| Art. 4 | Personal data may be processed only with the person's consent, unless it's needed for a lawful purpose of the controller or the recipient |
| Art. 5 | A person may withdraw consent at any time, and object to processing that isn't needed for the purpose |
| Art. 15 | A controller may not block cross-border data flows unless the processing breaches the law or could seriously harm the data or the person |
| Art. 22 | No electronic communication for direct marketing without prior consent. Each message must name the sender, say it's direct marketing and give a valid, easy address to stop it |
| Art. 23 | Fines of up to QAR 1 million for breaching articles 4, 8 to 12, 14, 15 or 22 |
| Art. 24 | Fines of up to QAR 5 million for breaching article 13, 16(3) or 17 |
The NCSA's guidelines on electronic direct marketing (version 2.0, September 2022) spell out what article 22 means in practice:
- Opt-in only. Consent must be a clear affirmative act. Pre-ticked boxes, or an opt-out offered in the first marketing message, are not lawful consent.
- Consent per channel. No blanket consent "for all future marketing": consent covers a specific channel, and it can't be a condition for buying a product.
- A real opt-out in every SMS. The sender name must not mislead, the text must say it's marketing, and it must explain how to opt out. The guidance gives "STOP 3764" as an example of too little information.
- Keep proof. Record when and how each person consented, ideally with a timestamp.
- No bought lists. Controllers must not buy or use contact lists, even "anonymised" ones, and stay responsible for anything a third party sends on their behalf.
The CRA's consumer protection regulation
On 15 October 2024 the CRA issued the Communications Consumer Protection Policy and Regulation. It covers advertising and marketing, direct marketing messages and spam, contracts, data privacy, notifications and complaints for mobile and fixed services (CRA, 2024). It repealed the 2014 consumer protection policy at once. Older instruments, including the Spam Regulation (CRA President Decision No. 11 of 2016) and the Code on Advertising, Marketing and Branding of 2014, are repealed after the regulation's transition period (The Peninsula, 2024). The full text is attached to the CRA page; we couldn't retrieve the attachments, so we don't summarise its article-level rules here.
Sender names and short codes
Business SMS in Qatar is sent from an alphanumeric sender name or a short code, not from an ordinary mobile number. As one large messaging provider documents, a sender name needs a letter of authorisation for each network, Ooredoo and Vodafone, on the company's letterhead, plus a Qatari trade licence for a local company. That registration route is for transactional messages only; promotional content isn't allowed on it (AWS user guide). Rules differ between providers, so check yours before a campaign. Value-added SMS services use the 92XXX and 97XXX short codes from the numbering plan.
Arabic text uses a different SMS encoding from Latin text, so a message splits into more parts sooner. Our SMS character counter shows how many parts a bilingual message will take.
Spoofing and verified caller names
In October 2025 the CRA said it had directed Ooredoo and Vodafone Qatar to deploy technical measures against caller ID spoofing and against sender name spoofing in SMS, and that complaints about fraudulent calls had dropped by more than half. On 15 October 2025 it began the Caller Name Presentation (CNAP) service: calls from companies, banks, ministries and other legal entities to consumers' mobiles show the entity's officially registered name, in English and up to 25 characters. The first phase covers the entities' landlines, the second their mobile numbers; international calls and calls received while roaming are excluded (CRA, 2025).
For a business, that means two things. Your registered name is now what customers see, so keep it recognisable. And customers are being taught to distrust anything that doesn't carry it: Vodafone Qatar, for example, tells customers it won't contact them on WhatsApp and lists only its own sender name and short code as genuine (Vodafone Qatar). Consumers report scams to their operator or to the CRA on 103.
If you send customer numbers to a check service, decide with counsel which PDPPL basis covers it and how the cross-border rules apply to a provider outside Qatar. Our posts on whether a phone number is personal data and on consent for WhatsApp checks give the baseline we work to: your own customers, a stated purpose, minimal data and honoured objections.
Which messaging apps and channels reach people in Qatar?
We found no official statistics on messaging-app use in Qatar, so measure your own customers instead of trusting a market average. Scammers use WhatsApp as well as SMS: Vodafone Qatar warns about fake prize messages sent on WhatsApp from local and foreign numbers. SMS still reaches every active mobile and remains the fallback for OTP.
Customer lists in Qatar often mix +974 numbers with residents' home-country numbers. Normalise every row with its own country, not a default of QA, and check those numbers with the rules of their country. Our India phone number guide is one example.
The method is the same as in our channel-by-country guide: check which apps your opted-in customers are registered on, route each one to the channel they use, and keep SMS as the fallback. To open a chat without saving a contact, our WhatsApp link generator builds a wa.me link from the E.164 number.
How do I check WhatsApp registration for a Qatari customer list?
Normalise every row with normalize_qa() first. 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:
| Answer | What it means | What to do |
|---|---|---|
registered: true | The number has a WhatsApp account at checked_at | Offer WhatsApp to customers who opted in to it |
registered: false | No account at checked_at | Use SMS or another channel |
unknown | No conclusive answer (not billed) | Keep the current channel; retry later |
invalid_number | Failed format validation (not billed) | Fix the data at the source |
See WhatsApp number check for the fields. It runs in real time and in bulk jobs.
What changed recently?
The rows for QA and +974 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) | 11 |
| Original-carrier prefix data | 7 |
| Short numbers | 1 |
| All | 19 |
Latest numbering-plan updates for QA: 2025-11-06 (v9.0.18), 2025-05-07 (v9.0.5), 2023-06-08 (v8.13.14), 2023-01-05 (v8.13.4), 2022-12-21 (v8.13.3).
Qatar's metadata has changed often for a country with one flat plan, most recently in November 2025. Together with the matrix comparison above, that is a reason to update the library regularly: an old copy may lack carrier names or type data for blocks the CRA has opened since.
The bigger changes were in rules and services:
- 2010: numbers grew from seven to eight digits (28 July).
- 2013: mobile portability started (31 January).
- 2016: the PDPPL (3 November) and the CRA's Spam Regulation.
- 2020: a new edition of the numbering plan with M2M/IoT ranges, and fixed-line portability (March).
- 2024: the Communications Consumer Protection Policy and Regulation (15 October).
- 2025: anti-spoofing directives for calls and SMS sender names, and the start of Caller Name Presentation (15 October).
What can MobileValidate check for Qatari numbers?
Generated from our public catalog:
Catalog data as of 2026-11-07.
| Check | Accepts Qatar numbers | Notes |
|---|---|---|
| Format and country (every lookup) | Yes | Each number is parsed first; an invalid number returns invalid_number and is never billed. |
| Carrier lookup (beta) | Yes | Line 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) | Yes | Live reachability, porting, roaming (true or false) and current network; unknown is free. Real time and bulk. |
| Number portability (MNP) | Yes | Ported or not ported, and the current network code; unknown is free. Real time and bulk. |
| Spam reputation | Limited access | All countries except sanctioned ones; report coverage is strongest in North America and Europe. |
| Messaging apps | Yes: WhatsApp, Telegram, Viber*, Signal*, iMessage*, RCS*, LINE*, Zalo*, Botim*, Facebook Messenger* | Registered, not registered or unknown; unknown is free. |
| Social networks | Yes: Facebook, Instagram, Threads, X (Twitter), TikTok*, Snapchat* | Not for Qatar numbers: LinkedIn (US, IN only). |
| Online accounts (Apple, Amazon, Microsoft, Netflix) | Yes: Apple, Amazon, Microsoft, Netflix | Registered, 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 or address, and we don't offer "number details" searches.
For Qatari numbers, a carrier lookup gives the line type and current network in one call, and a live network status (HLR) check adds whether the number is reachable right now and whether it has been ported. Where you need the network for routing, our free MCC-MNC lookup turns the network code in the answer into an operator name. For channels, WhatsApp and Telegram run in real time and in bulk; the starred checks run in bulk jobs only.
How do I start for free?
- 20 free real checks. Every live account can run 20 phone numbers and 10 e-mail addresses through the real checks for free on the dashboard's Try it page. Use them on your own number first.
- A free carrier lookup. The carrier lookup page has a public form for 3 lookups a day, no sign-up needed.
- Free tools. The phone number validator and phone list cleaner check format in your browser; all of them are on the tools page.
- A free test key. Get a test key for the sandbox. It gives fixed test answers so you can build every branch of your code; see test mode.
- A free estimate.
POST /v1/jobs/estimatetakes the same body as a job, checks nothing and shows the maximum cost before you start. - Then add credit. Create your account; approval is automatic. Top-ups of larger amounts get 5% to 10% bonus credit; see pricing. Unknown, invalid and duplicate results are never charged.
A bulk flow for a Qatari customer list
- Export the numbers you hold with consent or another lawful basis, one per row.
- Normalise them with
normalize_qa(), or upload them as they are withdefault_country=QA, so3312 XXXXis read as Qatari. Fix 7-digit numbers with the customer first. - Run
POST /v1/jobs/estimatewith your checks, for examplewhatsappandcarrier, and read the cost breakdown. - Start the job, then download the results as CSV or NDJSON.
curl https://api.mobilevalidate.com/v1/jobs \
-H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
-F file=@customers.csv -F checks=whatsapp,carrier -F default_country=QAFor single numbers, here is a small channel check against the real-time endpoint. It asks for WhatsApp registration and the line type in one call. It uses the public sandbox key mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym and our test values. The sandbox accepts only those UK drama numbers, so the example uses them; with a live key, pass the output of normalize_qa().
import os
import requests # pip install requests
API = "https://api.mobilevalidate.com/v1/lookup"
KEY = os.environ["MOBILEVALIDATE_API_KEY"]
def channel_hints(numbers: list[str]) -> dict[str, tuple]:
"""Per E.164 number: (WhatsApp registered?, line type). None means we don't know."""
r = requests.post(API, headers={"Authorization": f"Bearer {KEY}"}, timeout=15,
json={"numbers": numbers, "checks": ["whatsapp", "carrier"], "wait": 5})
r.raise_for_status()
out = {}
for row in r.json()["results"]:
wa, net = row["checks"]["whatsapp.registered"], row["checks"]["network.carrier"]
registered = wa.get("registered") if wa["status"] == "completed" else None
line = (net.get("attributes") or {}).get("line_type") if net["status"] == "completed" else None
out[row["e164"]] = (registered, line)
return out
for number, hints in channel_hints(["+447700900001", "+447700900002", "+447700900003"]).items():
print(number, hints)We ran it against the sandbox on 2026-11-08. It printed:
+447700900001 (True, 'mobile')
+447700900002 (False, None)
+447700900003 (None, None)The first test value is registered on a mobile line. The second isn't registered, and its carrier lookup has no data. The third stands for a timeout, so both answers are None and neither is billed. Keep None apart from False: None means we don't know. 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.
What are the key takeaways?
- Qatari numbers have 8 digits with no area code and no trunk prefix. Mobiles start with
3,5,6or7, landlines with4. In E.164, put+974in front and change nothing else. - 7-digit numbers date from before 28 July 2010, when the first digit was doubled. Confirm them with the customer instead of converting them.
- libphonenumber accepts every
3,5,6and7number as mobile, including blocks the CRA hasn't allocated. Validity is a format check; a live lookup tells you whether a number is in service. - Mobile numbers have been portable since 31 January 2013, so a prefix shows the original operator at most. Look up the current network per number.
- Marketing by SMS or any electronic channel needs prior opt-in consent under article 22 of the PDPPL, with the sender named, "marketing" stated and an opt-out in every message.
- Sender names must be registered with both networks, and since October 2025 the CRA has pushed operators against sender name spoofing and started Caller Name Presentation.
Platform, regulator and company names are used descriptively. MobileValidate is not affiliated with any of them.
Sources
- National Numbering Plan, version 8.0 (2020), English and Arabic — Communications Regulatory Authority (Qatar), archived copy, 2020
- National Numbering Plan: document page (still the current edition in the January 2024 capture) — Communications Regulatory Authority (Qatar), archived copy, 2024
- Phone numbers in Qatar seamlessly change to eight digits (press release, July 2010) — ictQATAR, via Zawya, 2010
- Mobile Number Portability: service page — Communications Regulatory Authority (Qatar), archived copy (February 2024), 2024
- Mobile Number Portability FAQs (2022 edition) — Communications Regulatory Authority (Qatar), archived copy, 2022
- Effective January 31, 2013, consumers can retain their mobile number when switching service providers (press release) — ictQATAR, via Zawya, 2013
- Over 2,000 fixed numbers ported since March: CRA (1 October 2020) — The Peninsula (Qatar), 2020
- Communications Consumer Protection Policy & Regulation (issued 15 October 2024) — Communications Regulatory Authority (Qatar), archived copy (November 2025), 2024
- CRA issues consumer protection policy to enhance telecom consumers experience (20 October 2024) — The Peninsula (Qatar), 2024
- CRA launches Caller Name Presentation initiative to enhance trust and protect consumers (15 October 2025) — Communications Regulatory Authority (Qatar), archived copy, 2025
- Law No. (13) of 2016 on Protecting Personal Data Privacy (unofficial English translation; the Arabic text in the Official Gazette prevails) — Compliance and Data Protection Department, via the Cyber Policy Portal, 2016
- Electronic Communications for Direct Marketing: Guidelines for Regulated Entities, version 2.0 (September 2022) — National Cyber Security Agency (Qatar), National Cyber Governance and Assurance Affairs, 2022
- Qatar sender ID registration (AWS End User Messaging SMS user guide) — Amazon Web Services, 2026
- Scam and spam: how to recognise and report them — Vodafone Qatar, 2026
- libphonenumber carrier prefix data for +974 (974.txt) and PhoneNumberMetadata.xml (region QA) — libphonenumber project (Apache License 2.0), 2026
Frequently asked questions
How many digits is a Qatar phone number?
Eight. Mobile and landline numbers in Qatar both have 8 digits and no area code or trunk prefix, for example 3312 XXXX. In international form you add +974 in front: +974 3312 XXXX, stored as +9743312XXXX. Toll-free numbers are shorter: 800 XXXX has 7 digits.
What is the +974 country code and how do I write a Qatar number for WhatsApp?
+974 is Qatar's country calling code. Because Qatar has no trunk prefix, you add +974 to the 8 digits and change nothing else: 3312 3456 becomes +974 3312 3456, stored as +97433123456. The same E.164 form works for WhatsApp, SMS APIs and every other platform. From abroad you can also dial 00974.
Which prefixes are mobile numbers in Qatar?
Numbers starting with 3, 5, 6 or 7 are mobile; numbers starting with 4 are landlines. That is the Communications Regulatory Authority's National Numbering Plan. 800 is toll-free, 900 premium rate, and 92XXX and 97XXX are five-digit SMS short codes for value-added services.
Can I tell Ooredoo from Vodafone Qatar by the prefix?
Not reliably. Blocks are assigned to an operator, for example 33, 55 and 66 to Ooredoo and 70, 74 and 77 to Vodafone Qatar, but mobile numbers have been portable since 31 January 2013 and a number keeps its digits when it moves. Look up the current network per number; inside Qatar, an SMS to 167 does it for a single number.
Why do old Qatar numbers with 7 digits fail validation?
Because Qatar moved from 7 to 8 digits on 28 July 2010. Every mobile and landline number got its first digit doubled, so an old 5XX XXXX became 55XX XXXX and 4XX XXXX became 44XX XXXX. A 7-digit number in an old CRM is either such a number or a 7-digit toll-free 800 number. Ask the customer for the current number instead of guessing.
What are the rules for marketing SMS in Qatar?
Under article 22 of the Personal Data Privacy Protection Law (Law No. 13 of 2016), direct marketing by SMS, e-mail or any electronic channel needs the person's prior consent. Each message must name the sender, say it is marketing and give an easy way to opt out. The NCSA guidance adds that consent must be opt-in, not pre-ticked. The networks also require registered sender names.
Can I check whether Qatari customers are on WhatsApp?
Yes, for numbers you hold with consent or another lawful basis, such as your own customers. A MobileValidate WhatsApp check answers registered, not registered or unknown with a checked_at date; unknown is never billed. It returns no name or profile, and requests that look like scans of number ranges are refused.
Related services and guides
More from the blog
All articlesGuides
Phone numbers by country: formats, portability, channels and rules
How phone numbers differ by country: formats and E.164, numbering changes, portability, line types, messaging channels, and a dated tracker of calling and texting rules.
11 min read
Developers
E.164 phone number format: a practical guide for developers
How to normalize phone numbers to E.164 in JavaScript and Python, the pitfalls that break deduplication, and how the MobileValidate API normalizes input.
9 min read
Developers
E.164 regex: why a pattern is not enough to validate phone numbers
The common E.164 regex accepts impossible numbers. Real counterexamples, the shortest valid international numbers, and what to use a regex for instead.
7 min read

