GET/jimmy-johns/menuapiKey1 credit/request
Returns one Jimmy John's restaurant's full menu as a category tree: every category and its products, with name, description, calorie range, base cost and image. restaurant_id comes from GET /jimmy-johns/nearby. Many sandwiches price entirely through a size selection rather than a base cost, so cost is commonly 0 for those items -- see GET /jimmy-johns/modifiers for the real per-size price.
Required: restaurant_id.
Sampled 14 Oct 2026: 20 items. Filled in every item: category_id, name, products. In the sample: name: “What’s New” and 16 other values; products: median 6 entries.
Open in Playground
GET/jimmy-johns/modifiersapiKey1 credit/request
Returns one menu product's full customization tree: size, bread, and per-ingredient choices (extra/regular/light/none), each with its real price and calorie delta. Groups nest -- picking a size choice can reveal a bread group, which can reveal one group per ingredient -- so a size step, a bread step, and every "Customize Sandwich" ingredient all live in one recursive tree. product_id comes from GET /jimmy-johns/menu.
Required: product_id.
Sampled 14 Oct 2026: 1 item. Filled in every item: group_id, chain_modifier_id, name, mandatory, choices. In the sample: name: “Make it a Combo!”; mandatory: true in 1 of 1; choices: median 2 entries.
Open in Playground
GET/jimmy-johns/nearbyapiKey2 credits/request
Returns Jimmy John's restaurants within a radius of a coordinate, nearest first, using Jimmy John's own Olo-backed ordering API (a separate host from the locator this family's sitemap and store endpoints read). Each result carries restaurant_id -- pass it to GET /jimmy-johns/menu for that restaurant's full menu. The upstream's own radius parameter does not narrow its result set, so distance filtering and sorting happen here.
Required: latitude, longitude. Optional: radius, limit.
Sampled 14 Oct 2026: 10 items. Filled in every item: restaurant_id, slug, name, address, phone_number, latitude, longitude, distance_miles and 5 more. In the sample: distance_miles: 0.46 to 5.81, median 2.4; name: “JJ2726” and 9 other values; order_url: online.jimmyjohns.com; is_open: true in 10 of 10; accepts_delivery: true in 10 of 10; accepts_pickup: true in 10 of 10.
Open in Playground
GET/jimmy-johns/sitemapapiKey2 credits/request
Returns one page of Jimmy John's sitemap-declared store index -- 9,700+ URLs at time of writing. Jimmy John's publishes three page variants per store (sandwiches, delivery, catering) and all three appear in the sitemap, so each entry carries a kind and the store number they share; filter with the kind parameter to enumerate one variant per restaurant. `sandwiches` is the canonical variant. A page past the end returns an empty list rather than an error, so a caller can walk to exhaustion.
Optional: shard, page, page_size, kind (3 allowed values: sandwiches, delivery, catering).
Sampled 14 Oct 2026: 40 items. Filled in every item: url, path, kind, store_number. In the sample: store_number: 150 to 9,016, median 1,692; path: “in/columbus/sandwiches-1414.html” and 39 other values; url: locations.jimmyjohns.com.
Open in Playground
GET/jimmy-johns/storeapiKey1 credit/request
Returns one Jimmy John's store: name, postal address, phone, coordinates, cuisine description and the published week of opening hours. Store paths come from GET /jimmy-johns/sitemap. Note Jimmy John's main site is behind a bot challenge that serves a page with HTTP 200, so this family reads the separate locator subdomain instead. For menu data, see GET /jimmy-johns/nearby and GET /jimmy-johns/menu, which read a separate ordering API.
Required: path.
Sampled 14 Oct 2026: 7 items. Filled in every item: day_of_week, opens, closes. In the sample: day_of_week: “Monday” and 6 other values.
Open in Playground