ApiOneEndpointsUse casesBlogIntegrationsDocsStatus

Matching Arabic and English company names

Duplicate accounts are the quiet tax on every Gulf CRM. Most of them come from names, not from bad data entry.

Written by the ApiOne team. Facts checked October 2026.

Why duplicates happen

The same Saudi company can reach your CRM as شركة قيود لتقنية المعلومات from a government filing, Qoyod from its website, Qoyod LLC from an invoice and Qiyoud from a rep's notes. Exact matching sees four companies. Fuzzy matching on Latin text alone still fails, because it cannot compare Arabic with English at all.

The four sources of variation

VariationExample
Legal forms and generic wordsشركة, مؤسسة, ذ.م.م, W.L.L., FZ-LLC, PJSC, Holding, Trading
Arabic spelling variantsأ, إ, آ written as ا; ة as ه; ى as ي; diacritics
TransliterationQoyod, Qiyud, Qiyoud; Rewaa, Rawaa
The definite articleAl-, El-, ال

A method that works

  1. Strip legal forms and generic words in both scripts before comparing anything.
  2. Normalise Arabic spelling: unify the alef forms, ta marbuta, final ya, and remove diacritics and tatweel.
  3. Compare Latin forms on a consonant skeleton. Transliterations disagree mostly on vowels, so Qoyod and Qiyud share the skeleton k-y-d.
  4. Cross scripts through transliteration. Convert the Arabic core to Latin, add common spellings, then compare skeletons.
  5. Keep a threshold and a human check. Two different companies can share a name. Confirm with the domain before merging.

How well does it work? A benchmark on 50 real pairs

We would rather show results than claim accuracy, including where the method fails. On 6 October 2026 we ran 50 name pairs through the live companies/match endpoint, 28 pairs of the same company written differently and 22 pairs of different companies with similar names. The pairs are real Gulf and regional companies, and the full list is below so you can rerun it.

Read this first. We chose the pairs and labelled them from public knowledge of the companies. The set is small, it is not random, and it is one run. It shows how the method behaves, not a guaranteed accuracy figure. Two simple baselines are included for comparison: exact match after lowercasing, and a standard fuzzy ratio (token set ratio, threshold 80, from the open-source rapidfuzz library).

MethodSame-company pairs found (of 28)Different-company pairs wrongly joined (of 22)
Exact match00
Fuzzy ratio at 8024
ApiOne, verdict same only190
ApiOne, same or likely_same244

What the numbers say:

A practical rule from this run: auto-merge only same plus a matching domain, queue likely_same for review, and ignore possible and different unless something else links the records.

Full results

Name AName BTruthApiOne verdict (score)Correct at the likely_same line
شركة المراعيAlmarai Companysame companysame (1.00)yes
إعمار العقاريةEmaar Properties PJSCsame companysame (1.00)yes
شركة الفطيم ذ.م.مAl-Futtaim Trading LLCsame companysame (1.00)yes
بنك الراجحيAl Rajhi Banksame companysame (1.00)yes
مجموعة سامبا الماليةSamba Financial Groupsame companysame (1.00)yes
شركة جرير للتسويقJarir Marketing Companysame companysame (1.00)yes
مجموعة الحبتورAl Habtoor Group LLCsame companysame (0.97)yes
شركة قيود لتقنية المعلوماتQoyod LLCsame companypossible (0.84)no
فودكسFoodicssame companysame (1.00)yes
سلةSallasame companysame (1.00)yes
تماراTamara Companysame companysame (0.97)yes
تابيTabby FZ-LLCsame companysame (0.97)yes
كريمCareem Networks FZ-LLCsame companypossible (0.89)no
شركة زين للاتصالاتZain Telecommunications Companysame companysame (1.00)yes
مجموعة طلعت مصطفىTalaat Moustafa Groupsame companysame (1.00)yes
أرامكو السعوديةSaudi Aramcosame companysame (1.00)yes
لولو هايبرماركتLulu Hypermarketsame companysame (1.00)yes
شركة الاتصالات السعوديةSaudi Telecom Companysame companysame (1.00)yes
بنك الإمارات دبي الوطنيEmirates NBD Bank PJSCsame companylikely_same (0.95)yes
بنك الكويت الوطنيNational Bank of Kuwait S.A.K.P.same companylikely_same (0.97)yes
بيت التمويل الكويتيKuwait Finance Housesame companysame (1.00)yes
شركة الفيصلية القابضةAl Faisaliah Group Holding Co.same companysame (1.00)yes
QoyodQiyoudsame companylikely_same (0.92)yes
RewaaRawaasame companylikely_same (0.90)yes
Al-Futtaim GroupAl Futtaim Trading Co. LLCsame companysame (1.00)yes
Almarai Co.Al Marai Companysame companydifferent (0.77)no
Emaar PropertiesEMAAR PROPERTIES P.J.S.C.same companylikely_same (0.96)yes
Jarir BookstoreJarir Marketing Co.same companypossible (0.81)no
الفطيمالفهيمdifferent companieslikely_same (0.92)no
Al Futtaim Trading LLCAl Fahim Group LLCdifferent companiesdifferent (0.73)yes
نوننورdifferent companiespossible (0.82)yes
NoonNoor Holdingdifferent companiespossible (0.88)yes
تابيتماراdifferent companiesdifferent (0.67)yes
TabbyTamaradifferent companiesdifferent (0.66)yes
جريرجاهزdifferent companiesdifferent (0.56)yes
Jarir Marketing CompanyJahez International Companydifferent companiesdifferent (0.68)yes
سلةسلامdifferent companiesdifferent (0.80)yes
SallaSalam Telecomdifferent companiespossible (0.82)yes
شركة المراعيشركة المطلقdifferent companiesdifferent (0.75)yes
Almarai CompanyAlmutlaq Groupdifferent companiesdifferent (0.78)yes
إعمار العقاريةالإمارات العقاريةdifferent companieslikely_same (0.94)no
Emaar Properties PJSCEmirates Properties LLCdifferent companiespossible (0.85)yes
QoyodQawwamdifferent companiesdifferent (0.58)yes
RewaaRimaadifferent companiesdifferent (0.76)yes
Al Habtoor GroupAl Hamra Groupdifferent companiesdifferent (0.65)yes
بنك الراجحيبنك الجزيرةdifferent companiespossible (0.89)yes
Samba Financial GroupSabb Bankdifferent companiesdifferent (0.73)yes
شركة زين للاتصالاتشركة زاجل للاتصالاتdifferent companiespossible (0.86)yes
CareemKaram Holdingsdifferent companieslikely_same (0.95)no
FoodicsFoodcodifferent companieslikely_same (0.91)no

Doing it with an API

ApiOne implements this method in two endpoints. Name matching compares two names and returns a score and a verdict (same, likely_same, possible, different). Name normalization returns the core name, the legal forms removed, a match key to group duplicates, and common spellings in both scripts.

curl -X POST https://api.apione.store/api/v1/companies/match \
  -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"name_a":"شركة قيود لتقنية المعلومات","name_b":"Qoyod LLC"}'

Each call costs 1 credit. For a CRM cleanup, normalise every account once, group by match key, then run the match endpoint only inside each group.

Frequently asked questions

Can I match names without an API?

Yes, the method above can be built in any language. The hard parts are the legal-form lists and transliteration variants, which is what the endpoints package.

Does a match mean it is the same company?

No. It means the names match. Confirm with the domain or registration number before merging records.

No data, no charge.

100 free credits, no card. Misses, errors and answers without live evidence are free.

Get an API key · Read the docs