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.

View as MarkdownOpenAPI specAll docs for LLMs

  • 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

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).

Response

200. The example's stores are fictional.

{
  "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).
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.