Get a merchant and its catalogue
https://api.nexgapp.com/v1/catalog/merchants/{id}LiveReturns one live merchant and its catalogue. Items come in the merchant’s own order (by sort, then name), the same order its storefront on nexgapp.com uses.
Age-restricted items are listed only when the merchant holds a verified licence for them, and their age_restricted flag is true so you can label them.
- Authentication
- None needed. A key with
public_readgets its own rate limit. - Rate limit cost
- 1 token
- Caching
- Shared caches, 60 seconds
- Available since
- 21 October 2026
Path parameters
idpath · uuidRequiredThe merchant’s id, from List merchants.
Headers
X-Api-Keyheader · stringOptionalYour API key. Or send it as Authorization: Bearer <key>, but never both in one request.
Response
Merchant data.merchant
iduuidThe merchant’s id. Use it with GET /v1/catalog/merchants/{id}.
trading_namestringThe name guests see on nexgapp.com.
categorystringThe taxonomy vertical, for example restaurant, pharmacy or laundry.
category_otherstring or nullFree text describing the business when category is other.
cover_photo_pathstring or nullThe cover image as nexgapp.com loads it: a URL, or a path that resolves against https://nexgapp.com.
featuredbooleanShown in NexG’s featured placements.
city_slugstringThe city, as a slug such as nairobi.
city_namestringThe city’s display name.
branch_namestring or nullThe primary branch’s name.
branch_addressstring or nullThe primary branch’s street address.
branch_latitudenumber or nullLatitude of the primary branch (WGS 84).
branch_longitudenumber or nullLongitude of the primary branch (WGS 84).
listed_attimestampWhen the merchant went live, which is when guests could first see it.
explore_visibleboolean or nullWhether the merchant appears in Explore on nexgapp.com.
concierge_pickboolean or nullChosen by NexG’s concierge team.
accepting_ordersboolean or nullWhether the merchant is taking orders right now.
pay_on_delivery_enabledboolean or nullWhether guests may pay cash on delivery.
pay_on_delivery_cap_kesinteger or nullThe largest order, in whole shillings, that can be paid on delivery.
prep_minutesinteger or nullTypical preparation time, in minutes.
busy_mode_untiltimestamp or nullSet while the merchant is in busy mode: the time it ends.
closed_early_attimestamp or nullSet when the merchant closed early today.
parent_merchant_iduuid or nullFor a chain, the merchant this branch replicates.
subcategorystring or nullThe subcategory within the vertical, when one is set.
Catalogue item data.catalogue[]
iduuidThe item’s id.
merchant_iduuidThe merchant that sells it.
section_iduuid or nullThe menu or catalogue section it sits in.
namestringThe item’s name.
descriptionstring or nullThe item’s description.
price_kesintegerList price in whole Kenyan shillings. Always an integer, never a decimal.
availableboolean or nullWhether it can be ordered now.
age_restrictedboolean or nullSold to adults only, with ID checked at hand-over. Listed only when the merchant holds a verified licence.
highlightedboolean or nullHighlighted by the merchant on its storefront.
sortinteger or nullPosition within its section.
Errors
Every error has the same shape; see Errors. Branch on error.code and the HTTP status, never on the message.
- 400
invalid_requestBoth X-Api-Key and Authorization were sent, or Authorization is not a Bearer key.
- 401
not_foundThe key is unknown, revoked or expired, or its merchant cannot use the API right now. All of these get the same answer on purpose.
- 403
not_foundA key was sent but it does not have public_read.
- 429
rate_limitedYour token bucket is empty. Wait the number of seconds in the Retry-After header.
- 503
internal_errorNexG could not check the key or the rate limit. Retry with backoff.
- 400
invalid_requestThe id is not a UUID.
- 404
not_foundNo live merchant has that id.
- 500
internal_errorNexG could not read the merchant or its catalogue.
- 500
internal_errorSomething unexpected failed on NexG’s side. NexG logs the X-Request-Id: quote it if you report the failure.