{
  "release": "norfolk-permit-pulse",
  "version": "1.0.0",
  "generatedOn": "2026-10-12",
  "extractionDate": "2026-10-12",
  "window": {
    "start": "2020-01-01",
    "end": "2026-10-12"
  },
  "source": {
    "publisher": "City of Norfolk — Department of City Planning, Development Services Center (DSC)",
    "datasetTitle": "Permits",
    "portal": "https://data.norfolk.gov/",
    "datasetPage": "https://data.norfolk.gov/Housing-and-Building/Permits/fahm-yuh4",
    "api": "https://data.norfolk.gov/resource/fahm-yuh4.json",
    "attributionLink": "https://www.norfolk.gov/2799/Permits-and-Inspections",
    "updateCadence": "updated daily on weekdays, per the dataset description",
    "cityDescription": "This dataset offers a listing of permits issued by Norfolk City Planning’s Development Service Center (DSC). It encompasses a wide range of permit types, including those for building, plumbing, electrical, mechanical, fire safety, amusement, elevators, certificates of occupancy, zoning, and others.",
    "licenceStatement": "The dataset page states no licence (the portal metadata reads license: null, provenance OFFICIAL). BidBro reuses the records as the City of Norfolk’s public permit record, credits the Development Services Center as the dataset page asks, and asserts no licence on the city’s behalf."
  },
  "method": {
    "unit": "one permit record published by the City of Norfolk on its open data portal",
    "measure": "calendar days from the application date the city recorded to the issue date the city recorded",
    "percentileRule": "nearest-rank, not interpolated — every published percentile is a value some permit actually took",
    "minCellN": 30,
    "suppression": "cells computed from fewer than 30 permits are reported as suppressed rather than published",
    "excludedFields": "street address, permit number, parcel identifier (GPIN), tax account and applicant are never requested or published",
    "openStatuses": [
      "Pending",
      "Reviews in progress",
      "Additional Information Required",
      "Documents Submitted",
      "Portal Submitted",
      "Portal Review",
      "Final Review",
      "Reviews complete",
      "Incomplete",
      "Approved"
    ]
  },
  "population": {
    "portalRowsSinceWindowStart": 87185,
    "inWindowWithIssueDate": 69837,
    "residential": 50384,
    "commercial": 17123,
    "unlabelledUseClass": 2330,
    "residentialNeverIssued": 10381,
    "residentialStillOpen": 2663,
    "excluded": {
      "noApplicationDate": 0,
      "outsideWindow": 0,
      "afterExtraction": 1,
      "neverIssued": 17305,
      "negativeDuration": 42
    }
  },
  "tables": {
    "byTrade": [
      {
        "permitType": "Building",
        "n": 10597,
        "suppressed": false,
        "median": 20,
        "p25": 7,
        "p75": 58,
        "p90": 147
      },
      {
        "permitType": "Electrical",
        "n": 13908,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 4,
        "p90": 14
      },
      {
        "permitType": "Mechanical",
        "n": 12343,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 4,
        "p90": 9
      },
      {
        "permitType": "Plumbing",
        "n": 8762,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 3,
        "p90": 7
      },
      {
        "permitType": "Demolition",
        "n": 680,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 5,
        "p90": 17
      },
      {
        "permitType": "Zoning",
        "n": 3904,
        "suppressed": false,
        "median": 0,
        "p25": 0,
        "p75": 5,
        "p90": 21
      },
      {
        "permitType": "Fire Protection",
        "n": 1,
        "suppressed": true,
        "median": null,
        "p25": null,
        "p75": null,
        "p90": null
      },
      {
        "permitType": "New Elevator",
        "n": 65,
        "suppressed": false,
        "median": 14,
        "p25": 8,
        "p75": 20,
        "p90": 33
      },
      {
        "permitType": "Short Term Rental",
        "n": 122,
        "suppressed": false,
        "median": 24,
        "p25": 8,
        "p75": 51,
        "p90": 84
      },
      {
        "permitType": "Sign",
        "n": 2,
        "suppressed": true,
        "median": null,
        "p25": null,
        "p75": null,
        "p90": null
      }
    ],
    "byWorkType": [
      {
        "workType": "Alteration/Repair - Renovate Existing Square Footage",
        "label": "renovation of existing space",
        "n": 3924,
        "suppressed": false,
        "median": 17,
        "p25": 8,
        "p75": 39,
        "p90": 101
      },
      {
        "workType": "Addition - Increase Square Footage/Interior Expansion",
        "label": "home addition",
        "n": 760,
        "suppressed": false,
        "median": 55,
        "p25": 29,
        "p75": 115,
        "p90": 248
      },
      {
        "workType": "Minor Addition",
        "label": "minor addition (porch, deck, small room)",
        "n": 214,
        "suppressed": false,
        "median": 37,
        "p25": 20,
        "p75": 70,
        "p90": 140
      },
      {
        "workType": "Reroof/Solar Panels",
        "label": "re-roof or rooftop solar",
        "n": 3214,
        "suppressed": false,
        "median": 8,
        "p25": 3,
        "p75": 19,
        "p90": 84
      },
      {
        "workType": "New",
        "label": "new building",
        "n": 2190,
        "suppressed": false,
        "median": 52,
        "p25": 24,
        "p75": 116,
        "p90": 263
      },
      {
        "workType": "Replacement",
        "label": "replacement",
        "n": 176,
        "suppressed": false,
        "median": 25,
        "p25": 15,
        "p75": 57,
        "p90": 131
      },
      {
        "workType": "COE",
        "label": "certificate of occupancy",
        "n": 117,
        "suppressed": false,
        "median": 39,
        "p25": 20,
        "p75": 77,
        "p90": 126
      },
      {
        "workType": "Demolition",
        "label": "demolition",
        "n": 1,
        "suppressed": true,
        "median": null,
        "p25": null,
        "p75": null,
        "p90": null
      },
      {
        "workType": "Homestay",
        "label": null,
        "n": 1,
        "suppressed": true,
        "median": null,
        "p25": null,
        "p75": null,
        "p90": null
      }
    ],
    "byUseClass": [
      {
        "useClass": "Commercial",
        "n": 17123,
        "suppressed": false,
        "median": 4,
        "p25": 0,
        "p75": 20,
        "p90": 62
      },
      {
        "useClass": "Residential",
        "n": 50384,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 8,
        "p90": 42
      }
    ],
    "byYear": [
      {
        "year": 2020,
        "residential": {
          "n": 7523,
          "suppressed": false,
          "median": 1,
          "p25": 0,
          "p75": 7,
          "p90": 41
        },
        "commercial": {
          "n": 2192,
          "suppressed": false,
          "median": 3,
          "p25": 0,
          "p75": 19,
          "p90": 102
        }
      },
      {
        "year": 2021,
        "residential": {
          "n": 7638,
          "suppressed": false,
          "median": 3,
          "p25": 1,
          "p75": 11,
          "p90": 76
        },
        "commercial": {
          "n": 2298,
          "suppressed": false,
          "median": 4,
          "p25": 1,
          "p75": 20,
          "p90": 73
        }
      },
      {
        "year": 2022,
        "residential": {
          "n": 7798,
          "suppressed": false,
          "median": 2,
          "p25": 0,
          "p75": 12,
          "p90": 73
        },
        "commercial": {
          "n": 1988,
          "suppressed": false,
          "median": 6,
          "p25": 1,
          "p75": 30,
          "p90": 151
        }
      },
      {
        "year": 2023,
        "residential": {
          "n": 6902,
          "suppressed": false,
          "median": 2,
          "p25": 0,
          "p75": 9,
          "p90": 47
        },
        "commercial": {
          "n": 2358,
          "suppressed": false,
          "median": 4,
          "p25": 0,
          "p75": 21,
          "p90": 74
        }
      },
      {
        "year": 2024,
        "residential": {
          "n": 6751,
          "suppressed": false,
          "median": 1,
          "p25": 0,
          "p75": 8,
          "p90": 32
        },
        "commercial": {
          "n": 2421,
          "suppressed": false,
          "median": 4,
          "p25": 0,
          "p75": 20,
          "p90": 50
        }
      },
      {
        "year": 2025,
        "residential": {
          "n": 7311,
          "suppressed": false,
          "median": 2,
          "p25": 0,
          "p75": 9,
          "p90": 35
        },
        "commercial": {
          "n": 3288,
          "suppressed": false,
          "median": 3,
          "p25": 0,
          "p75": 20,
          "p90": 52
        }
      },
      {
        "year": 2026,
        "residential": {
          "n": 6461,
          "suppressed": false,
          "median": 1,
          "p25": 0,
          "p75": 5,
          "p90": 18
        },
        "commercial": {
          "n": 2578,
          "suppressed": false,
          "median": 2,
          "p25": 0,
          "p75": 12,
          "p90": 34
        }
      }
    ],
    "byMonth": [
      {
        "month": "2024-11",
        "n": 595,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 9,
        "p90": 46,
        "stillOpen": 27,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2024-12",
        "n": 537,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 6,
        "p90": 29,
        "stillOpen": 30,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-01",
        "n": 603,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 7,
        "p90": 34,
        "stillOpen": 42,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-02",
        "n": 559,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 12,
        "p90": 29,
        "stillOpen": 47,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-03",
        "n": 748,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 9,
        "p90": 38,
        "stillOpen": 67,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-04",
        "n": 642,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 9,
        "p90": 44,
        "stillOpen": 57,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-05",
        "n": 599,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 11,
        "p90": 35,
        "stillOpen": 60,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-06",
        "n": 602,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 12,
        "p90": 41,
        "stillOpen": 48,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-07",
        "n": 664,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 12,
        "p90": 35,
        "stillOpen": 57,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-08",
        "n": 644,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 7,
        "p90": 32,
        "stillOpen": 50,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-09",
        "n": 554,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 7,
        "p90": 36,
        "stillOpen": 51,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-10",
        "n": 649,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 7,
        "p90": 38,
        "stillOpen": 65,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-11",
        "n": 487,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 8,
        "p90": 30,
        "stillOpen": 38,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2025-12",
        "n": 560,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 8,
        "p90": 28,
        "stillOpen": 40,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-01",
        "n": 684,
        "suppressed": false,
        "median": 2,
        "p25": 0,
        "p75": 7,
        "p90": 33,
        "stillOpen": 61,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-02",
        "n": 751,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 5,
        "p90": 14,
        "stillOpen": 66,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-03",
        "n": 840,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 5,
        "p90": 20,
        "stillOpen": 91,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-04",
        "n": 778,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 7,
        "p90": 20,
        "stillOpen": 49,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-05",
        "n": 645,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 6,
        "p90": 22,
        "stillOpen": 86,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-06",
        "n": 748,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 6,
        "p90": 25,
        "stillOpen": 95,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-07",
        "n": 710,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 5,
        "p90": 18,
        "stillOpen": 79,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-08",
        "n": 595,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 4,
        "p90": 14,
        "stillOpen": 88,
        "provisional": false,
        "provisionalReason": null
      },
      {
        "month": "2026-09",
        "n": 574,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 3,
        "p90": 8,
        "stillOpen": 127,
        "provisional": true,
        "provisionalReason": "the city's records run only to 2026-10-12; this month settles on 2026-10-30"
      },
      {
        "month": "2026-10",
        "n": 136,
        "suppressed": false,
        "median": 1,
        "p25": 0,
        "p75": 1,
        "p90": 3,
        "stillOpen": 98,
        "provisional": true,
        "provisionalReason": "the city's records run only to 2026-10-12; this month settles on 2026-11-30"
      }
    ]
  }
}
