Construction & Engineering · NYC Open Data

NYC DOB Job Application Filings

Datadory delivers nyc dob job application filings data covering every New York City Department of Buildings job application filed through Borough Offices, eFiling or the HUB with a Latest Action Date on or after January 1, 2000: roughly 2.72 million records across 95 fields, each carrying the job and document numbers, borough and tax lot, job type and status, a full milestone date trail from pre-filing to sign-off, estimated cost and fee, building attributes before and after, work-type flags, applicant and owner names, and GIS-derived coordinates. Delivered daily, weekly, or hourly as an API, files, or straight into your warehouse.

API, files, or your warehouse. Daily, weekly, or hourly.

Where it covers
All five New York City boroughs, resolved down to the individual tax lot with GIS-derived latitude, longitude, council district, census tract and neighborhood tabulation area on every row
How far back
Jobs with a Latest Action Date from January 1, 2000 onward; refreshed daily, with the run date marking each push so you can see exactly how fresh a row is
How fine
One row per job application document - the doc__ column distinguishes resubmissions within the same job - with per-milestone dates and building-level attributes flattened onto it

What is the NYC DOB Job Application Filings dataset?

Before anyone touches a New York City building, someone files a job application with the Department of Buildings - and every such application routed through Borough Offices, eFiling or the HUB lands in this table. Roughly 2.72 million records across 95 fields, covering filings whose Latest Action Date falls on or after January 1, 2000, with the earliest values in the table reaching back to January 2003.

The depth is the point. One row carries the job number and document number, borough, house number and street name, tax block and lot, BIN, job type code (NB new building, A1/A2/A3 alterations of increasing scope, SG sign, and others), status code with its plain-language description, and a milestone date trail that walks the job through pre-filing, paid, fully paid, assigned, approved, fully permitted and sign-off. Money sits beside the milestones: initial cost as filed and total estimated fee. Building attributes appear both before and after the proposed work - stories, height, dwelling units, occupancy group - along with zoning square footage, enlargement dimensions in floors and rooms, and zoning districts.

Then there are the systems inside the walls: boolean work-type flags for plumbing, mechanical, boiler, equipment, sprinkler, standpipe, fire alarm and fire suppression, curb cut, and more, so a question like "all Brooklyn jobs adding sprinklers since 2015" is a filter on three columns, not a text-mining project. The people are named too - applicant last name with license number and professional title, owner's name and business name - and every record closes with GIS-derived latitude, longitude, council district, census tract and neighborhood tabulation area.

One boundary worth knowing: filings submitted through DOB NOW are excluded and live in a companion Department of Buildings table, so complete coverage of current activity means pairing the two - Datadory handles that pairing at delivery.

What do sample rows look like?

One row per job application document, straight from the archive:

job__        : 123023361         doc__ : 01
borough      : MANHATTAN         address : 408 WEST 25 STREET
job_type     : A2                status : PRE-FILING
latest_action: 2020-05-21        fully_permitted : (not reached)
costs        : initial_cost $20,000.00   total_est__fee $400.10
applicant    : PARIKH            owner business : NEW ERAHDFC
gis          : lat 40.747917, long -74.000769

A single row already answers what most datasets cannot: what kind of alteration, at which Chelsea address, filed under which applicant, owned by whom, estimated at what cost against what fee, and how far through the DOB lifecycle it has travelled. The PRE-FILING status paired with a 2020 latest action also shows the honest part of the table - jobs that stalled are recorded as stalled, not dropped.

Multiply by 2.72 million and twenty-five years, and the table becomes a census of who proposes to build what in New York, block by block. Request a sample and rows come back cut to whichever boroughs, job types, tax blocks and years you name.

Which fields does the dataset include?

Twelve core fields carry most analytical weight; definitions below were verified against live query responses during Datadory's August 2026 research pass, not inferred from documentation. The remaining columns - the full milestone date trail beyond fully_permitted, building attributes before and after, work-type flags, zoning districts, applicant license and professional title, and the remaining GIS joins - fold out on request with your sample.

What does coverage look like across geography, time and granularity?

Geography - all five boroughs, Manhattan through Staten Island, resolved to the individual property: house number, street name, tax block and lot, and BIN identify the parcel, while GIS-derived latitude, longitude, council district, census tract and neighborhood tabulation area arrive precomputed on the row. Neighborhood-scale analysis needs no external crosswalk or geocoding step.

Temporal - filings whose Latest Action Date falls on or after January 1, 2000, with earliest values beginning January 1, 2003 - roughly two decades of continuous coverage. The table refreshes daily, and a dedicated run-date column marks each push to Open Data, so any row can be dated to its exact load. At last verification the latest run was August 20, 2026.

Granularity - strictly one row per job application document. The doc__ field distinguishes documents within a single job number, which is how revisions and resubmissions stay separate from first filings; aggregate them deliberately if you want one count per job. There are no pre-summed views - monthly totals by borough or NTA are yours to compute, which is exactly why the table stays trustworthy when the city amends a filing.

How is the data delivered?

API, files, or your warehouse. Daily, weekly, or hourly.

Name the boroughs, job types and date range when you request the sample; the sample ships first either way, with the full field dictionary attached so your engineers can validate all 95 columns before anything recurring starts.

Cadence is yours to set - tighten it during a hot development cycle, loosen it when the market cools.

Who uses this data, and for what?

  • Neighborhood demand mapping - chart filing volume and estimated cost by census tract, NTA or council district to see where renovation money concentrates before retail demographics confirm it. See data scientists use cases.
  • Leading-indicator feeds - weekly new-building and alteration filing counts lead spending on construction by months; pair them with Value of Construction Put in Place (VIP) to turn city-level signals into national ones.
  • Approval-lag benchmarks - every milestone date ships on the row, so time-to-permit comparisons across job types, boroughs and eras need no derived date math. See competitive intel product teams use cases.
  • Design-profession activity tracking - applicant name, license number and professional title on every filing make it possible to count which firms are winning work in which neighborhoods, at what scale.
  • Address-level property intelligence - tax block/lot and BIN keys let a product resolve any address to its complete filing history, statuses included, without a geocoding vendor in the middle. See developers builders use cases.

Which personas get the most value?

Market researchers and consultants, investors and quant researchers, data scientists and ML engineers and developers and data-product builders rate this feed at top relevance - one maps demand by neighborhood, one trades the construction cycle off filing counts, one trains duration and cost models on millions of geocoded rows, one pipes address lookups into products. Competitive intelligence teams mine applicant blocks for evidence of which architecture and engineering firms are pulling work, and journalists and academics cite filing-level facts instead of development press releases. Persona-by-persona workflows sit on our construction engineering data hub, and the ranked shortlist lives on best construction engineering datasets.

How does it compare within construction engineering data?

It is the deepest municipal construction registry for New York in Datadory's catalog - 2.72 million rows, 95 columns, five boroughs, twenty-five years. Chicago Building Permits is its Midwest counterpart, trading New York's per-milestone date trail for a flattened fee ledger and up to fifteen contact blocks per permit; together they make honest two-city permitting studies possible. Zoom out nationally, New Residential Construction (Building Permits, Housing Starts & Completions) covers the whole United States in units but never names a street, Eurostat Construction Statistics & Building Permits harmonizes Europe, and OECD Data Explorer (Building Permits & Construction Indicators) goes global in aggregates. For safety-side context on who actually works the sites behind these filings, OSHA Enforcement & Establishment Data pairs naturally. Head-to-head modeling against spending benchmarks? Start with our comparison of this feed versus FRED Economic Data (Housing Starts & Construction Series).

What should I know before requesting a sample?

Four things worth knowing upfront.

First, initial_cost is the estimate as filed by the applicant, not an appraisal or final accounting - treat it as a scale indicator, and read it beside total_est__fee, which is the Department's own arithmetic on what the filing will be charged.

Second, the main table excludes DOB NOW submissions. Filings made through the newer DOB NOW system live in a companion dataset, so analyses of current-year activity should combine both; Datadory delivers the pair as one feed unless you ask otherwise.

Third, latest_action_date strings mix MM/DD/YYYY and ISO formats across vintages - a parsing detail our normalisation handles before delivery, but worth knowing if you build your own pipeline on raw extracts. The milestone columns carry the same care: a job still sitting in PRE-FILING is genuinely still sitting there.

Fourth, coverage starts with the Latest Action Date cutoff of January 1, 2000, not the filing date itself - very old jobs whose last action predates 2000 fall outside the window even if they were filed decades earlier. All twelve core field definitions above carry verified confidence, so the schema itself is not among the open questions.

Get a sample of this dataset and we will cut it to your boroughs, job types and years, attach the complete field dictionary, and show you the DOB NOW companion rows side by side before anything recurring starts.

Field dictionary

Every field below is documented against real records. The full dictionary ships with the sample.

Field dictionary - twelve verified core fields, one row per job application document
fieldtypedefinitionexample
job__stringNumber assigned by DOB to the job filing; the job's public identity across all its documents.123023361
doc__stringDocument number within the job filing, distinguishing revisions and resubmissions from first filings.01
boroughstringBorough of the property: 1=Manhattan, 2=Bronx, 3=Brooklyn, 4=Queens, 5=Staten Island.MANHATTAN
job_typestringJob type based on the DOB job code: NB new building, A1/A2/A3 alterations of increasing scope, SG sign, and others.A2
job_status_descrpstringPlain-language description of the job's current DOB status code.PRE-FILING
latest_action_datedateDate of the latest status action taken on the job; the field that defines table membership.2020-05-21
initial_coststringEstimated cost of the job as stated on the filing.$20000.00
total_est__feestringEstimated fee of the job as calculated by the Department.$400.10
fully_permitteddateDate when the job became fully permitted; blank until that milestone is reached.2019-11-04
applicant_s_last_namestringLast name of the filing applicant, a licensed professional or contractor, with license number and professional title in adjacent columns.PARIKH
owner_s_business_namestringBusiness name of the property owner as given on the filing.NEW ERAHDFC
gis_latitudenumberLatitude derived from geocoding of the property address; longitude, council district, census tract and NTA sit beside it.40.747917

Questions buyers ask

How far back does the NYC DOB job application filings data go?

Filings with a Latest Action Date on or after January 1, 2000 qualify for the table, and the earliest values present begin January 1, 2003 - roughly two decades of continuous coverage. That window spans the post-recession lull, the supertall boom and the post-pandemic renovation wave in one consistent schema.

Does the data include the cost of each project?

Yes - initial_cost records the estimated cost as filed by the applicant, and total_est__fee carries the Department's own estimated fee for the filing. Read them together and you get both what the owner claimed the work was worth and what the city calculated the review would cost, on the same row.

Can I measure how long approvals take?

Yes - the milestone date trail records pre-filing, paid, fully paid, assigned, approved, fully permitted and sign-off dates individually, so approval lag between any two stages is simple date subtraction on rows where both milestones have been reached. Segmenting by job type, borough or era needs no derived fields.

Is the data geocoded?

Every record arrives with GIS-derived latitude and longitude plus council district, census tract and neighborhood tabulation area, computed upstream from the address. Combined with tax block, lot and BIN identifiers, mapping and spatial filtering need no separate geocoding step or crosswalk file.

Are DOB NOW filings included?

No - filings submitted through the DOB NOW system are excluded from this table and live in a companion Department of Buildings dataset covering those submissions. Analyses of current activity should draw on both; Datadory delivers them paired as one reconciled feed so your counts reflect the whole pipeline, not just the legacy channel.

How current is the data?

The table refreshes daily, and a run-date column marks each individual push to Open Data so any row can be dated to its exact load - the latest observed run was August 20, 2026 during Datadory's verification pass. Delivery cadence is set separately by you, from hourly to weekly.

Can I track specific contractors, architects or owners?

Applicant last name, license number and professional title ship on every filing, alongside owner name and owner's business name. Counting which licensed professionals file where, or which business names own the most active lots, is a group-by on existing columns rather than a text-mining exercise.

Who uses NYC DOB job application filings data?

Six Datadory persona packs carry it, four at top relevance: market researchers mapping neighborhood demand, investors feeding construction-cycle indicators, data scientists training duration models, and developers building address-level property products. Competitive intelligence teams mine applicant activity, and journalists cite filing-level facts instead of press releases.

Notes on this record

  • One flat table holds every DOB job application with a Latest Action Date since January 1, 2000 - identity, milestones, money, building attributes and geography on a single row, no joins required.
  • Pre-filing, paid, fully paid, assigned, approved, fully permitted and sign-off each get their own date column, so approval-lag analysis between any two stages is date subtraction, not reconstruction.
  • initial_cost is the applicant's own estimate of the work; total_est__fee is the Department's calculation of what the filing will be charged - claimed value and assessed review cost side by side.
  • Boolean flags for plumbing, mechanical, boiler, sprinkler, standpipe, fire alarm/suppression and curb cut let you filter jobs by the systems involved instead of parsing free-text descriptions.
  • GIS-derived latitude, longitude, council district, census tract and neighborhood tabulation area ride on every row beside tax block/lot and BIN - neighborhood analysis starts with filters, not geocoding vendors.
  • This table excludes DOB NOW submissions, which live in a companion dataset; Datadory delivers both reconciled as one feed unless you ask for the legacy channel alone.
  • The DOBRunDate-style run-date column marks each daily push, so every row carries proof of when it loaded - latest observed run August 20, 2026 during our verification pass.
  • All twelve core definitions were checked against live query responses during Datadory's August 2026 research pass; the dictionary above describes arriving data, not advertised data.

See the rows before you pay anything.

Name this dataset and we send real records from it — scoped to the fields you asked for.

See pricing