piidetectionapi.com
Home
Solutions - Fundamentals
What Is PII Detection? NER vs Regex vs Rules Accuracy, Precision & Recall PII in Test Data
Solutions - Compliance
GDPR Personal Data HIPAA PHI Detection CCPA / CPRA PCI DSS Card Data
Solutions - AI & LLM Safety
LLM Guardrails Chatbot PII Filtering RAG Pipelines
Solutions - Data Discovery & DLP
Data Loss Prevention Log File Scanning Support Tickets Email Scanning Documents & PDFs Database Discovery ETL & Streaming Pipelines
Industries - Financial
Banking Fintech Insurance
Industries - Healthcare
Healthcare Pharma & Clinical Trials Telehealth
Industries - Public Sector & Legal
Government & FOIA Law Enforcement Law Firms & eDiscovery Education (FERPA)
Industries - Technology
SaaS Platforms Cybersecurity & IR Telecommunications Gaming & Platforms
Industries - Other
HR & Recruiting Retail & E-commerce Call Centers & BPO Real Estate Travel & Hospitality Marketing & AdTech
How-to Guides - Identity & Contact
Detect Names Detect Email Addresses Detect Phone Numbers Detect Physical Addresses Detect Dates of Birth
How-to Guides - IDs & Financial
Detect SSNs Detect Passport Numbers Detect Drivers Licenses Detect Credit Card Numbers Detect Bank Accounts & IBAN
How-to Guides - Technical & Health
Detect IP & Device IDs Detect Medical Records & PHI
Resources
Pricing API Docs Supported Entities Languages About Contact Sign In Try the Live Demo Get Started




Multilingual PII Detection in 60+ Languages

Personal data does not only appear in English. Names, addresses, national IDs, and phone numbers look different in every language and country — and regex rules built for US formats miss most of them. The PII Detection API uses a context-aware transformer model trained on multilingual data, so a single POST request finds and classifies sensitive entities in any of the languages below, without you specifying the language up front. Every detection is returned with its type, matched text, character offsets, and confidence score, exactly as in English.

Language Countries
Albanian Albania Kosovo North Macedonia
Amharic Ethiopia
Arabic Algeria Bahrain Egypt Iraq Jordan Kuwait Lebanon Libya Morocco Oman Qatar Saudi Arabia UAE Yemen
Armenian Armenia
Awadhi India
Azerbaijani Azerbaijan
Bashkir Russia
Basque Spain
Belarusian Belarus
Bengali Bangladesh India
Bhojpuri India Nepal
Bosnian Bosnia and Herzegovina
Brazilian Portuguese Brazil
Bulgarian Bulgaria
Burmese Myanmar
Cantonese (Yue) China
Catalan Spain Andorra Italy
Chhattisgarhi India
Croatian Croatia Bosnia and Herzegovina
Czech Czech Republic
Danish Denmark Greenland Faroe Islands
Dogri India
Dutch Netherlands Belgium Suriname Aruba CuraƧao
English United States United Kingdom Australia Canada India Ireland New Zealand South Africa Singapore
Estonian Estonia
Faroese Faroe Islands
Finnish Finland
French France Belgium Canada Switzerland Luxembourg Monaco
Galician Spain
Georgian Georgia
German Germany Austria Switzerland Liechtenstein Luxembourg Belgium
Greek Greece Cyprus
Gujarati India
Haryanvi India
Hindi India
Hungarian Hungary
Icelandic Iceland
Indonesian Indonesia
Irish Ireland
Italian Italy San Marino Switzerland Vatican City
Japanese Japan
Javanese Indonesia
Kannada India
Kashmiri India
Kazakh Kazakhstan
Konkani India
Korean South Korea North Korea
Kyrgyz Kyrgyzstan
Latvian Latvia
Lithuanian Lithuania
Macedonian North Macedonia
Maithili India
Malay Malaysia Brunei Singapore
Malayalam India
Maltese Malta
Mandarin Chinese China Taiwan Singapore
Marathi India
Marwari India
Min Nan Taiwan China
Moldovan Moldova
Mongolian Mongolia
Montenegrin Montenegro
Nepali Nepal India
Norwegian Norway
Oriya India
Pashto Afghanistan Pakistan
Persian (Farsi) Iran Afghanistan Tajikistan
Polish Poland
Portuguese Portugal Brazil Mozambique Angola Cape Verde
Punjabi India Pakistan
Rajasthani India
Romanian Romania
Russian Russia Belarus Kazakhstan Kyrgyzstan
Sanskrit India
Santali India
Serbian Serbia Bosnia and Herzegovina Montenegro
Sindhi Pakistan India
Sinhala Sri Lanka
Slovak Slovakia
Slovenian Slovenia
Somali Somalia Djibouti Ethiopia
Spanish Spain Mexico Argentina Colombia Peru Chile
Swahili Tanzania Kenya Uganda
Swedish Sweden Finland
Tagalog Philippines
Tajik Tajikistan
Tamil India Sri Lanka Singapore
Tatar Russia
Telugu India
Thai Thailand
Turkish Turkey Northern Cyprus
Turkmen Turkmenistan
Ukrainian Ukraine
Urdu Pakistan India
Uzbek Uzbekistan
Vietnamese Vietnam
Welsh Wales, United Kingdom
Wu China

Country-Specific Entity Formats

Detecting PII globally is more than translating labels — the identifiers themselves are country-specific. A US Social Security Number (123-45-6789) looks nothing like a UK National Insurance number (QQ 12 34 56 C) or a Spanish DNI (12345678Z). IBANs vary in length from 15 to 34 characters depending on the country, phone numbers switch prefix and grouping conventions at every border, and postal codes range from 4 digits to alphanumeric blocks. The detection model recognizes these national formats together with the surrounding language context, so entity types such as NATIONAL_ID, IBAN_CODE, PHONE_NUMBER, ZIP_CODE, and PASSPORT_NUMBER work across jurisdictions. A sample of the formats covered:

CountryNational ID FormatIBAN ExamplePhone Format
United StatesSSN: 123-45-6789— (uses routing + account, e.g. 021000021)+1 (415) 555-0182
United KingdomNINO: QQ 12 34 56 CGB29 NWBK 6016 1331 9268 19+44 7911 123456
GermanySteuer-ID: 12 345 678 901DE89 3704 0044 0532 0130 00+49 30 901820
FranceINSEE/NIR: 1 85 03 75 116 001 23FR14 2004 1010 0505 0001 3M02 606+33 6 12 34 56 78
SpainDNI: 12345678ZES91 2100 0418 4502 0005 1332+34 612 345 678
ItalyCodice Fiscale: RSSMRA85M01H501ZIT60 X054 2811 1010 0000 0123 456+39 312 345 6789
NetherlandsBSN: 123456782NL91 ABNA 0417 1643 00+31 6 12345678
PolandPESEL: 85031512345PL61 1090 1014 0000 0712 1981 2874+48 512 345 678
BrazilCPF: 123.456.789-09BR18 0036 0305 0000 1000 9795 493C 1+55 11 91234-5678
IndiaAadhaar: 1234 5678 9012, PAN: ABCDE1234F— (uses IFSC + account, e.g. SBIN0005943)+91 98765 43210
JapanMy Number: 1234 5678 9012— (domestic Zengin format)+81 90-1234-5678
SwedenPersonnummer: 850315-1234SE45 5000 0000 0583 9825 7466+46 70 123 45 67

Why Multilingual Detection Needs Context, Not Just Patterns

Names are the hardest multilingual entity: there is no pattern for "Zhang Wei", "Ayşe Yılmaz", or "João Silva" — only context tells a detector that a word is a person. The same applies to addresses, which reverse their order between countries (street-first in the US, city-district-street in Japan), and to dates of birth written as 15.03.1985, 15/03/1985, or 1985年3月15日. Because the API's NER model reads whole sentences rather than matching character patterns, it correctly detects:

  • Person names across scripts — Latin, Cyrillic, Arabic, Devanagari, CJK — including transliterations and names embedded in prose.
  • Addresses in local ordering and with local administrative units (préfecture, Bundesland, oblast, distrito).
  • National identifiers by their country format and the words around them ("NIF", "Steuernummer", "codice fiscale"), even when the label is in another language than the number's country.
  • Mixed-language text — a German support ticket quoting an English error message with an IP address and an API key is scanned as one document.

This is the practical difference between multilingual PII detection and a library of per-country regexes: one request, any language, the same structured response. For a comparison of approaches, see NER vs regex vs rules.

One Request, Any Language

No language parameter is needed — send the text and the model handles language identification internally. The entity types and response fields are identical in every language:

import requests

resp = requests.post(
    "https://piidetectionapi.com/api/moderate.php",
    json={
        "api_key": "YOUR_API_KEY",
        "api_type": "pii_detection",
        "text": "Kontaktieren Sie Hans Müller unter [email protected] "
                "oder +49 170 1234567. IBAN: DE89 3704 0044 0532 0130 00.",
        "mask_mode": "replace",
    },
    timeout=30,
)
data = resp.json()
for e in data["detected_entities"]:
    print(e["type"], e["text"], e["start"], e["end"], e["confidence"])

# PERSON_NAME    Hans Müller                     17 28  0.97
# EMAIL_ADDRESS  [email protected]           35 56  0.99
# PHONE_NUMBER   +49 170 1234567                 62 77  0.99
# IBAN_CODE      DE89 3704 0044 0532 0130 00     85 112 0.99

Character offsets (start/end) are counted on the original Unicode text, so they stay valid for highlighting or building your own redaction in any script. Detection quality is strongest in widely spoken languages (English, Spanish, German, French, Portuguese, Chinese, Japanese, Arabic, Hindi) and remains reliable across the full list above; for details on measuring per-language accuracy, see precision, recall & F1 for PII detection.

Global Data, Global Regulations

Multilingual coverage matters because privacy law follows the person, not the language of your codebase. GDPR applies to a French customer's data even when it sits in an English-language CRM; LGPD covers Brazilian CPF numbers in your logs; and HIPAA-regulated providers increasingly serve patients in Spanish, Mandarin, and Vietnamese. Scanning every language your users actually write in is the only way to make GDPR personal-data discovery, DLP, and support-ticket scanning complete.