Skip to content
NexG ConciergeDevelopers

List merchants

GEThttps://api.nexgapp.com/v1/catalog/merchantsLive

Returns merchants that are live on nexgapp.com: verified by NexG and published. Merchants still in onboarding, paused or delisted are never in this list.

Results are sorted by when the merchant went live, newest first. Each merchant is the same object nexgapp.com reads, with the fields the public is allowed to see. Contact details, legal names and settlement accounts are never part of it.

Authentication
None needed. A key with public_read gets its own rate limit.
Rate limit cost
1 token
Caching
Shared caches, 60 seconds
Available since
21 October 2026

Query parameters

  • cityquery · stringOptional

    A city slug, such as nairobi. Up to 64 characters.

  • categoryquery · stringOptional

    A taxonomy vertical, such as restaurant or pharmacy. Up to 64 characters.

  • qquery · stringOptional

    Free text matched against the trading name, branch name and category_other, ignoring case. Up to 120 characters.

  • cursorquery · stringOptional

    The next_cursor from the previous page, passed back unchanged. Leave it out for the first page. A cursor this endpoint did not issue is refused with 400.

  • limitquery · integerOptional

    Results per page, 1 to 100. Defaults to 25. A value outside that range is refused with 400.

Any other query parameter is refused with 400 invalid_request.

Headers

  • X-Api-Keyheader · stringOptional

    Your API key. Or send it as Authorization: Bearer <key>, but never both in one request.

Response

Merchant data.items[]

  • iduuid

    The merchant’s id. Use it with GET /v1/catalog/merchants/{id}.

  • trading_namestring

    The name guests see on nexgapp.com.

  • categorystring

    The taxonomy vertical, for example restaurant, pharmacy or laundry.

  • category_otherstring or null

    Free text describing the business when category is other.

  • cover_photo_pathstring or null

    The cover image as nexgapp.com loads it: a URL, or a path that resolves against https://nexgapp.com.

  • featuredboolean

    Shown in NexG’s featured placements.

  • city_slugstring

    The city, as a slug such as nairobi.

  • city_namestring

    The city’s display name.

  • branch_namestring or null

    The primary branch’s name.

  • branch_addressstring or null

    The primary branch’s street address.

  • branch_latitudenumber or null

    Latitude of the primary branch (WGS 84).

  • branch_longitudenumber or null

    Longitude of the primary branch (WGS 84).

  • listed_attimestamp

    When the merchant went live, which is when guests could first see it.

  • explore_visibleboolean or null

    Whether the merchant appears in Explore on nexgapp.com.

  • concierge_pickboolean or null

    Chosen by NexG’s concierge team.

  • accepting_ordersboolean or null

    Whether the merchant is taking orders right now.

  • pay_on_delivery_enabledboolean or null

    Whether guests may pay cash on delivery.

  • pay_on_delivery_cap_kesinteger or null

    The largest order, in whole shillings, that can be paid on delivery.

  • prep_minutesinteger or null

    Typical preparation time, in minutes.

  • busy_mode_untiltimestamp or null

    Set while the merchant is in busy mode: the time it ends.

  • closed_early_attimestamp or null

    Set when the merchant closed early today.

  • parent_merchant_iduuid or null

    For a chain, the merchant this branch replicates.

  • subcategorystring or null

    The subcategory within the vertical, when one is set.

Errors

Every error has the same shape; see Errors. Branch on error.code and the HTTP status, never on the message.

  • 400invalid_request

    Both X-Api-Key and Authorization were sent, or Authorization is not a Bearer key.

  • 401not_found

    The key is unknown, revoked or expired, or its merchant cannot use the API right now. All of these get the same answer on purpose.

  • 403not_found

    A key was sent but it does not have public_read.

  • 429rate_limited

    Your token bucket is empty. Wait the number of seconds in the Retry-After header.

  • 503internal_error

    NexG could not check the key or the rate limit. Retry with backoff.

  • 400invalid_request

    A query parameter is not one this endpoint accepts, or fails validation. error.fields names it.

  • 500internal_error

    NexG could not read the merchants.

  • 500internal_error

    Something unexpected failed on NexG’s side. NexG logs the X-Request-Id: quote it if you report the failure.