NYC displacement data, as JSON
Everything the site shows is available as a free read-only API. No key, no signup. The data comes from NYC public records (ACRIS deeds, DOB permits, marshal evictions, HPD violations, 311 complaints) and refreshes nightly. If you publish something built on it, credit PulseCities (pulsecities.com).
Quick start
# The current citywide picture: top-risk list, live counts, feed freshness
curl https://pulsecities.com/api/stats
Ground rules
- Base URL is
https://pulsecities.com/api. Every endpoint below isGETand returns JSON. - Rate limit is 120 requests per minute per IP, with a burst of 40 for pages that open several calls at once. A few heavier routes cap lower. Responses carry standard
X-RateLimit-*headers, and a 429 tells you how long to wait inRetry-After. - Data refreshes once a night from city sources. Most responses are cached for an hour; there is nothing to gain from polling faster.
- Check
data_freshnessin/api/statsbefore trusting a window. When an upstream feed pauses (ACRIS does), the field says so. - Attribution: CC BY 4.0. Name PulseCities and link pulsecities.com.
Endpoints
Citywide snapshot: recent LLC transfer and eviction counts, the current top-risk neighborhoods, and per-source freshness watermarks.
llc_transfers_recent · evictions_30d · top_risk_list[] rank, zip_code, name, borough, score, dominant_signal, signal_counts · data_freshness per source: through, days_stale, stale
GeoJSON FeatureCollection of every NYC ZIP neighborhood with its current composite score. This is the layer the map renders.
features[].properties zip_code, name, borough, score · features[].geometry polygon
One neighborhood in depth: composite score plus the per-signal breakdown, raw counts, and a short written summary.
curl https://pulsecities.com/api/neighborhoods/11216/score
score 0 to 100 · signal_breakdown each signal normalized 0 to 100 · signal_raw_counts · summary_text
Daily composite score snapshots for a ZIP, oldest first. Good for trend lines.
[] date, score
The most active LLC operator networks on record, by acquisitions. Lenders, GSEs, and government entities are classified out.
[] operator_root, total_acquisitions, llc_count
Citywide renovation-flip feed: an LLC takes a building by deed, then files an A1/A2 renovation permit on the same lot within 60 days. One year of lookback, newest first.
count · flips[] bbl, address, zip_code, neighborhood, buyer, doc_amount, transfer_date, permit_date, days_between
Concentrated-buying clusters: one buyer taking three or more buildings in one ZIP within 90 days.
count · clusters[] buyer, zip_code, neighborhood, building_count, span_days, total_amount, properties[]
The featured arc of the newest human-reviewed eviction-flip edition: eviction, LLC purchase, resale, with ACRIS document IDs. Returns nulls until an edition is approved.
week · arc bbl, address, eviction_date, buy_date, buy_amt, buyer, sell_date, sell_amt, gain_pct, buy_doc, sell_doc
Connect an AI assistant
PulseCities also runs an MCP server, so an AI assistant can look a building up and answer from the record instead of from memory. Add this address as a custom connector in Claude, ChatGPT or any other assistant that supports MCP. There is no key and no account.
https://pulsecities.com/api/mcp
Then ask it something like: who bought 4575 Furman Avenue in the Bronx, and has anyone been evicted there?
find_buildingturns a street address into the building's tax lot number (BBL) and its page here.get_buildingreturns one building's sales, executed evictions and rent-stabilized units by year. Private individuals are never named.find_ownerlists the buildings tied to an operator PulseCities tracks.
All three tools are read-only. The server speaks MCP 2026-07-28 and the handshake versions 2025-03-26 through 2025-11-25 over Streamable HTTP, and the rate limit above applies.
Partner keys
The public tier above is all you need to read the data. Keys exist for partners
(newsroom data teams, researchers) who want identified access and usage visibility:
send the key as an X-API-Key header and your traffic is tracked under
your name instead of an anonymous IP. An invalid key fails with a 401 rather than
silently falling back to public access.
Want one, or need more than the public rate limit? Email nycdisplacement@gmail.com with a line about what you're building.
Terms
- All data is derived from NYC public records. Scores are indicators built from those records, not predictions about any tenant or building. Read the methodology before drawing conclusions.
- Provided as is, no uptime guarantee. The status page shows feed freshness in real time.
- Attribution required for published work: PulseCities, linked to pulsecities.com (CC BY 4.0).
- Don't hammer the API; sustained abuse gets an IP blocked.