Arbys API endpoint
Returns Arby's US menu's top-level categories -- Slow Roasted Beef, Crispy Juicy Chicken, Meals, Sides & Snacks, Beverages, Desserts, Kids Menu and others. Each entry's slug is the value GET /arbys/menu takes. store_id (optional, default 0) selects which pricing snapshot categories' item counts are read from; the default 0 is Arby's own reference catalog and carries no prices at all -- pass a store_id you already know (for example one you have seen on arbys.com after picking a location) to price GET /arbys/menu's items against a specific store. There is no location-lookup endpoint in this family.
/arbys/categoriesQuery parameters:
store_id (optional, default 0) — the store id to read the catalog from. 0 is Arby's own priceless national reference catalog. Pass a real store id (find one with /api/v1/arbys/locations) if you want item_count/is_available reflecting a specific store's catalog rather than the national default.Response includes store_id, display_name, categories[], count, source_url, and fetched_at. Each category has slug, name, image_url, is_available, and item_count.
Category set observed live (2026-09-01, subject to change without notice): slow-roasted-beef, crispy-juicy-chicken, cheesesteaks, meals, meat-3-box, steak-nuggets, sides-snacks, desserts, beverages, kids-menu, value-menu, limited-time, 1-99-sliders, arby-s-classics.
| Field | Filled in, of 13 checked | Values in the sample |
|---|---|---|
| slug | 13 | |
| name | 13 | “Beverages” and 12 other values |
| image_url | 13 | imagedelivery.net and 1 other host |
| is_available | 13 | true in 13 of 13 |
| item_count | 13 | 2 to 31, median 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| store_id | integer | No | Optional. Store id to read the catalog from, default 0 (Arby's priceless national reference catalog). | 0 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/arbys/categories" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_id": 0,
"display_name": "ARB-National",
"categories": [
{
"slug": "slow-roasted-beef",
"name": "Slow Roasted Beef",
"image_url": "https://imagedelivery.net/.../download",
"is_available": true,
"item_count": 7
}
],
"count": 14,
"source_url": "https://api.arbys.com/menu/0",
"fetched_at": "2026-09-01T12:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/arbys.categoriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | arbys.CategoriesResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].image_url | string | No | ||||
| data.categories[].is_available | boolean | No | true | |||
| data.categories[].item_count | integer | No | 7 | |||
| data.categories[].name | string | No | Slow Roasted Beef | |||
| data.categories[].slug | string | No | slow-roasted-beef | |||
| data.count | integer | No | 14 | |||
| data.display_name | string | No | ARB-National | |||
| data.fetched_at | string | No | ||||
| data.source_url | string | No | ||||
| data.store_id | integer | No | 0 | |||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/arbys/categories" \
-H "x-api-key: $CRAWLORA_API_KEY"