Skip to content
rbsolutions.works
← all work
Real estate / Public records /end-to-end in under 10 minutes / 2026-04-20

NYC Property Data — 5-borough PLUTO pull

Sample deliverable

1,300 lots · $142.8B assessed
REPORT.md5 borough CSVs5 per-borough summaries

What was asked

Give a real-estate operator a concrete, current picture of the highest-value tax lots in New York City, broken out by borough. No enrichment vendors, no scraping tricks — only legal, no-auth public data that anyone can verify.

What the system did

The pipeline hit the NYC Open Data PLUTO dataset (data.cityofnewyork.us Socrata API — Primary Land Use Tax Lot Output, ~860,000 NYC tax lots). It pulled 1,300 records across five boroughs:

  • Manhattan: top 500 by total assessed value
  • Brooklyn / Queens / Bronx / Staten Island: top 200 each

For every lot it normalized 20 PLUTO columns — BBL (Borough-Block-Lot), address, zipcode, building class, land use, owner, lot and building area, year built, floor count, residential + total units, assessed land, assessed total, primary zoning district, lot dimensions, and latitude/longitude.

All 1,300 rows were then ingested into Postgres as scraped_products rows under marketplace='nyc_pluto' — the raw 20-column JSON rides in the raw_json JSONB column, so any PLUTO field is queryable:

SELECT raw_json->>'address', (raw_json->>'assesstot')::bigint AS usd
FROM scraped_products
WHERE marketplace = 'nyc_pluto'
  AND category = 'Manhattan'
  AND raw_json->>'bldgclass' LIKE 'O%'
ORDER BY usd DESC
LIMIT 20;

Headline numbers

  • 1,300 tax lots across 5 boroughs
  • $142.8B total assessed value
  • 214,757 residential units represented
  • Manhattan outweighs every other borough combined — $92.5B across the top 500 MN lots vs $50.3B across the other four boroughs’ top 200 each
  • Queens has the highest average top-lot assessment at $277.7M — skewed by a single $8.5B outlier (likely LaGuardia / JFK airport land)

What a pilot engagement gets on top of this

This sample stops at the raw data + a written summary. A real retainer adds:

  1. Target-list filtering — e.g. “ground-floor commercial lots in Downtown Brooklyn built before 1950, owned by LLCs, zoned C6-1, with at least 8 floors” — all expressible against raw_json + the typed columns.
  2. Owner contact enrichment — resolving LLC owner names to mailing addresses + principal contacts via separate public-record sources.
  3. Monthly refresh — scheduled pulls against PLUTO + diff reports when lots change hands or assessments shift.
  4. Slide/PDF export — the REPORT.md can render to PDF or Google Slides for client-facing decks.

Caveats

  • PLUTO is updated on a ~quarterly cadence by NYC DCP. The “generated on” timestamp reflects the pull date, not the assessment effective date.
  • assesstot is the NYC Department of Finance’s assessed value for tax purposes — it is not market value. On commercial lots it tends to sit 30–60% below market.
  • Rows with a $0 assesstot (tax-exempt lots, some government property) are excluded from this pull — the $order=assesstot DESC sort pushes them to the end.
sample data — live preview
properties_mn.csv
download ↓
bbl address borough zipcode bldgclass landuse ownername lotarea bldgarea yearbuilt numfloors unitsres unitstotal assessland assesstot zonedist1 lotfront lotdepth latitude longitude
1002710036.00000000MN10002R7-240.7128861-73.989582
1021050450.00000000MN40.8281693-73.9338699
1019000001.00000000MNR840.8173739-73.9673591
1016600035.00000000MN10029R7A40.7940307-73.9412059
1001760015.00000000MN10013C6-2A40.7177972-74.0071063
1008170036.00000000MN10011C6-2M40.7371541-73.9935067
1005850019.00000000MN10014R640.7321351-74.0058106
1005950060.00000000MN10013C6-2A40.7253358-74.0096022
1006060066.00000000MN10011C1-640.7351226-73.9987964
1002830052.00000000MN10002C6-240.7140788-73.9921745
1005500015.00000000MN10003R640.7315229-73.9958552
1021560044.00000000MN10033R7-240.8512273-73.9295965
1006060079.00000000MN10011R640.7350376-73.9993277
1000110028.00000000MN10004C5-540.7042146-74.0121438
1008820041.00000000MN10016R8B40.7412643-73.9820684
1016010040.00000000MN10026R7-240.8020827-73.9471955
1008910053.00000000MN10016R8B40.7470881-73.9779533
1012770068.00000000MN10017C5-340.7537257-73.979969
1003410030.00000000MN10002R840.7159222-73.9853909
1015830024.00000000MN10128R8B40.7754346-73.9450679
showing 20 of 500 rows
Showing Manhattan only. Full bundle has all 5 borough CSVs + REPORT.md.
at a glance — what the data tells a buyer
Total assessed value by borough
Manhattan's top-500 lots ($92.5B assessed) outweigh the other four boroughs' top-200 combined. A pilot target list filters by zoning, owner type, year built, or unit count — all queryable against the PLUTO raw JSON.
Top 10 Manhattan lots by assessed value
Sample of what the first page of a real target list looks like — 20 PLUTO fields are queryable behind each row (address, BBL, owner, building class, lot/building area, year built, floors, units, land + total assessment, zoning, lat/long).
client-facing slide deck
NYC Property Data — 5-borough PLUTO pull Open in Google Slides →
downloads — full bundle

Full write-up: https://pub-4cc0fb90bf0345f9a637159679086a33.r2.dev/samples/2026-04-20/nyc-property/REPORT.md

want the same outcome?
Scope a pilot or request a retainer.