> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rxscale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pharmacy Products

> List the products your pharmacy carries, grouped from your SKUs

# Pharmacy Products

View the products your pharmacy carries, each with its pharmacy SKUs nested underneath. This is
a product-first view of the same underlying data as [Pharmacy SKUs](/api-reference/external-pharmacy/skus)
— use this endpoint when you want one row per product with its variants grouped together,
instead of one row per SKU.

## List Products

```bash theme={null}
GET /v1/external_pharmacy_api/pharmacy_products/
```

<ParamField query="page" type="integer" default="0">
  Page number (0-indexed)
</ParamField>

<ParamField query="limit" type="integer" default="50">
  Items per page. Capped at a maximum of 500 — values above 500 are silently reduced to 500.
</ParamField>

<ParamField query="pharmacy_uid" type="string">
  Required for group-wide API keys
</ParamField>

### Example Request

```bash theme={null}
curl -X GET "https://api.rxscale.com/v1/external_pharmacy_api/pharmacy_products/?page=0&limit=50" \
  -H "X-API-Key: YOUR_API_KEY"
```

### Response

```json theme={null}
{
  "data": [
    {
      "uid": "prod-789",
      "display_name": "Medication X",
      "short_name": "Med X",
      "handle": "medication-x",
      "image_url": "https://cdn.rxscale.com/products/medication-x.jpg",
      "prescription_required": false,
      "pharmacy_skus": [
        {
          "uid": "psku-abc123",
          "price": 1299,
          "stock": 50,
          "external_id": "EXT-001",
          "created_at": 1716200000,
          "updated_at": 1716203600,
          "deleted_at": null,
          "sku": {
            "uid": "sku-456",
            "display_name": "Medication X 100mg",
            "pzn": "12345678",
            "digital": false,
            "unit": "g",
            "standard_selling_unit": 10.0
          }
        }
      ]
    }
  ],
  "totalRegistries": 42,
  "totalPages": 1
}
```

<Note>
  The `price` field on each nested pharmacy SKU is in **euro cents** (e.g., `1299` = €12.99).
</Note>

<Note>
  **Pagination counts products, not SKUs.** `totalRegistries` and `totalPages` reflect the number
  of products in the response, regardless of how many SKUs are nested under each one. A product
  with three SKUs still occupies a single row and counts once.
</Note>

<Note>
  **Which products appear:** a product is listed when you have at least one SKU for it that is
  visible to you. If your account is configured to hide SKUs of a particular type (digital or
  physical — see [Pharmacy SKUs](/api-reference/external-pharmacy/skus)), SKUs of that hidden type
  are omitted from the `pharmacy_skus` array entirely — they are not returned at all, even inside
  a product that also has visible SKUs. A product whose SKUs are *all* hidden does not appear in
  `data` at all, and is not counted in `totalRegistries`. Stock level has no effect on whether a
  product is listed — a product with every SKU at stock `0` still appears.
</Note>
