PlutocracyMercury developer docs

Rendered products by comma-separated handles (capped at 20; each product run through mapOutput with ?currency=).

GET /search/product/{handles}

GET https://mercury.plutocracy.io/search/product/{handles}

Served from Redis in all four regions (Sydney, N. Virginia, N. California, Frankfurt); DNS latency routing picks the nearest.

Rendered products by comma-separated handles (capped at 20; each product run through mapOutput with ?currency=). Missing handles yield null entries in the array (redis JSON.GET misses are passed through).

Auth: Origin+bypass redis strategy.

Authentication

Send the storefront's Origin (browsers do this for you) or ?bypassToken=. A request with neither gets 401. See authentication.

Parameters

NameInTypeDescription
handles requiredpathstring
currencyquerystring

Responses

200 OK application/json

Type: (null | RenderedProduct)[]

Example response (illustrative)
[
  {
    "id": "7712345678901",
    "title": "Linen shirt",
    "implode": 1,
    "handle": "linen-shirt",
    "min_price": 89,
    "compare_at_min_price": 89,
    "vendor": "Mercury Apparel",
    "type": "Shirts",
    "on_sale": false,
    "total_stock": 12,
    "variants": [
      {
        "title": "Linen shirt",
        "id": 7712345678901,
        "inventory": 12,
        "price": "89.00",
        "compare_at_price": "89.00"
      }
    ],
    "prices": {
      "AUD": {
        "price": 89
      }
    },
    "created_date": "2026-11-01T00:00:00.000Z",
    "options": null,
    "normalised_stock": 12,
    "tags": [
      "summer"
    ],
    "image": "https://cdn.shopify.com/s/files/1/0000/0001/files/linen-shirt.jpg",
    "images": [
      "https://cdn.shopify.com/s/files/1/0000/0001/files/linen-shirt.jpg"
    ],
    "related": "string",
    "imploded": [
      {
        "id": "7712345678901",
        "title": "Linen shirt",
        "implode": 1,
        "handle": "linen-shirt",
        "min_price": 89,
        "max_price": 89,
        "compare_at_min_price": 89,
        "compare_at_max_price": 89,
        "vendor": "Mercury Apparel",
        "type": "Shirts",
        "on_sale": false,
        "total_stock": 12,
        "variants": [
          {
            "title": "Linen shirt",
            "id": 7712345678901,
            "inventory": 12,
            "price": "89.00",
            "compare_at_price": "89.00"
          }
        ],
        "prices": {
          "AUD": {
            "price": null
          }
        },
        "created_date": "2026-11-01T00:00:00.000Z",
        "tags": [
          "summer"
        ]
      }
    ],
    "meta": {
      "key": null
    }
  }
]

401 No valid credential. application/json

Type: ApiErrorResponse

default An error, in the standard envelope. application/json

Type: ApiErrorResponse

Errors use the standard envelope; see errors and status codes.

Example request

curl "https://mercury.plutocracy.io/search/product/linen-shirt?bypassToken=$MERCURY_BYPASS_TOKEN"
Where this comes from
Contract
SearchProductsByHandlesRoute in api-types/src/storefront/search.ts
Route
GET /search/product/:handles on the view app