# App popularity by category, region and industry

`GET /v1/public/stats`

Returns, with **no key**, how many stores run each app category and its ten most installed apps, broken down by region and industry.

- **Auth:** none
- **Cost:** Free; no key. 30 requests a minute per IP.

Use it for aggregate charts and landing pages. It never names a store; for stores, use a key.

No key. Recomputed daily over every store we scanned. Per app category: how many stores run any
app in it, and its ten most installed apps, each broken down by region and top-level industry
(`unknown` for stores without a country or an industry reading yet). 30 requests a minute per IP;
cacheable for an hour.

## Request

```bash
curl "https://api.installgraph.com/v1/public/stats?category=email-sms"
```

### Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `category` | Category | No | One of 28 values (see [Data model](https://installgraph.com/docs/data-model.md)). |

## Response

`200`. The example's stores are fictional.

```json
{
  "data": {
    "computedAt": "2026-11-06T02:00:00.000Z",
    "companies": 412806,
    "byRegion": {
      "north-america": 221034,
      "europe": 109877,
      "asia-pacific": 52410,
      "latin-america": 14988,
      "middle-east-africa": 9877,
      "unknown": 4620
    },
    "byIndustry": {
      "Apparel": 88312,
      "Beauty & Fitness": 51207,
      "unknown": 30114
    },
    "regions": {
      "north-america": "North America",
      "europe": "Europe"
    },
    "categories": [
      {
        "category": "email-sms",
        "companies": 198440,
        "byRegion": {
          "north-america": 112307,
          "europe": 50122
        },
        "byIndustry": {
          "Apparel": 47210
        },
        "apps": [
          {
            "slug": "klaviyo",
            "name": "Klaviyo",
            "category": "email-sms",
            "companies": 96120,
            "share": 0.2328,
            "byRegion": {
              "north-america": 58014
            },
            "byIndustry": {
              "Apparel": 24877
            }
          }
        ]
      }
    ]
  },
  "meta": {
    "requestId": "6f1c2a9e-4b7d-4e2a-9c51-0d3b8e7f2a14"
  }
}
```

### Fields

| Field | Type | Description |
| --- | --- | --- |
| `data.computedAt` | string (date-time) |  |
| `data.companies` | integer |  |
| `data.byRegion` | Breakdown | Store counts by region id or industry name, with `unknown` for stores lacking one. |
| `data.byIndustry` | Breakdown | Store counts by region id or industry name, with `unknown` for stores lacking one. |
| `data.regions` | object | Region id to name. |
| `data.categories` | object[] |  |
| `data.categories[].category` | Category | One of 28 values (see [Data model](https://installgraph.com/docs/data-model.md)). |
| `data.categories[].companies` | integer |  |
| `data.categories[].byRegion` | Breakdown | Store counts by region id or industry name, with `unknown` for stores lacking one. |
| `data.categories[].byIndustry` | Breakdown | Store counts by region id or industry name, with `unknown` for stores lacking one. |
| `data.categories[].apps` | object[] |  |
| `data.categories[].apps[].slug` | string |  |
| `data.categories[].apps[].name` | string |  |
| `data.categories[].apps[].kind` | string | One of `shopify-app`, `web`. |
| `data.categories[].apps[].companies` | integer |  |
| `data.categories[].apps[].share` | number | Share of all stores counted, 0–1. |
| `data.categories[].apps[].byRegion` | Breakdown | Store counts by region id or industry name, with `unknown` for stores lacking one. |
| `data.categories[].apps[].byIndustry` | Breakdown | Store counts by region id or industry name, with `unknown` for stores lacking one. |

## Errors

| Status | Code | Meaning | What to do |
| --- | --- | --- | --- |
| 404 | `not_found` | No such endpoint, app, or store (or not scanned yet). | Check the slug or domain. Store 404s are free within the lookup-miss allowance. |
| 429 | `rate_limited` | Too many requests this minute. | Wait `Retry-After` seconds, then retry. |

All codes: [Errors](https://installgraph.com/docs/errors.md).
