GCC Market Report

GCC Market Report · a commercial data analysis case study by Mohammad Uzair Khan, on the public medicine price lists of Saudi Arabia and Bahrain

Sitagliptin is where MSD meets the most generics: 80 in Saudi Arabia, the cheapest 52% below Januvia’s lowest price per tablet, and 31 in Bahrain

Two regulators’ price lists, 8,207 Saudi and 5,560 Bahraini products, are validated each month, loaded into one database, put on one classification and compared: who competes with MSD’s 35 Saudi and 33 Bahraini products, what the same pack costs in each country, what the US pays for the same tablet, and what changed since Bahrain repriced in 2024. The data is prices and registrations, not sales.

Products in MSD’s classes
338 Saudi · 218 Bahrain
MSD packs matched in both
25, 20 cheaper in Saudi Arabia
Bahrain prices unchanged since Feb 2024
247 of 267 (92.5%)
Checks before loading
22, none failed

Competition: where MSD’s molecules have other versions

Within each molecule a product is MSD’s, another originator brand, or a generic or other version. A competing vaccine counts as another brand, not a generic. Molecules where MSD is the only product are in the table.

Saudi Arabia: other products per MSD molecule

Generic or other versions (solid) and competing brands (light). Hover a bar for MSD's lowest and the cheapest generic price per unit.

020406080Sitagliptin80 versions, cheapest −52%Sugammadex19 versions, cheapest −35%Pneumococcal vaccines4 other brandsMeasles, mumps and rubella va…2 other brandsVaricella and zoster vaccines2 other brandsHPV vaccines1 other brandRaltegravir1 version, cheapest −7%Rotavirus vaccines1 other brand
Source: SFDA Drugs List (18 Oct 2026) and NHRA Registered Medicine Price List (7 Sept 2026). Price per unit (tablet, vial, dose) in US dollars at 3.75 SAR and 0.376 BHD to the dollar.

The same MSD pack costs a median 5% less in Saudi Arabia than in Bahrain; 20 of 25 are cheaper there

Packs are compared only when brand, strengths, form, release and units per pack all agree, one to one. Vaccines are compared per dose. Most differences are a few percent, consistent with GCC price alignment; the exceptions are large.

Saudi price per unit against Bahrain's, same MSD pack

Left of zero: cheaper in Saudi Arabia. Hover a bar for both prices.

−40%−20%+0%Janumet 1000,50−42%Januvia 100−37%Janumet XR 1000,100−30%Janumet XR 1000,50−30%Janumet XR 500,50−30%Keytruda 25−25%Prevymis 480 infusion−18%Capvaxive 84−16%Vaxneuvance 64−11%Gardasil 9−9%Pneumovax 23 50−7%Varivax 1350−7%Prevymis 480 tablets−5%Welireg 40−3%Pifeltro 100−3%Recarbrio−3%Winrevair 60 x1−3%Winrevair 60 x2−3%Prevymis 240−3%Januvia 25−1%Rotateq+2%Winrevair 45 x1+3%Winrevair 45 x2+3%Januvia 50+9%M-M-R II+10%
Source: SFDA and NHRA price lists; public retail prices, not net prices. Not compared: Bridion, 2 Saudi and 1 Bahrain packs agree on every recorded field.

The US pays several times the GCC price for the same tablet

US price: the National Average Drug Acquisition Cost per tablet, from Drug Price Watch. A brand appears where the same strength is registered in that country. Acquisition cost is not net price in either market.

US price per tablet as a multiple of the GCC price

Dark: against Saudi Arabia. Light: against Bahrain.

0×4×8×12×Januvia, Saudi Arabia11.7×Januvia, Bahrain7.4×Janumet, Saudi Arabia11.7×Janumet, Bahrain6.8×Isentress, Bahrain1.7×Pifeltro, Saudi Arabia5.0×Pifeltro, Bahrain4.8×Delstrigo, Saudi Arabia4.3×Delstrigo, Bahrain4.2×
Source: CMS NADAC (US), SFDA and NHRA price lists.

Bahrain’s prices barely moved after its February 2024 repricing: 247 of 267 unchanged

Products in the 18 Feb 2024 innovator and generics lists matched to the 7 Sept 2026 list by registration number. 18 rose and 2 fell by more than half a percent; they are all listed.

Every Bahrain price that moved, 2024 to 2026, in dinars
ProductStrengthPack20242026Change
ACTEMRA20010ML189.26152.48−19%
ACTEMRA40020ML374.38304.96−19%
TISSEEL LYOnan2ML50.0950.44+1%
TISSEEL LYOnan4ML100.17100.89+1%
SEVIKAR HCT40/5/12.52811.6811.90+2%
SEVIKAR HCT40/5/252811.6811.90+2%
SEVIKAR HCT20/5/12.5289.029.32+3%
SEVIKAR HCT40/10/252812.6113.32+6%
SEVIKAR HCT40/10/12.52812.6113.32+6%
TISSEEL LYOnan10ML227.96252.21+11%
YASMIN3/0.03212.342.77+18%
MUCOSOLVAN30100ML 1.431.71+20%
XFLOX40054.195.16+23%
DAIVOBET50/50080G15.9220.34+28%
LANTUS SOLOSTAR1005 X 3ML23.8930.79+29%
NOLVADEX10302.863.72+30%
LANTUS10010ML17.6623.61+34%
XFLOX40075.357.22+35%
ZOVIRAX510G2.494.07+63%
LEVOZAL5200.881.53+74%

Checked before it reaches the database

Each month’s files pass a validation gate before they are loaded. A review is not a failure: it names what a person should look at, such as rows that could not be traced or prices that changed between two reads.

Saudi Arabia

  • ReviewList rows without an SFDA id are quarantined1 quarantined (Torixia) · rule: a row without a details link cannot be traced; it is kept aside, not loaded
  • PassIds are unique after de-duplication8,207 rows, 8,207 ids · rule: one row per id
  • ReviewShare of the list's rows that are distinct products8,208 distinct of 9,173 rows read (89.5%); 459 pages of up to 20 (9,180) · rule: the list's order shifts between pages, so a page read later can repeat products and skip others; class products are filled in by searching each ingredient (V08)
  • ReviewEvery product has a positive public price2 without · rule: price > 0 SAR
  • ReviewTrade name, scientific name and dosage form are filled1 rows missing one · rule: 0
  • PassDetail pages read for every followed product338 read, 0 failed · rule: 0 failures
  • PassFollowed products carry an ATC code2 without (OLPUNTRAMET, OLPUNTRAMET) · rule: at most 5% without
  • InfoProducts found only by the ingredient search, not in the list read5 · rule: the list read missed them (see V03)
  • PassPack size known for followed products338 of 338 · rule: at least 90%, needed for price per unit
  • ReviewList price equals the price read again with the details5 differ · rule: 0 (the two reads were minutes apart)
  • PassDatabase holds every staged rowlist 8,207, details 338 · rule: rows in = rows loaded

Bahrain

  • InfoRows read from the 2026 list5,560 · rule: every non-empty row of the sheet
  • PassRegistration numbers have the DRN-nnnnn/yy form2 do not · rule: at least 99%
  • PassEvery product has a positive retail price0 without · rule: price > 0 BD
  • PassA registration number and pack size appear once0 rows share one · rule: one row per registration and pack
  • PassUnits per pack read from the pack-size text5,461 of 5,560 (98.2%) · rule: at least 90%; the rest stay unknown, not guessed
  • InfoProducts in the followed molecules and vaccine classes218 (MSD 46) · rule: matched by active substance or vaccine brand
  • InfoActive substances matched only after a spelling fix2 (e.g. DORAVIRIN, TINOFOVIR) · rule: spelling variants listed in gr.analyse.SPELLINGS
  • InfoMSD products in Bahrain outside the followed classes7: CANCIDAS, ENFLONSIA, ESMERON, INVANZ, NOXAFIL, TEMODAL, VAQTA · rule: not compared: no Saudi detail pages for these molecules
  • PassFollowed molecules given an ATC class from the Saudi datawithout a class: none · rule: every followed molecule classed
  • Info2024 price-list entries found in the 2026 list267 of 280 (95.4%) · rule: matched on the registration number; the rest were cancelled or renumbered
  • PassDatabase holds every staged Bahrain row5,560 · rule: rows in = rows loaded

Method, downloads and limits

  1. Prepare and validate. The SFDA list, its detail pages (ATC code, pack size, company, agent) and its ingredient search; the NHRA 2026 list and its 2024 innovator and generics lists. Each passes 11 checks; rows that cannot be traced are quarantined, not loaded.
  2. One database. Both countries load into one DuckDB warehouse, and each month is compared with the last: new products, products no longer listed, price changes.
  3. Harmonise. Bahrain has no ATC codes, so a product takes the class SFDA gives the same molecule. Spellings are fixed in code and counted (“DORAVIRIN”, “TINOFOVIR”, “KETRUDA SC”). Free-text pack sizes (“10 X 2ML”, “1 + 1”) are parsed into units per pack, or left unknown rather than guessed.
  4. Report. An Excel pack with live formulas and a quarterly forecast entry sheet (the team types units and a generic launch quarter; revenue follows the measured brand retention), checked in Excel (1,857 values agree with Python at two exchange-rate settings). A six-page Power BI report, refreshed in Power BI Desktop’s engine with every measure compared to Python (194 values agree).

Download the Excel pack (.xlsx)Power BI project on GitHub

Limits. Two of six GCC countries: the UAE’s price list is a paid service, Abu Dhabi’s drug search sits behind a CAPTCHA, and Oman, Kuwait and Qatar publish price changes as news or PDFs. Public retail prices, not net prices, and no sales volumes. An independent analysis of public data, not produced or endorsed by MSD or any company named.