Methodology & sources

How the New York City vice map is built. Back to the map.

This map combines three official, regulator-maintained license rolls into a single view. Every dot is a current license held by a business at a specific address in the five boroughs. Nothing on the map is sourced from third-party directories, scraped review sites, or anonymous tips.

What is included

CategorySourceFilterGeocoding
Liquor stores New York State Liquor Authority — Current Liquor Authority Active Licenses on the Open Data NY portal. description IN ('Liquor Store', 'Wine Store') and the premises county is one of the five boroughs. These are off-premises (package store) licenses only — bars, restaurants, and grocery beer licenses are not included. Under New York law, off-premises liquor stores cannot legally sell beer. Latitude and longitude come from the dataset's built-in georeference field.
Beer (groceries, delis, drug stores) New York State Liquor Authority — same dataset as liquor stores. description IN ('Grocery Store', 'Drug Store') and the premises county is one of the five boroughs. These are off-premises beer licenses, the universe of bodegas, delis, supermarkets, and drug stores authorized to sell beer (and, with a separate endorsement, wine). This category is hidden by default on the map because it is the largest single layer. Built-in georeference field.
Legal cannabis dispensaries New York State Office of Cannabis Management — Current OCM Licenses. Active adult-use retail dispensary licenses, conditional adult-use retail dispensary licenses, registered organization dispensaries, and adult-use microbusinesses with retail activity authorized. License status must be Active and the county must be one of the five boroughs. OCM does not publish coordinates. Addresses are geocoded with the New York City Department of City Planning's GeoSearch API. Records that fail to geocode are kept in the downloadable CSV but excluded from the map.
Tobacco and e-cigarette retailers New York City Department of Consumer and Worker Protection — Legally Operating Businesses. business_category IN ('Tobacco Retail Dealer', 'Electronic Cigarette Dealer') and license status is Active or Ready for Renewal. Licenses are deduplicated by address: a single storefront that holds both a tobacco and an e-cigarette license appears as one dot with subcategory "Tobacco + e-cigarette". Latitude and longitude come from the dataset's built-in coordinate fields.

Refresh schedule

The data is rebuilt automatically once a week from the original sources. The footer of the map shows the date of the most recent refresh. The full build script is in this project's GitHub repository.

What is not included

Limitations

Reproducing this

The full build pipeline is a single Python script with no dependencies beyond the standard library. It pulls each source via Socrata's open API, filters and normalizes the records, geocodes the cannabis addresses against GeoSearch with a local cache, and writes a merged GeoJSON, a CSV, and this metadata file. See scripts/build_data.py in the GitHub repository.

Downloads

← Back to the map