Dominos API endpoint
Returns one Domino's US store's full build-your-own customization catalog, grouped by product category (Domino's own names, e.g. "BuildYourOwnDomino" for pizza, "GSalad" for garden salads): every selectable size, crust/flavor style, topping, and side, each with its own code, name, description, dietary/placement flags (e.g. Meat, Vege, Sauce, WholeOnly), and any other attributes Domino's attaches (e.g. ExclusiveGroup for mutually-exclusive options). Also returns cooking instructions (bake level, cut style, seasoning), grouped. Store ids come from GET /dominos/store-locator. An unknown store id returns 404.
/dominos/customizationQuery parameters:
store_id (required) — Domino's store id, from /api/v1/dominos/store-locator.Response includes store_id, groups[], cooking_instructions[], count, source_url, and fetched_at.
groups[] is sorted by category (Domino's own internal product-group name, e.g. BuildYourOwnDomino for pizza, GSalad for garden salads, Pasta, Bread, Wings, Sandwich, Dessert, Drinks). Each group has category and any of sizes[], flavors[], toppings[], sides[] that apply to that category (each omitted if the category has none). Each option in those lists has:
code, name, descriptionflags[] — boolean-true classification tags Domino's attaches, e.g. Meat, Vege, NonMeat, Sauce, WholeOnly, Sideattributes — any other, string-valued tag Domino's attaches, e.g. ExclusiveGroup (options that mutually exclude each other, such as competing sauces), AllowedSeasonings, AllowedCookingInstructionscooking_instructions[] is sorted by code, each with code, name, and group (Domino's own instruction group, e.g. BAKE, CUT, SEASONING).
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| category | 10 | “Bread” and 9 other values |
| sizes | 7 | median 3 entries |
| toppings | 6 | median 5 entries |
| sides | 4 | median 3 entries |
| flavors | 4 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| store_id | string | Yes | Domino's store id, from /dominos/store-locator | 4336 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/dominos/customization?store_id=4336" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_id": "4336",
"groups": [
{
"category": "BuildYourOwnDomino",
"sizes": [
{
"code": "PERS",
"name": "Personal",
"description": "10\" x 4\""
}
],
"flavors": [
{
"code": "HANDTOSS",
"name": "Hand Tossed",
"description": "Garlic-seasoned crust with a rich, buttery taste.",
"attributes": {
"AllowedSeasonings": "GOBH:NoGOB",
"DefaultSeasonings": "GOBH"
}
}
],
"toppings": [
{
"code": "K",
"name": "Bacon",
"flags": [
"Meat"
]
}
]
}
],
"cooking_instructions": [
{
"code": "PIECT",
"name": "Pie Cut",
"group": "CUT"
},
{
"code": "WD",
"name": "Well Done",
"group": "BAKE"
}
],
"count": 142,
"source_url": "https://order.dominos.com/power/store/4336/menu?lang=en&structured=true",
"fetched_at": "2026-09-02T09:40:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/dominos.customizationResponseDoc
| 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 | dominos.CustomizationResponse | No | ||||
| data.cooking_instructions | array | No | CookingInstructions is sorted by code, independent of Groups. | |||
| data.cooking_instructions[].code | string | No | PIECT | |||
| data.cooking_instructions[].group | string | No | CUT | |||
| data.cooking_instructions[].name | string | No | Pie Cut | |||
| data.count | integer | No | 142 | Count is the total number of options across every group's sizes, flavors, toppings, and sides (cooking instructions are not counted). | ||
| data.fetched_at | string | No | ||||
| data.groups | array | No | ||||
| data.groups[].category | string | No | BuildYourOwnDomino | |||
| data.groups[].flavors | array | No | ||||
| data.groups[].flavors[].attributes | object | No | ||||
| data.groups[].flavors[].code | string | No | K | |||
| data.groups[].flavors[].description | string | No | ||||
| data.groups[].flavors[].flags | array | No | Meat | |||
| data.groups[].flavors[].name | string | No | Bacon | |||
| data.groups[].sides | array | No | ||||
| data.groups[].sides[].attributes | object | No | ||||
| data.groups[].sides[].code | string | No | K | |||
| data.groups[].sides[].description | string | No | ||||
| data.groups[].sides[].flags | array | No | Meat | |||
| data.groups[].sides[].name | string | No | Bacon | |||
| data.groups[].sizes | array | No | ||||
| data.groups[].sizes[].attributes | object | No | ||||
| data.groups[].sizes[].code | string | No | K | |||
| data.groups[].sizes[].description | string | No | ||||
| data.groups[].sizes[].flags | array | No | Meat | |||
| data.groups[].sizes[].name | string | No | Bacon | |||
| data.groups[].toppings | array | No | ||||
| data.groups[].toppings[].attributes | object | No | ||||
| data.groups[].toppings[].code | string | No | K | |||
| data.groups[].toppings[].description | string | No | ||||
| data.groups[].toppings[].flags | array | No | Meat | |||
| data.groups[].toppings[].name | string | No | Bacon | |||
| data.source_url | string | No | ||||
| data.store_id | string | No | 4336 | |||
| 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 |
| 404 | Not Found | #/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/dominos/customization?store_id=4336" \
-H "x-api-key: $CRAWLORA_API_KEY"