How to Use NYC PLUTO Data for Site Analysis (Without GIS)
If you need a building-age map or a land-use map of a New York block, the data already exists and it is free. MapPLUTO — the Department of City Planning's tax-lot database — carries the year built and the land use of every lot in the five boroughs. As of this writing it holds 856,687 lots, of which 817,713 have a year built.
Most guides to PLUTO assume you will download a 2 GB shapefile and open it in ArcGIS or QGIS. You do not have to. The city publishes the same data as a query API, and you can get exactly the block you need from a browser address bar, a spreadsheet, or ten lines of Python.
This page is written from the inside: we use MapPLUTO in production to draw the Building age and Building use panels on sitedia, and the traps below are ones we actually hit — each cost us real coverage before we found it.
The two fields that matter
PLUTO has more than eighty columns. For site analysis you almost always want just two.
| Field | What it is |
|---|---|
YearBuilt |
Year the original structure was completed. 0 means unknown —
38,512 lots are like this, mostly vacant land and unimproved parcels.
There is also YearAlter1 / YearAlter2 for major
alterations, which is what you want if you are mapping renovation rather
than construction. |
LandUse |
A two-character code, 01–11. This is the field
behind every land-use map of New York you have ever seen. |
The land-use codes, with how many lots carry each one citywide:
| Code | Meaning | Lots |
|---|---|---|
| 01 | One & Two Family Buildings | 566,772 |
| 02 | Multi-Family Walk-Up | 131,261 |
| 03 | Multi-Family Elevator | 13,105 |
| 04 | Mixed Residential & Commercial | 56,193 |
| 05 | Commercial & Office | 21,104 |
| 06 | Industrial & Manufacturing | 9,293 |
| 07 | Transportation & Utility | 6,042 |
| 08 | Public Facilities & Institutions | 12,023 |
| 09 | Open Space & Outdoor Recreation | 4,730 |
| 10 | Parking Facilities | 9,112 |
| 11 | Vacant Land | 24,240 |
Notice how lopsided that is. Two codes cover 81% of the city's lots. If you color a map by all eleven categories you will get a drawing that is 80% one hue — which is why most readable New York land-use maps group them into four or five buckets first.
Getting the data without GIS software
MapPLUTO is published as an ArcGIS feature service. A feature service answers plain HTTP requests, so the address bar is a perfectly good client.
The endpoint is:
https://services5.arcgis.com/GfwWNkhOj9bNBqoJ/arcgis/rest/services/MAPPLUTO/FeatureServer/0/query
Ask it for the lots inside a bounding box, and only for the two fields you care about:
?where=1=1
&geometry=-73.99,40.750,-73.975,40.760
&geometryType=esriGeometryEnvelope
&inSR=4326
&spatialRel=esriSpatialRelIntersects
&outFields=YearBuilt,LandUse
&returnGeometry=true
&outSR=4326
&f=geojson
That returns GeoJSON — lot polygons with a year and a use code attached, in plain latitude/longitude. Every drawing tool that reads GeoJSON will take it directly, and so will Python, R or a spreadsheet with a JSON importer.
Two immediately useful variants:
- Swap
f=geojsonforf=htmlto browse the result as a table before you commit to a query. - Add
returnCountOnly=trueto ask "how many lots are in here?" without downloading any of them. This is the cheapest way to sanity-check a bounding box. - Use
wherefor attribute filters —YearBuilt > 0 AND YearBuilt < 1900gives you the pre-1900 fabric of a neighborhood in one request.
Four traps that silently cost you data
None of these throw an error. They just quietly give you less than you asked for, which is worse.
1. You are only getting the first 2,000 lots
The service caps a response at 2,000 records. It tells you when it has more — but for this service the flag is not at the top level of the response. It is nested:
{ "type": "FeatureCollection",
"properties": { "exceededTransferLimit": true },
"features": [ … 2000 items … ] }
Code that checks response.exceededTransferLimit sees
undefined, concludes there is nothing more, and stops. We lost whole
neighborhoods this way before noticing — dense areas in the Bronx and Staten
Island were being truncated at exactly 2,000 lots. Page with
resultOffset until the nested flag goes away, and add
orderByFields=OBJECTID so the pages are stable.
2. Simplifying the geometry throws away narrow lots
maxAllowableOffset shrinks the response by generalising polygon
outlines, and it is tempting because parcel geometry is heavy. But New York row lots are about 20 ft wide. Generalise at 30 ft and the outline distorts enough that
points which should sit inside the lot fall outside it.
We measured this on a comparable downtown grid: matching went from 61% to 77%, and "not inside any lot" fell from 23% to 4%, purely by tightening the tolerance from about 30 ft to about 7 ft. At 7 ft the result was identical to the unsimplified geometry while carrying roughly half the vertices. If you simplify at all, stay well under the width of the narrowest lot you care about.
3. One lot is not one building
PLUTO is a record of tax lots, not buildings. 219,458 lots carry more
than one building (NumBldgs > 1) — a house plus a garage, a
campus, a housing development. If you attach the lot's year to one building and
stop, everything else on that lot stays blank. Attach it to every building whose
footprint center falls inside the lot polygon instead.
The reverse also bites: a single building can straddle several lots, and condominium buildings often carry one lot per unit.
4. PLUTO stops at the city line
It covers the five boroughs and nothing else. Draw a bounding box around Lower Manhattan and you will pull in Jersey City and Hoboken footprints with no PLUTO record at all — they are not missing data, they are a different jurisdiction. New Jersey and Nassau County publish their own parcel data, in their own schemas. Label those buildings "unknown" rather than letting them read as a gap in New York's records.
What good coverage actually looks like
Once the four traps are handled, PLUTO is one of the best parcel datasets in the United States. Measured on our own database inside a half-mile circle on Midtown Manhattan, 98.3% of buildings carry a year built and 99.1% carry a land use. Across the five boroughs the figure stays high — DUMBO 93.6%, Long Island City 96.8%, the Bronx 95.8%, Staten Island 96.4%.
New York is unusually generous with this data. Use it.
The shortcut
If what you want is the drawing rather than the dataset, sitedia does exactly this pipeline for you: pick a New York address, and it returns building age and land-use diagrams — plus footprints, heights, green space, transit, terrain and an aerial — as SVG, PNG, DXF or 3D. The PLUTO join described above is what runs underneath, traps and all.
The full list of datasets and their measured coverage is on the data sources page.