Agent skill
nyc-dob-permits
Look up DOB permit and job filing history for any NYC building.
Install this agent skill to your Project
npx add-skill https://github.com/AlpacaLabsLLC/skills-for-architects/tree/main/plugins/00-due-diligence/skills/nyc-dob-permits
SKILL.md
/nyc-dob-permits — DOB Permit & Filing History
Look up all DOB permits and job filings for any NYC building across both Legacy BIS and DOB NOW systems. No API key required.
Usage
/nyc-dob-permits 120 Broadway, Manhattan
/nyc-dob-permits 1000770001 (BBL)
/nyc-dob-permits 1001389 (BIN)
Step 1: Parse Input
Accept one of:
- Address + Borough/Zip — "120 Broadway, Manhattan" or "120 Broadway 10271"
- BBL — 10-digit number (boro 1 + block 5 + lot 4)
- BIN — 7-digit Building Identification Number
Borough codes: Manhattan=1/MN, Bronx=2/BX, Brooklyn=3/BK, Queens=4/QN, Staten Island=5/SI
Step 2: Resolve via PLUTO
Query PLUTO to get BBL, BIN, and building metadata. No API key needed.
By BBL:
https://data.cityofnewyork.us/resource/64uk-42ks.json?bbl={BBL}
By address:
https://data.cityofnewyork.us/resource/64uk-42ks.json?$where=upper(address) LIKE '%{STREET}%'&borough='{BORO_CODE}'&$limit=5
Address normalization: Uppercase, strip unit/apt suffixes. Borough names to codes: Manhattan=MN, Bronx=BX, Brooklyn=BK, Queens=QN, Staten Island=SI. If multiple results, ask the user to pick. If zero, try variations or suggest providing a BBL.
Store from PLUTO: bbl, bin (or bldgbin), address, borough, bldgclass, zonedist1, yearbuilt, ownername, numfloors, lotarea, latitude, longitude.
Parse BBL into: boro (1 digit), block (5 digits zero-padded), lot (4 digits zero-padded).
Step 3: Query DOB Permits & Filings
Query all 4 datasets using BIN. IMPORTANT: Legacy datasets use bin__ (double underscore). DOB NOW datasets use bin.
Legacy Permit Issuance
https://data.cityofnewyork.us/resource/ipu4-2q9a.json?$where=bin__='{BIN}'&$order=issuance_date DESC&$limit=30
Key fields: permit_si_no, job__, job_type, issuance_date, expiration_date, permittee_s_first_name, permittee_s_last_name, owner_s_first_name, owner_s_last_name
Legacy Job Filings
https://data.cityofnewyork.us/resource/ic3t-wcy2.json?$where=bin__='{BIN}'&$order=latest_action_date DESC&$limit=30
Key fields: job__, doc__, job_type, job_status, latest_action_date, applicant_s_first_name, applicant_s_last_name
DOB NOW Approved Permits
https://data.cityofnewyork.us/resource/rbx6-tga4.json?$where=bin='{BIN}'&$order=approved_date DESC&$limit=30
Key fields: job_filing_number, permit_status, filing_date, approved_date, job_type
DOB NOW Job Filings
https://data.cityofnewyork.us/resource/w9ak-ipjd.json?$where=bin='{BIN}'&$order=filing_date DESC&$limit=30
Key fields: job_filing_number, filing_status, filing_date, job_type
Step 4: Print Results
Merge all results, sort by date descending. Group by job type:
- NB = New Building
- A1 = Alteration Type 1 (major — changes use/egress/occupancy)
- A2 = Alteration Type 2 (multiple work types)
- A3 = Alteration Type 3 (minor, one work type)
- DM = Demolition
- Other = Everything else
## DOB Permits & Filings — {Address}
**Total found:** {count} ({x} legacy, {y} DOB NOW)
### New Building (NB)
| Date | Job # | Permit # | Status | Applicant |
|------|-------|----------|--------|-----------|
| ... | ... | ... | ... | ... |
### Alteration Type 1 (A1)
| Date | Job # | Permit # | Work Type | Status | Applicant |
|------|-------|----------|-----------|--------|-----------|
### Alteration Type 2-3 (A2/A3)
{table}
### Demolition (DM)
{table if any}
### Other
{table if any}
**Note:** Pre-BIS records (before ~1989) are not digitized. If this building predates 1989 and few records appear, earlier permits exist only on paper.
Source: [DOB Permit Issuance](https://data.cityofnewyork.us/Housing-Development/DOB-Permit-Issuance/ipu4-2q9a) | [DOB Job Filings](https://data.cityofnewyork.us/Housing-Development/DOB-Job-Application-Filings/ic3t-wcy2) | [DOB NOW Permits](https://data.cityofnewyork.us/Housing-Development/DOB-NOW-Build-Approved-Permits/rbx6-tga4) | [DOB NOW Filings](https://data.cityofnewyork.us/Housing-Development/DOB-NOW-Build-Job-Application-Filings/w9ak-ipjd)
If no results from any dataset: "No DOB permits or filings found for this property."
Conventions
- All dates: YYYY-MM-DD
- If Socrata returns empty array: "No results found"
- If HTTP error: note it and suggest checking the address
- If the user requests, write results to a file
- Check PLUTO
yearbuilt— if before 1989, add the pre-BIS note
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
slide-deck-generator
Generate a polished HTML slide deck from a topic, outline, or data. Outputs a self-contained .html file with keyboard/touch navigation, responsive typography, and the ALPA (Alpaca Labs) design system — Helvetica, editorial layout, clean white backgrounds.
resize-images
Batch-resize images for web (WebP at 1920/1200/400px), social (center-cropped WebP at Instagram square/portrait, Twitter/X, LinkedIn), slides (center-cropped JPEG at 1024×768 and 1920×1080), and print (300 DPI JPEG at ARCH A 9×12, ARCH B 12×18, ARCH C 18×24). Asks user for source folder, outputs resized copies into subfolders within that folder.
color-palette-generator
Color palette generator — creates harmonious color palettes from descriptions, moods, or images. Outputs a self-contained HTML file with swatches, hex/RGB/HSL codes, contrast ratios, and example pairings.
demographics-analysis
Demographics and market site analysis — population, income, age, housing market, and employment data from an address.
history
Neighborhood context and history — adjacent uses, architectural character, landmarks, commercial activity, and planned development from an address.
environmental-analysis
Climate and environmental site analysis — temperature, precipitation, wind, sun angles, flood zones, seismic risk, soil, and topography from an address.
Didn't find tool you were looking for?