Permitypermit history for a property address

Property permit intelligence

What work has been permitted here,
and when.

Roofing, HVAC, electrical and plumbing. One address in, four dated answers out — each one saying where the date came from and how sure it is.

Address to answer

Residential Property Search

An address typed in, and the report that comes back: a year for roofing, HVAC, electrical and plumbing, each with the permit date it was taken from and how sure it is.

Recorded on a demonstration property made up for filming: the address and the owner shown are not real.

Watch the demo videos

A real result

Longmont, CO
Boulder County
LONGMONT
full permit coverage
Roofing
2026
filed · low
2 permits
HVAC
—
no permit found
0 permits
Electrical
—
no permit found
0 permits
Plumbing
—
no permit found
0 permits
DateTagsDescription
2026-08-18filedroofingRemove and replace 16 sq roof. Owens corning duration storm shingles
2026-03-19filedroofingRe-roof

A real result, not a mock-up — address withheld. 2 permits on record. Open this report as a PDF — address absent from the file, not covered over.

Who this is for

Who asks this question

Anyone whose decision changes when they learn the roof is twenty years old rather than two.

Insurance

Underwriting, renewals and claims. Roof age decides whether a carrier writes it, and at what.

Real estate

What was done, when, and whether it was permitted — before it becomes a disclosure argument.

Construction

Verify prior work on a property before you quote it: what was permitted, when, and which authority issued it.

Property management

Track what has actually been done across a portfolio rather than what the file says.

Inspection and appraisal

A permit history alongside the walkthrough, and a record of the work you cannot see.

Lending and title

Unpermitted additions and open permits, found before closing rather than after.

The twenty-minute problem

Permit records live in hundreds of separate county and city systems, each with its own search, its own login, and its own idea of what a date means. Checking one property is twenty minutes. Checking eight hundred is not something anyone does.

Permity answers in about a second, and will answer for a whole list from a CSV.

What it is worth knowing

A twenty-year-old roof decides a renewal. An addition that raised replacement cost by forty thousand dollars against a limit that never moved is a claim waiting to happen. Work done without a permit is a disclosure problem for whoever sells the house next.

All of it is in the permit record, and none of it is in the file in front of you.

How to read it

An empty cell means two opposite things

This is the part most permit tools get wrong. “No roofing permit” and “this county does not report roofing permits” look identical if you render both as a blank. One of them prices a policy. The other sends an inspector. We never collapse them.

2019
found

A permit, and a year we can stand behind.

—
none found

No permit, and this jurisdiction reports well. Real signal: probably no permitted work.

—
found, undated

A permit exists with no usable date. Work happened; when is unknown.

?
no coverage

This jurisdiction barely reports. Absence here is not evidence of anything.

A 2012 filing is not a 2012 completion

A permit record carries up to four dates and rarely all of them. We take the first that exists and always report which one it was, so you know whether a year means the work finished or only that somebody applied.

We take the first field that has a date — and always say which one it was.final_datework completedpresent 24%issue_datepermit issuedpresent 51%file_datesomeone appliedpresent 86%start_datework startedpresent —

Measured on 100 Colorado roofing permits. The most truthful field is missing three times in four, so a single field will not do — and a 2012 filing is not a 2012 completion.

The neighbours fill in what a permit cannot

The honest weakness of any permit product is that unpermitted work is invisible. The street fixes it. When most of a block pulled a roofing permit the same year and one house did not, that silence is worth a question.

2019×92020×2none×1← this property12 properties on this block. 11 pulled a roofing permit. This one did not.

Where it stops

What it will not tell you

Unpermitted work leaves no record. A roof replaced without a permit is invisible here, and always will be. Absence of a permit is not absence of work.

Not every jurisdiction reports. Where coverage is thin we say so on the response rather than returning a confident blank.

We do not guess a year. Where a property has no permit for a trade but does have a build date, that inference is returned separately and labelled, never merged into the measured year.

A tool that is wrong once in the expensive direction never gets opened again. Read the API reference for exactly what each field means, or the questions page, which answers these three properly and shows a full report on a real house.

Coverage stated, not implied

Denver, CO
Adams County
ADAMS COUNTY
little or no reporting
Roofing
?
not reported here
0 permits
HVAC
2012
issued · low
1 permit
Electrical
2024
completed · low
5 permits
Plumbing
?
not reported here
0 permits
DateTagsDescription
2024-11-08completedelectrical, telecomRemove 15 rrhs, 12 antennas, install 9 antennas, 1 bbu, 12 rrhs, relocates 1 antenna
2022-04-18issuedelectrical, telecomThe scope of work being proposed with this project includes the following details: rooftop work: • remove (2) existing antennas • replace with (6) c-band antennas • install (2) dc9 squids additional equipment changes will take place inside the enclosed equipment shelter with no additional shelter footprint.
2019-05-22issuedelectrical, telecomRemove & replace 6 new antennas, 2 per sector *remove and replace 6 remote radioheads (rrh), 2 per sector *remove 3 rrh's, 1 per sector
2016-03-16issuedtelecomComm- cell site

A real result, not a mock-up — address withheld. 8 permits on record. Open this report as a PDF — address absent from the file, not covered over.

What it does

Beyond one address at a time

A lookup is the start. The rest is what turns it from something you check into something that tells you what changed.

BuiltRun a whole list

Upload a CSV and get a table back, your own columns carried through. Nobody wants one roof age — they want to know which of eight hundred renewals are sitting on twenty-year-old roofs before somebody else notices.

Download a template, drop in your addresses, get a CSV with four dated answers per row.

BuiltShare without an account

A signed, expiring link an underwriter, a client or a buyer can open. This work runs on forwarding documents to people who will never log in to your software.

Seven days by default, re-issuable, and the PDF renders from the stored data so it can never disagree with it.

BuiltWhich authority stands behind it

Every dated answer names the authority standing behind it and how far that authority has published.

On the report, under the trade it belongs to, with the contractor named on the permit where the county records one.

BuiltRoofer mode

On the map in the Permity app for iPhone and iPad, tap a house to see its address, then look up its permit history only if you want it. Moving the map, searching and tapping houses spend nothing.

The Look up button says what it costs before you tap it. How roofer mode works

NextWatch a whole book

Point it at every address you already service and let it tell you what changed. An addition that raised replacement cost against a limit that never moved is a liability sitting in your own file.

Existing customers, so no cold-contact problem and no new data to buy.

Zapier

Zapier

A private Zapier app, shared on request

Permity has its own Zapier app. It is private, so it is not in Zapier’s directory: ask and we email you an invitation that adds it to your Zapier account. It works with any CRM that connects to Zapier, including:

And general CRMs such as HubSpot, Salesforce, Zoho CRM and HighLevel, or any other app on Zapier. Names and logos belong to their owners, and showing them here does not mean any of them endorses Permity.

Use Momentum or NowCerts? They are one system (Momentum AMP is NowCerts under its current name), and it has no Zapier app yet. So we connect Permity to it through Zapier’s Webhooks step and Momentum’s own API, which needs API access on your Momentum account.

Want a walkthrough? Book a demo.

Integrations

It already works with what you use

No SDK to wait for. One authenticated POST, or our private Zapier app, from wherever your work already happens.

Zapier

The private Permity app, shared on request. Or, with no invitation, Webhooks by Zapier → Custom Request: nested fields flatten, so trades.roofing.year arrives as Trades Roofing Year.

POST  https://permityusa.com
        /v1/permits/lookup
X-API-Key: $PERMITY_KEY
{"address": "{{address}}"}
Make

HTTP → Make a request, then a Router on status. The parsed body is a collection, so {{2.trades.roofing.year}} addresses it directly.

Method   POST
Body     Raw / JSON
Parse    Yes
Router   ok | ambiguous | else
Code

Anything that speaks HTTP. Signed webhooks, idempotency keys and a delivery log for when something goes wrong at 2am.

const r = await fetch(url, {
  method: "POST",
  headers: { "X-API-Key": key },
  body: JSON.stringify({ address }),
})

Capabilities

There is an API, and it is the same answer

Everything the screens do is one authenticated POST away. Built for the tools this work actually runs on, with no SDK to wait for.

  • One endpoint for a lookup. Address in, the full trade summary and permit history out.
  • Batch a CSV of addresses and get a table back, your own columns carried through.
  • Signed PDF reports at an expiring URL, ready to forward to someone without an account.
  • Webhooks with an HMAC signature and a delivery log, so you can see every attempt.
  • Idempotency keys, because low-code tools retry and you should not pay twice.
  • Zapier through our private app, shared on request, or a plain HTTP step that works for anyone. Make through the same HTTP step.
  • Honest status codes: a negative result is a 200, and a lapsed subscription is not an error.

Try it on a house you know

It is how everyone tests this, and the fastest way to find out whether it is worth anything to you.