Muwazin موازن

Early access

Saudi grocery prices, as data

The catalog behind Muwazin: 96,000+ products with a current price at 21 chains, matched across retailers down to the branch. Prices, promotions and stock are refreshed every night, with history back to March 2026. Available as a REST API or exports for teams that need it in their own systems.

A person reads every request, and we reply within two business days. Already have a key? Open the developer console.

186,506 in-stock chain prices in the 19 October 2026 update
  1. Danube32,140
  2. BinDawood23,753
  3. LuLu16,171
  4. Ramez16,158
  5. Tamimi13,291
  6. Carrefour11,913
  7. Panda11,491
  8. Othaim11,255
  9. Aljazera10,434
  10. HungerStation8,521
  11. 11 others31,379

In-stock prices per chain in the latest update. Branch prices are counted separately below.

products with a current price
96,559
products priced by two or more chains
32,397
branches priced one by one, in 39 cities
484
branch-level prices in stock today
6 million

Prices are updated every night from the stores' own websites and apps.

What's in the data?

The same records that power the app, without the app in the way.

  • Matched across retailers

    One record per product, with every chain's listing under it: current price, stock, product page, and which listing each price came from. Products are matched by barcode first, then by name, size and brand, and each carries a match confidence you can read before you trust it.

  • Prices per branch

    The same product at every branch we collect: 484 branches in 39 cities, each with its coordinates. A branch row carries the price, the "was" price when the item is on sale there, stock state and quantity, the promotion label and any purchase limit. Ask by city, or for the stores nearest a point.

  • Promotions and stock, detected nightly

    Price drops, "was" prices and the retailer's own promotion labels are flagged the night they appear and the night they end. An item a chain stops listing goes out of stock the next night. A chain we could not collect is marked stale, never guessed.

  • Daily price history

    Every product's price at every chain, day by day since March 2026, and at every branch since September 2026: 15.9 million price observations, so you can see when a promotion started, when it ended, and how a shelf price drifted over months.

  • Bilingual names, barcodes, units

    Arabic and English names, brand, pack size and unit parsed from the name itself; retailers' own weight and brand fields are unreliable, so we don't trust them. Barcodes are checked and repaired, and every price says whether it buys one item or one kilogram.

  • Price movements

    Every drop and rise since last night and week over week, by chain and category, ready for a morning report or a promotion tracker.

Every chain's price in one call, then every branch's

Look a product up by barcode, or by name in Arabic or English, and get the matched product with its price at every chain that sells it. Ask for its branches and get each store's price, "was" price, stock and promotion, with the store on the map.

GET /v1/barcodes/6281007033114

{
  "name": { "en": "Almarai Extra Virgin Olive Oil 500 ml" },
  "cheapest": { "retailer": "panda", "price": 24.99 },
  "prices": [
    { "retailer": "panda",    "price": 24.99, "inStock": true },
    { "retailer": "ramez",    "price": 25.95, "inStock": true },
    { "retailer": "makhazin", "price": 26.95, "inStock": true }
    … and 11 more chains
  ]
}
A shortened real response. Every field is in the API reference.
GET /v1/products/VYmD6LKNK8vKSoAHZrnd/branches?city=Riyadh&inStock=true

{
  "items": [
    { "retailer": "panda",
      "store": { "name": { "en": "RIY AlRayyan" }, "city": "Riyadh", "lat": 24.7028, "lng": 46.7709 },
      "price": 24.99, "originalPrice": 38.99, "stockState": "in",
      "promo": { "type": "discount", "text": "36% Off" }, "limits": { "max": 10 },
      "stale": false }
  ]
}
A shortened real response: one of this product's branches.

Who asks for this data?

Three kinds of teams have been pulling this data by hand. This is the supported way to get it.

  • Retailers and brands

    Benchmark your shelf prices against every other chain we cover, every morning, branch by branch where it matters. Track who is running a promotion on your category, and for how long. Build a price index per category without a scraping team.

  • Researchers and public bodies

    Track grocery inflation with daily observations instead of monthly surveys. Cost a standard basket by retailer over time. Get a clean, documented dataset for a paper or a policy note.

  • Developers and apps

    Look up a barcode and get every retailer's price in one call. Add "cheapest store for this list" to a budgeting, cashback or delivery app without building the catalog yourself.

How does access work?

No self-serve signup yet. Every request is read by a person, and that is on purpose.

  1. Tell us what you need

    Use the form below. Two sentences are enough: who you are and what you want to do with the data.

  2. We reply with a plan

    A sample export or a test key scoped to what you described, plus pricing for the volume you need. Usually within two business days.

  3. You get a key or a schedule

    An API key with metered usage, paid in advance by the month or the year, or exports delivered on a schedule. Terms in writing, and nothing renews by itself.

Plans

Start with a free evaluation key, requested below. Then buy a plan in the developer console, one or twelve months at a time. Nothing renews by itself.

Start here

Evaluation

Free

500 units and 200 products of browse over the key's 14 days, 30 requests a minute, 30 days of history. A proof of concept, not a demo.

Developer

SAR 299 / month

50,000 units a month, 60 requests a minute, 90 days of history, 10,000 products of browse a month. For one app or integration, with a "Prices by Muwazin" credit.

Pro

SAR 899 / month

250,000 units a month, 150 requests a minute, hybrid search, full history, the whole catalog, exports on request. For products and internal tools.

Business

SAR 2,499 / month

1,000,000 units a month, 300 requests a minute, the benchmark and volatility reports, exports on request, no attribution required, priority support.

Enterprise: custom volumes, an SLA, contracts and annual licences for institutions. Tell us what you need. Full limits are in the docs.

What to know before you rely on it

We'd rather you read this now than discover it later.

  • Prices come from the retailers' own websites and apps, collected once a night. They are not read off physical shelves and can differ in-store. Every price carries its collection time, and a branch price names its branch.
  • Cross-retailer matching is automated with manual review. A small share of matches can be wrong. Every price tells you which retailer listing it came from, so you can verify.
  • Coverage moves. A retailer's site can change and go dark for us for a while; when that happens, its prices stop updating and are flagged as stale rather than invented. Branch coverage also differs by chain: the retailers endpoint says how many branches each one has.
  • No uptime guarantee yet. During early access there is no formal SLA. We'll tell you what our real availability has been if you ask.
  • Need something the plans don't cover? Higher volumes or a specific export format: say so in the request and we'll put together a custom plan. Showing prices inside your own product is allowed on every paid plan, with a visible "Prices by Muwazin" credit linking to muwazin.me on Developer and Pro.

Frequently asked questions

Technical questions: the developer guide has the details.

Is the Muwazin API free?

The Evaluation plan is free: 500 units and 200 products of browse over the 14-day life of the key, enough for a proof of concept. Developer is SAR 299 a month, Pro SAR 899 and Business SAR 2,499, paid in advance for one or twelve months, with custom Enterprise terms for larger needs.

What formats does Muwazin provide data in?

A JSON REST API for lookups and queries. For bulk needs, a one-time data export puts last night's prices in one file (CSV, Excel, JSON or Parquet) from SAR 3,000; regular files and price history are quoted on request.

How fresh is the price data?

Prices are collected once a night from the retailers' own websites and apps. Every price carries the chain it came from, the branch where there is one, and the time it was collected.

Does the data include price history?

Yes. Muwazin keeps every product's price at every chain day by day since March 2026, and at every branch since September 2026, so you can see how a price moved over time and when promotions started and ended.

Do you have prices per branch?

Yes. For chains that price by branch we collect every branch, with its city and coordinates, so one product can carry hundreds of prices. The API returns them with each branch's "was" price, stock state and promotion label.

Do you detect promotions and out-of-stock items?

Yes. Each night we compare every price with the night before, keep the retailer's own "was" price and promotion label, and record whether the item is in stock at the chain and at each branch. The history shows when a promotion started and when it ended.

Can I scrape the Muwazin app instead of using the API?

No. The app and its public endpoints are rate-limited and bulk paging is blocked. The data access program on this page is the supported route, and it is cheaper than maintaining a scraper against every retailer's changing website.

Request access

Tell us who you are and what you want to do. We read every request.

  • We reply within two business days, usually with an evaluation key or a sample export.
  • Your details are used only to reply to you: no newsletter, no sharing.
  • Prefer email? Write to hello@muwazin.me
Please enter your name.
Please enter a valid email address.
Please pick the closest option.
A sentence or two helps us reply with something useful.
We use this only to reply to you. No newsletter, no sharing.