Papa John's API endpoint
Returns Papa John's own published nutrition-facts panel for every item in one category -- full pizzas by name, or a single ingredient family (crust, cheese, sauce, toppings). Each item lists every published size/crust variant with serving size and a full nutrition-facts breakdown (calories, fat, cholesterol, sodium, carbohydrate, fiber, sugars, protein). This is Papa John's national reference data, not priced per-store data -- see GET /papajohns/directory for store lookup.
/papajohns/nutritionQuery parameters:
category (required) — one of cheese, crust, desserts,
dipping-sauces, drinks, extras, papa-bowls, papadias, pizzas,
sandwiches, sauce, sides, toppings, wings.An unknown category returns a 400. A nutrient Papa John's does not
publish for a given variant is omitted (zero-valued) rather than reported as
a real zero.
| Field | Filled in, of 35 checked | Values in the sample |
|---|---|---|
| name | 35 | “Cheese Pizza” and 34 other values |
| variants | 35 | median 8 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| category | string | Yes | One of: cheese, crust, desserts, dipping-sauces, drinks, extras, papa-bowls, papadias, pizzas, sandwiches, sauce, sides, toppings, wings | pizzas | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/papajohns/nutrition?category=pizzas" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"category": "pizzas",
"items": [
{
"name": "Cheese Pizza",
"variants": [
{
"label": "Original Crust - Pizza for One",
"serving_size": "1 slice",
"servings": "4 slices per pizza",
"nutrition": {
"calories": 200,
"calories_from_fat": 60,
"total_fat_g": 7,
"cholesterol_mg": 20,
"sodium_mg": 500,
"total_carbohydrate_g": 25,
"dietary_fiber_g": 1,
"sugars_g": 3,
"protein_g": 8
}
}
]
}
],
"count": 35,
"source_url": "https://www.papajohns.com/company/nutritional-details/",
"fetched_at": "2026-09-05T09:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/papajohns.nutritionResponseDoc
| 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 | papajohns.NutritionResponse | No | ||||
| data.category | string | No | pizzas | |||
| data.count | integer | No | 34 | |||
| data.fetched_at | string | No | ||||
| data.items | array | No | ||||
| data.items[].name | string | No | Cheese Pizza | |||
| data.items[].variants | array | No | ||||
| data.items[].variants[].label | string | No | Original Crust - Large | Label combines every column header Papa John's own table used to distinguish this variant (crust type and/or size), joined with " - ". A single-column table (most non-pizza items) yields the lone column header verbatim, e.g. "Regular". | ||
| data.items[].variants[].nutrition | papajohns.NutritionFacts | No | ||||
| data.items[].variants[].nutrition.calories | number | No | 200 | |||
| data.items[].variants[].nutrition.calories_from_fat | number | No | 25 | |||
| data.items[].variants[].nutrition.cholesterol_mg | number | No | ||||
| data.items[].variants[].nutrition.dietary_fiber_g | number | No | 1 | |||
| data.items[].variants[].nutrition.protein_g | number | No | 6 | |||
| data.items[].variants[].nutrition.saturated_fat_g | number | No | 0.5 | |||
| data.items[].variants[].nutrition.sodium_mg | number | No | 360 | |||
| data.items[].variants[].nutrition.sugars_g | number | No | 3 | |||
| data.items[].variants[].nutrition.total_carbohydrate_g | number | No | 36 | |||
| data.items[].variants[].nutrition.total_fat_g | number | No | 3 | |||
| data.items[].variants[].nutrition.trans_fat_g | number | No | ||||
| data.items[].variants[].serving_size | string | No | 1 slice | |||
| data.items[].variants[].servings | string | No | 8 slices per pizza | |||
| data.source_url | string | No | ||||
| 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/papajohns/nutrition?category=pizzas" \
-H "x-api-key: $CRAWLORA_API_KEY"