- Auth: API key (Authentication)
- Scope:
apps:read - Cost: Free.
Use it to find an app's slug for the other endpoints, or to list one category with category.
Every app we recognise, by slug. Free. Scope apps:read.
With q, apps by name as merchants know them, ranked: exact displayName, then exact brand, exact alias, displayName by prefix, brand or alias by prefix, and last a word of the listing title; within each, most installed first. q is matched by prefix, ignoring case, spaces and punctuation (judge.me, Judge Me and judgeme are the same). Pages follow the ranking (pass back nextCursor with the same q).
Request
curl "https://api.installgraph.com/v1/apps?category=email-sms&limit=1" \
-H "Authorization: Bearer $INSTALLGRAPH_API_KEY"
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
q |
string | No | An app's name, brand, former title or abbreviation, or the start of one: klaviyo, stoq, swym wish, revenuehunt. At least 2 letters or digits. Example: stoq. |
category |
Category | No | One of 28 values (see Data model). |
limit |
integer | No | 1–500. Default 100. |
cursor |
string | No | pagination.nextCursor from the previous page, unchanged, within 24 hours, with the same key's account and the same filters. |
Response
200. The example's stores are fictional.
{
"data": [
{
"slug": "klaviyo",
"name": "Klaviyo",
"category": "email-sms",
"website": "klaviyo.com",
"appStoreUrl": "https://apps.shopify.com/klaviyo-email-marketing",
"iconUrl": "https://cdn.shopify.com/app-store/listing_images/klaviyo/icon.png",
"rating": 4.6,
"reviewCount": 2730
}
],
"pagination": {
"nextCursor": "eyJrIjoiYXBwcyIsInMiOiJrbGF2aXlvIn0",
"hasMore": true
},
"meta": {
"requestId": "6f1c2a9e-4b7d-4e2a-9c51-0d3b8e7f2a14",
"creditsUsed": 0,
"creditsCharged": 0,
"creditsRemaining": 46,
"freeRepulls": 0
}
}
Fields
| Field | Type | Description |
|---|---|---|
data[].slug |
string | Example: klaviyo. |
data[].name |
string | The catalogue's name: our own for apps we curate, else the App Store listing title as written. Example: Klaviyo. |
data[].displayName |
string | What a merchant calls the app, read from its keyword-padded App Store title ("Preorder, Back In Stock ‑ STOQ" is STOQ). A developer's listings that share a brand keep the words that tell them apart (Swym Wishlist Plus). Equal to name until derived. Example: Klaviyo. |
data[].category |
Category | One of 28 values (see Data model). |
data[].kind |
string | shopify-app: an app installed from Shopify. web: a website technology installed outside Shopify, by pasting its tag into the theme or through a tag manager (Google Tag Manager, Meta Pixel, Hotjar). A vendor with both has one entry of each (meta-pixel and meta-facebook-instagram-app). One of shopify-app, web. |
data[].website |
string | null | Example: klaviyo.com. |
data[].appStoreUrl |
string | null | Example: https://apps.shopify.com/klaviyo-email-marketing. |
data[].iconUrl |
string | null | App Store icon (Shopify CDN); append ?width=72&height=72 to resize. |
data[].rating |
number | null | Average App Store rating, 1–5. |
data[].reviewCount |
integer | null | |
data[].brand |
string | null | The vendor merchants know; null until derived. Example: Swym. |
data[].aliases |
string[] | Other names the app goes by: the listing title, former titles, Partner handles, abbreviations in the title (RH). |
Every keyed response also carries meta (requestId, creditsUsed, creditsRemaining, freeRepulls) and the X-Credits-* and X-RateLimit-* headers. See Credits and Rate limits.
Lists page with limit and cursor. See Pagination.
Errors
| Status | Code | Meaning | What to do |
|---|---|---|---|
| 400 | invalid_request |
A parameter or body field is missing or malformed. | Fix the request; message names the field. Do not retry unchanged. |
| 400 | invalid_cursor |
The cursor is not one this endpoint issued (edited, truncated, or from another list). |
Pass pagination.nextCursor back unchanged, or start again without a cursor. |
| 401 | missing_api_key |
No key was sent. | Send Authorization: Bearer sfs_… or X-API-Key: sfs_…. |
| 401 | invalid_api_key |
The key is not one we issued. | Check for truncation or whitespace; keys are sfs_ plus 32 letters and digits. |
| 401 | api_key_revoked |
The key was revoked. | Make a new key at installgraph.com/account. |
| 403 | insufficient_scope |
The key lacks this endpoint's scope. | Use a key with the scope the endpoint lists (GET /v1/usage shows yours). |
| 403 | api_key_suspended |
The key is suspended. | Talk to us, quoting requestId. |
| 429 | rate_limited |
Too many requests this minute. | Wait Retry-After seconds, then retry. |
All codes: Errors.