Permitline republishes public open-data records from the Montgomery County Department of Permitting Services, ingested nightly at 06:00 UTC from dataMontgomery. Montgomery publishes permit APPLICATIONS — intake date, status "Open", and a declared valuation. This page documents what we ingest, how the timestamps are defined, and the limits of our current coverage.
data as of —
What we ingest
Each nightly run pulls from two Socrata feeds on the Montgomery County open-data portal: m88u-pqki (Residential Permit) and i26v-w6bd(Commercial Permits). The datasets are the source of record; we map selected fields onto Permitline's Permit model.
The upstream catalog is data.montgomerycountymd.gov.
| Upstream (Socrata) | Permitline field |
|---|---|
| permitno | sourceId / id (prefixed "MC-" on store; prevents collision with DC permit_number on the unique index) |
| applicationtype (fallback worktype, then permit_type) | workType (e.g. "BUILDING RESIDENTIAL PERMIT", "COMMERCIAL BUILDING") |
| status | status (verbatim; "UNKNOWN" fallback when blank) |
| stno + stname + suffix + city + state + zip | address (assembled at parse time) |
| addeddate (date only — see below) | filedAt |
| declaredvaluation (USD; no fee fallback) | valueCents (USD × 100; clamped to INT32_MAX ≈ $21,474,836.47 so the upsert fits Permit.valueCents Int) |
| (literal at parse) | jurisdiction ("Montgomery County") |
| (cron's fetchedAt) | dataAsOf |
Data-as-of semantics
dataAsOf is our ingest timestamp.Every Permit row carries a dataAsOf timestamp. This is the moment our ingest job parsed the row from the upstream Socrata response — not the Socrata addeddate (that becomes filedAt), and not any upstream last-updated metadata.
The dataAsOf stamp is rendered per record on /permits and on the detail page for each permit.
addeddate), so Montgomery records carry dateBasis: "filed". DC records carry "issued" instead. Use the date, not the time of day. Montgomery's addeddate does not publish a usable clock time — the time portion of the upstream value is not meaningful, so Permitline treats the calendar date as authoritative and never renders a Montgomery time. Anything requiring hour-level precision should come from the county directly.sourceId is idempotent: we update the existing row and refresh dataAsOf.Listing window
The nightly cron pulls a 3-day rolling window of newly filed applications from the MC Socrata feeds — deliberate overlap, so a missed night self-heals on the next run. The public listing on /permits defaults to the last 30 days, with a 7 / 30 / 90-day switcher.
3-day rolling pull across both MC datasets (m88u-pqki, i26v-w6bd), one cron run per night at 06:00 UTC. Upserts are idempotent, so the overlap re-writes rather than duplicates. Bounded to 5,000 rows per dataset. Pulls addeddate descending.
Last 30 days by default. Switch to 7 or 90 days from the listing header. The filter is applied server-side in the /api/permits handler.
What is NOT covered
We publish Washington DC and Montgomery County building permits nightly. Prince George's County, Fairfax, and Arlington remain on the Phase 2 roadmap and are not yet ingested or listed.
Disclaimer
Permitline republishes public open-data records from the issuing jurisdictions. Records are provided "as-of" the date stamped on each entry and are not authoritative. Always verify scope, valuation where the jurisdiction publishes one (DC publishes none), contractor information, and status with the issuing jurisdiction (DC Department of Buildings or Montgomery County Department of Permitting Services, depending on the record) before bidding, quoting, or performing work. Permitline never contacts permit applicants; all marketing flows go only to opted-in subscribers, with unsubscribe and physical address per CAN-SPAM.