← Back to map
PUBLIC SUPERMARKET ACCOUNTABILITY

Methodology and sources

What this map shows

Every retail food store licensed to operate in New York City's five counties (Manhattan, Bronx, Brooklyn, Queens, Staten Island), plotted at the address each operator filed with the State. Stores are sized and colored by reported square footage so a viewer can see at a glance where full-service supermarkets exist and where the only options are corner stores or smaller specialty shops.

Source data

DatasetProviderUsed for
Retail Food Stores (resource 9a8c-vfzj)NY State Department of Agriculture and Markets, via data.ny.govStore name, address, latitude/longitude, square footage, establishment type
2020 Decennial Census borough totalsU.S. Census BureauComputing supermarkets per 100,000 residents
OpenStreetMap (Overpass API)OSM contributors, ODbL licenseCross-check against the state file. OSM stores tagged shop=supermarket that aren't in the state file are flagged as "OSM-only (likely new opening)" — for example, the Lidl at 120 Fifth Avenue in Brooklyn
La Marqueta site locationNYC Mayor's Office, April 2026 announcementMarker for the first announced public supermarket site

Why not Google Maps?

Google Maps has cleaner business categories than the state license file (it tags supermarkets as supermarket, pharmacies as pharmacy, and so on) and updates more frequently. We do not use it for two reasons. First, Google Maps Platform terms of service prohibit storing or redistributing Place content (name, address, category) for more than 30 days outside a Google-rendered map, which would make a public, downloadable, methodology-transparent map like this one impossible. Second, OpenStreetMap offers comparable category data under an open license (ODbL) that explicitly permits redistribution, and its NYC supermarket coverage is strong — including new openings the state file misses.

How stores were classified

The NY State retail food store license is a single license that covers any retailer selling packaged food: a corner bodega, a Whole Foods, a brewery taproom, a Walgreens, and a wholesale Restaurant Depot all hold the same license. Square footage alone is therefore not enough to identify supermarkets — a 20,000-square-foot Walgreens is not a grocery store, and a 7,000-square-foot Threes Brewing is not either.

To approximate "supermarket," we apply a name-keyword filter that excludes obvious non-grocery establishments. The filter excludes any store whose dba_name matches patterns like:

The complete pattern list is in collectors/nyc_food_stores.py. Stores that match are reclassified as "Other licensed food retailer." The name filter is run against the operator's dba_name AND legal entity_name, since some operators file an innocuous DBA but the entity name reveals the category (e.g., "FINBACK BROOKLYN" / "FINBACK BROOKLYN LLC").

Name patterns alone are not enough — an operator can name a brewery anything. So we also pull every NYC OSM feature carrying a disqualifying tag (craft=brewery|distillery|winery, amenity=bar|restaurant|fast_food|cafe|pharmacy|fuel, shop=alcohol|bakery|tobacco|chemist, etc.) and override is_supermarket=False for any state-file store within 25 meters of one. This pass alone reclassifies about 3,000 NYC stores that the name filter missed — including bars, restaurants, cafes, bakeries, and breweries with neutral business names. The categorization-by-OSM-tag approach is not perfect either, but it is dramatically more reliable than name keywords. The OSM override category is recorded on each store's popup (e.g., "Reclassified by OSM tag: craft=brewery").

Stores that pass the name filter are bucketed by reported square footage:

Throughout the map, "full supermarket" means a store that passes the name filter and is at least 5,000 square feet.

ZIP-level density layer

The density view renders a choropleth across NYC's 178 Modified ZIP Code Tabulation Areas (MODZCTAs) published by the NYC Department of Health and Mental Hygiene. Each polygon is colored by full supermarkets per 10,000 residents, using the population estimates that come with the MODZCTA file. Stores are matched to a MODZCTA via the operator-filed ZIP. About 50 stores have a ZIP that does not map to any MODZCTA and are dropped from the density view; they remain in the points view.

What the map does not show

Known limitations

How to reproduce this

Three collector scripts live in the project repository under collectors/:

None require API keys. Run them in order. Outputs land in data/processed/.

The OSM contribution is licensed ODbL: © OpenStreetMap contributors.

Why this exists

In April 2026 Mayor Mamdani announced that New York City will open one publicly owned supermarket in each borough, beginning with a 9,000-square-foot store at La Marqueta in East Harlem. The stated goal is to lower grocery prices in underserved neighborhoods by removing the rent and capital costs that strain private operators. Whether the chosen sites are in fact in supermarket-poor areas, and whether prices in those neighborhoods actually move once the stores open, are questions that require a public baseline of where supermarkets are today. This map is that baseline. It will be re-pulled monthly so the historical record stays current.

Contact

Questions or corrections: open an issue on the project repository, or email the project maintainer.

← Back to map