GET/subway/available-timesapiKey1 credit/request
Returns one Subway store's forward-looking pickup schedule -- every time slot the store is currently accepting orders for, as RFC3339 UTC instants, earliest first. Slots begin at the store's next orderable time (roughly half an hour out, not immediately) and run through closing, so the list reflects real remaining capacity for today rather than the store's advertised opening hours. Store IDs come from a GET /subway/store or GET /subway/nearby result's store_id field. A store that is closed or past its last slot for the day returns an empty slots array, which is a valid answer rather than an error. interval_minutes reports the spacing between consecutive slots as measured from the response itself.
Required: store_id. Optional: limit.
Sampled 14 Oct 2026: 6 fields returned with a value. In the sample: earliest_slot: 2026-10-13; count: 20; slots: 20 entries; interval_minutes: 5; latest_slot: 2026-10-14.
Open in Playground
GET/subway/combosapiKey1 credit/request
Returns one Subway store's bundle and combo categories with the price ranges they advertise -- min_bundled_price (cheapest as a bundle) and a_la_carte_price (cheapest bought separately). Unlike GET /subway/menu, which is US-only, this works in other markets: confirmed against US, GB and DE stores. It is NOT an itemised menu -- the upstream route behind it carries categories and prices only, with no individual products, no nutrition panels and no allergen disclosures. Use GET /subway/menu for a full itemised menu where it is available. A store with no bundles configured returns an empty categories array, which is a valid answer rather than an error. Store IDs come from a GET /subway/store or GET /subway/nearby result's store_id field.
Required: store_id. Optional: culture.
Sampled 14 Oct 2026: 6 items. Filled in every item: id, name, sort_order, min_bundled_price, a_la_carte_price. Not in every item: parent_id (5). In the sample: sort_order: 1 to 30, median 3; name: “Sub Meal Deal (App)” and 5 other values; min_bundled_price: 3.79 to 8.19, median 7.29; a_la_carte_price: 4.98 to 19.77, median 15.67.
Open in Playground
GET/subway/menuapiKey1 credit/request
Returns one Subway store's complete menu: every category, every product, and for each purchasable size (Footlong, 6-inch, etc.) its price, full nutrition panel (calories, fat, sodium, protein and more) and allergen disclosures. Store IDs come from a GET /subway/store result's store_id field. This endpoint currently covers US stores only: the menu is not available for non-US stores, which return 404 -- see GET /subway/combos for the bundle/combo categories that are available in other markets. Categories carry is_main_category: true for human-browsable menu sections (Sandwiches, Drinks, Salads, ...) and false for Subway's own internal build/customization groupings, which are included for completeness but are not meant to be shown as menu sections on their own.
Required: store_id.
Sampled 14 Oct 2026: 94 items. Filled in every item: id, name, slug, is_main_category. Not in every item: items (81), description (16). In the sample: name: “Snacks, Sides & Desserts” and 39 other values; is_main_category: true in 21 of 94; items: median 1 entry; description: “Sweet. Spicy. So Swicy. Don’t miss the limited-time subs an…” and 15 other values.
Open in Playground
GET/subway/nearbyapiKey1 credit/request
Returns Subway stores nearest first to a coordinate or a free-text address/city/ZIP, with live open/closed status, payment methods, catering link, and feature flags. This is the proximity search GET /subway/sitemap cannot do directly -- the sitemap enumerates the whole world for bulk scraping, this answers "what is near this point" with distance and live attributes the sitemap/store locator does not carry. Each store's store_id is the same value GET /subway/menu takes, and can be passed back here as store_id to re-read one store's live attributes directly.
Optional: latitude, longitude, query, store_id, limit, offset, features.
Sampled 14 Oct 2026: 10 items. Filled in every item: store_id, address, phone_number, latitude, longitude, timezone, is_open_now, can_take_online_orders and 3 more. Not in every item: distance_miles (9), catering_url (8). In the sample: distance_miles: 0.2 to 0.7, median 0.4; catering_url: ezcater.com; is_open_now: true in 10 of 10; features: median 4 entries; can_take_online_orders: true in 10 of 10; payment_methods: median 9 entries; hours: median 7 entries.
Open in Playground
GET/subway/sitemapapiKey2 credits/request
Returns one page of Subway's sitemap-declared store index -- 22,700+ URLs across 2 shards at time of writing, covering a country/region/city/street tree worldwide. This is the cheapest way to enumerate Subway locations. Each entry carries its URL, the locator path GET /subway/store takes, and a depth: the deepest entries are store pages, shallower ones are country, region and city directory pages listed in the same sitemap. 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.
Sampled 14 Oct 2026: 40 items. Filled in every item: url, path, depth. In the sample: depth: 1 to 5, median 3; path: “austria” and 39 other values; url: restaurants.subway.com.
Open in Playground
GET/subway/storeapiKey1 credit/request
Returns one Subway store's detail: address, coordinates, phone (display and E.164), opening hours, and the locator's own entity profile -- IANA timezone, Google Place ID and CID for joining to Google Maps data, franchise number, price range, published services and meal types, and explicit online-ordering/catering/drive-through flags. Boolean flags are omitted entirely when the locator does not publish them, so an absent flag is not a false one. open reflects the location's published status (a store flagged closed long-term), which is distinct from whether it is currently within its opening hours. store_id is the value GET /subway/menu and GET /subway/available-times take. Paths come from a GET /subway/sitemap entry.
Required: path.
Sampled 14 Oct 2026: 7 items. Filled in every item: day_of_week, closed, opens, closes, segments. In the sample: opens: 08:00 (5), 09:00 (2); day_of_week: “Monday” and 6 other values; closed: true in 0 of 7; segments: median 1 entry; closes: 23:30 (4), 02:30 (2), 23:00 (1).
Open in Playground