Global store enumeration and footprint mapping
Use Subway endpoints to turn global store enumeration and footprint mapping into repeatable API requests with documented inputs and JSON responses.
Turn Subway's own sitemap-declared store index into structured JSON — over 22,700 store URLs worldwide across a country/region/city/street tree, paged in two shards, full per-store detail (address, coordinates, phone, hours), and each store's complete priced menu with full nutrition panels and allergen disclosures per size. Credential-free.
Enumerate Subway's global store index, find stores near a coordinate or address, and get store detail plus per-store priced, nutrition-labeled menus as JSON.
Endpoint families
6
Documented params
22
Examples
6
Live catalog snapshot
Active endpoints
6
Methods
GET
Required params
10
Schema refs
6
{
"platform": "Subway",
"endpoint": "subway-sitemap",
"method": "GET",
"path": "/subway/sitemap",
"auth": "apiKey"
}Use cases
Enumerate Subway's global store index, find stores near a coordinate or address, and get store detail plus per-store priced, nutrition-labeled menus as JSON.
Use Subway endpoints to turn global store enumeration and footprint mapping into repeatable API requests with documented inputs and JSON responses.
Use Subway endpoints to turn menu, pricing, and nutrition monitoring into repeatable API requests with documented inputs and JSON responses.
Use Subway endpoints to turn location coverage research by country and region into repeatable API requests with documented inputs and JSON responses.
Use Subway endpoints to turn store-count benchmarking against competitor chains into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Subway endpoint catalog — 6 endpoints, 22 documented request parameters, and 6 published response schemas — the same catalog Docs and Playground run against.
6 documented Subway endpoints, grouped into 6 request families — Available Times, Combos and Menu, plus 3 more.
22 request parameters are documented across those Subway endpoints, 10 of them required — the full input contract is public before you write any integration code.
6 of the 6 Subway endpoints ship a recorded example response, and 6 carry a documented response schema — you can code against the real JSON before the first request.
Subway endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
6 hosted MCP tools back the Subway endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/subway/available-times
/subway/combos
/subway/menu
/subway/nearby
/subway/sitemap
/subway/store
Endpoint catalog
/subway/sitemapReturns 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, and it is the entry point Subway's own robots.txt declares. 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.
MCP tool subway_sitemap
/subway/nearbyReturns 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.
MCP tool subway_nearby
/subway/storeReturns 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.
MCP tool subway_store
/subway/menuReturns 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 upstream menu route it reads is not served 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.
MCP tool subway_menu
/subway/combosReturns 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.
MCP tool subway_combos
/subway/available-timesReturns 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.
MCP tool subway_available_times
Related APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
How to scrape Subway
Crawlora's Subway endpoints return normalized public Subway store data as JSON with one API key — no Subway account required.
Call /subway/sitemap to page through Subway's own robots.txt-declared store index — over 22,700 URLs across 2 shards at time of writing, covering a country/region/city/street tree worldwide. Each entry carries a depth: the deepest entries are store pages, shallower ones are country, region, and city directory pages in the same sitemap.
A /subway/sitemap page past the end returns an empty list rather than an error, so you can page through shard and page number until the response comes back empty to know you've reached the end of that shard.
Pass a latitude/longitude or a free-text address, city, or ZIP to /subway/nearby for stores nearest first, with live open/closed status, payment methods, a catering link, and feature flags — optionally narrowed to stores having ALL of a set of features (breakfast, remote order, halal, drive-through, catering, curbside, operating). Exactly one search mode is required; page with the opaque next_offset cursor rather than a numeric index.
Pass the path from a deep /subway/sitemap entry to /subway/store for that location's postal address, coordinates, phone, and the full published week of opening hours — passing a country, region, or city directory path instead returns a 404, since those carry no street address.
The itemised menu is a US-only upstream route: non-US stores return a 404 (confirmed against GB, DE and FR stores under every locale variant). /subway/combos is the counterpart that does work in other markets — pass a store_id for that store's bundle and combo categories with the price ranges they advertise, each carrying a cheapest-as-a-bundle price and a cheapest-bought-separately price. Both price fields are omitted when the upstream publishes none, and an absent price is not the same as a price of 0. Set culture for the market's own display names.
Pass the store_id from a /subway/store result to /subway/menu for every category and product, with per-size (Footlong, 6-inch, and more) pricing, a full nutrition panel (calories, fat, sodium, protein, and more), and allergen disclosures. Categories carry is_main_category: true for human-browsable sections like Sandwiches, Drinks, and Salads.
FAQ
Call /subway/sitemap to page through Subway's global store-URL index, pass a deep entry's path to /subway/store for that location's address, coordinates, phone, and hours, then pass its store_id to /subway/menu for the priced, nutrition-labeled menu — all return structured JSON with one API key.
Yes — /subway/nearby takes either a latitude/longitude or a free-text address, city, or ZIP and returns stores nearest first with live open/closed status, payment methods, a catering link, and feature flags. Exactly one search mode is required. /subway/sitemap remains the entry point for bulk enumeration of the whole global tree.
Yes — /subway/menu returns one store's complete menu with per-size pricing, a full nutrition panel (calories, fat, sodium, protein, and more), and allergen disclosures for every product, using the store_id from a /subway/store result. Its coverage is US stores only: the upstream route behind it is not served for non-US stores, which return a 404.
Use /subway/combos. The itemised menu route is US-only and 404s elsewhere, but non-US markets do publish bundle and combo categories with the price ranges they advertise — confirmed against US, GB and DE stores. Each category carries its cheapest bundled price and its cheapest a-la-carte price, and a store with no bundles configured returns an empty list with count 0, which is a valid answer rather than an error. What it cannot give you is individual products, nutrition panels, or allergen disclosures — those exist only on the US menu route.
Over 22,700 URLs at time of writing, across 2 shards — though not every URL is a store page; shallower entries are country, region, and city directory pages in the same index.