Skip to main content
GET /delivery-zones returns every governorate and area that Now Shipping serves. Every zone value you use in an order, exchange, return, or merchant pickup address must come verbatim from this endpoint — the API validates all zone strings against this catalog and rejects anything that doesn’t match exactly.
Always use areas[].value exactly as returned by this endpoint. Never abbreviate or paraphrase zone names — for example, "Nasr City" will be rejected; the correct value is "Nasr City - ElHay 06 (Nasr City)". Free text is not accepted anywhere in the API.

Authentication

No scope is required. Any valid API key can call this endpoint.

Caching with ETag

The zone catalog changes infrequently. The API returns an ETag header with every 200 response. On subsequent requests, send that value as If-None-Match — if the catalog hasn’t changed you receive 304 Not Modified with an empty body, saving bandwidth and latency.
Cache the zone list in your application at startup and refresh it on a daily schedule (or whenever you receive a zone-validation error). Store the ETag value alongside the cached data so you can send conditional requests.

Request

First request

Conditional request (with ETag)

When the catalog is unchanged, the server returns 304 Not Modified and your cached data remains valid.

Response

200 — Success

304 — Not Modified

Returned when the If-None-Match value matches the current catalog. The body is empty — continue using your cached data.

Response fields

object
Catalog metadata.
array
Array of governorate objects, each containing its areas.

Usage pattern

Build your address form by iterating governorates and populating a zone dropdown from areas[].value for the selected governorate. Pass the selected areas[].value directly into your API requests — no transformation needed.