# Competitor tracking setup of a shop

`GET /competitors`

Returns the competitor tracking setup of a shop: the target (the shop
itself on Google), the tracked competitors, and the competitor groups
(named sub-groups of competitors, e.g. one per brand). Use this to know
who is being compared before calling `/competitors/positioning` or
`/competitors/evolution`.

Requires the `competitors:read` scope.

**Returns** a single object (no pagination). Answers a `404` problem
when competitor tracking is not set up for the shop.

## Example request

```bash
curl "https://api.dokaa.app/v1/competitors?shop_id=SHOP_ID" \
  -H "Authorization: Bearer dk_live_..."
```

## Query parameters

- `shop_id` (string, required) – The shop to inspect

## Responses

### 200 – The competitor panel of the shop

```json
{
  "target": {
    "google_place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4",
    "name": "Pizza Marcel",
    "category": "Pizza restaurant",
    "rating": 4.6,
    "review_count": 1240,
    "price_range": "€€"
  },
  "competitor_count": 2,
  "competitors": [
    {
      "google_place_id": "ChIJrTLr-GyuEmsRBfy61i59si0",
      "name": "Rival A",
      "category": "Italian restaurant",
      "rating": 4.4,
      "review_count": 890,
      "price_range": "€€"
    },
    {
      "google_place_id": "ChIJq6qq6jauEmsRJRk-abcdefg",
      "name": "Rival B",
      "category": "Pizza delivery",
      "rating": 4.1,
      "review_count": 305,
      "price_range": "€"
    }
  ],
  "groups": [
    {
      "group_id": "66f1a2b3c4d5e6f7a8b9c0d9",
      "name": "Centre-ville",
      "member_count": 2,
      "members": [
        "ChIJN1t_tDeuEmsRUsoyG83frY4",
        "ChIJrTLr-GyuEmsRBfy61i59si0"
      ]
    }
  ]
}
```

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

### 403 – The API key does not grant access to this resource

### 404 – The requested resource does not exist or is not accessible

### 422 – Invalid request parameters

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