# List your shops

`GET /shops`

Returns the establishments accessible with your API key. Use the returned
`id` as `shop_id` in other endpoints.

Requires the `shops:read` scope.

**Returns** a `data` array of up to `limit` shops and a `pagination`
object. Fetch the next page by passing `pagination.next_cursor` back as
`cursor`, until `has_more` is `false`. The list only ever contains
establishments your key can read: it is the reference for every
`shop_id` accepted by the other endpoints.

## Example request

```bash
curl "https://api.dokaa.app/v1/shops" \
  -H "Authorization: Bearer dk_live_..."
```

## Query parameters

- `search` (string) – Filter by shop name or slug (case-insensitive, partial match)
- `cursor` (string) – Opaque cursor from the previous response's `pagination.next_cursor`
- `limit` (integer) (default: 25; min: 1; max: 100) – Number of items per page

## Responses

### 200 – Paginated list of shops

```json
{
  "data": [
    {
      "id": "64f1a2b3c4d5e6f7a8b9c0d1",
      "name": "Pizza Marcel",
      "slug": "pizza-marcel",
      "google_connected": true,
      "average_rating": 4.6
    }
  ],
  "pagination": {
    "next_cursor": null,
    "has_more": false
  }
}
```

### 401 – Missing, invalid, or revoked API key

Errors are `application/problem+json` (RFC 9457) with `type`, `title`, `status` and `detail` fields.
