Skip to main content
View as Markdown

Read Current Prices

This guide shows you how to use BatchGetPricing to fetch the current price, MSRP, and active status for a set of SKUs — for example, to reconcile noon's live prices against your own system. By the end, you'll have a repeatable read that flags every SKU where noon's stored pricing differs from what you expect.

Prerequisites

Step 1 — Request pricing for your SKUs

BatchGetPricing (POST /pricing/v1/pricing/get) returns the current price, MSRP, and active status for each partner_sku + country_code pair you send. Batch all the SKUs you want to reconcile into a single request. Each pair is resolved independently, so the same partner_sku can appear once per country.

Valid values for country_code: "ae", "sa", "eg".

# get_authenticated_session() is provided in docs/snippets/auth.mdx — see Authenticating Your Requests
session = get_authenticated_session()

response = session.post(
"https://noon-api-gateway.noon.partners/pricing/v1/pricing/get",
json={
"items": [
{"partner_sku": "MY-SKU-001", "country_code": "ae"},
{"partner_sku": "MY-SKU-002", "country_code": "ae"},
{"partner_sku": "MY-SKU-001", "country_code": "sa"},
]
},
headers={
"Content-Type": "application/json",
"User-Agent": "MyPricingSync/1.0.0",
},
timeout=30,
)
response.raise_for_status()
result = response.json()

Response:

<!-- from: v1BatchGetPricingResponse / v1BatchGetPricingResponseItem -->
{
"items": [
{
"partner_sku": "MY-SKU-001",
"country_code": "ae",
"status": { "status_id": 0, "status_code": "OK", "message": "" },
"price": 149.99,
"msrp": 199.99,
"is_active": true
},
{
"partner_sku": "MY-SKU-002",
"country_code": "ae",
"status": { "status_id": 0, "status_code": "OK", "message": "" },
"price": 89.00,
"msrp": null,
"is_active": true
},
{
"partner_sku": "MY-SKU-001",
"country_code": "sa",
"status": {
"status_id": 5,
"status_code": "NOT_FOUND",
"message": "Pricing not configured for this SKU and country"
},
"price": null,
"msrp": null,
"is_active": null
}
]
}

You'll know this worked when the response contains one entry in items for every pair you sent, each carrying a status.

Key fields on each entry:

  • price — the current selling price on noon. null if no pricing record exists.
  • msrp — the crossed-out reference price shown on the listing. null if not set.
  • is_active — whether the SKU is currently sellable in that country. null if no pricing record exists.
  • status — the per-item result. See Step 2.
ConditionWhat it meansWhat to do
Non-2xx responseThe whole request failed — authentication, authorization, or a malformed payloadCheck rpcStatus.message on the error body and retry once corrected
Empty or missing items in your requestitems is requiredSend at least one { partner_sku, country_code } pair

Step 2 — Check each item's status

The HTTP status covers only the request as a whole. Each entry in items carries its own status, and a single 200 response can return a mix of successful and failed items. Always inspect every entry's status before trusting its price, msrp, or is_active.

The status object (rpcStatus) has these fields:

  • status_id — numeric code; 0 is success.
  • status_code — string code; OK is success.
  • message — human-readable detail, populated on failure.

A status_code of OK (with status_id: 0) means that item succeeded and its price, msrp, and is_active are authoritative. Any other status_code means that item failed — its price, msrp, and is_active will be null and must not be used. In the example above, MY-SKU-001 in SA returned NOT_FOUND because noon has no pricing record for that SKU and country, while the other two items succeeded.

When reconciling in bulk, branch on status_code: treat OK items as comparable data, and route every non-OK item to a separate exception list keyed off partner_sku and country_code.

Step 3 — Reconcile against your system

Compare each successful item against your own records:

  • Price or MSRP mismatch — noon's price / msrp differs from your source of truth.
  • Active-status mismatchis_active is true but you intend the SKU to be off-sale, or vice versa.
  • Missing record — a non-OK status (such as NOT_FOUND) means noon has no pricing for that SKU and country at all.

For any discrepancy, the fix is a write back to noon. BatchGetPricing is read-only; to correct price, MSRP, or active status — or to create a missing record — use BatchUpsertPricing. See Set Prices.

After writing corrections, re-run this guide from Step 1 to confirm noon now matches your system.

Next steps