4.09M PERMITS.DOZENS OF PORTALS.ONE FORMAT.BY CSV, OR BY API.
Minnesota building permits from city and county portals across the state, normalized into one schema. Buy one city as a CSV, or query the full dataset via the API.
Pick a city. Preview this week’s file.
Every file is a fresh weekly pull — not the full archive, just the latest batch. 33 cities ship right now. The 8 highest-volume are loaded below.
Minneapolis
| Date | Address | Contractor | Type | Value |
|---|---|---|---|---|
| Apr 13 | 4717 ALDRICH AVE S | Residential Heating and Air Conditioning Inc | Mechanical | — |
| Apr 13 | 4205 11TH AVE S | SODERLIN PLUMBING HEATING AND AIR | Plumbing | — |
| Apr 13 | 3601 3RD AVE S | Mad City Windows and Baths Renuity | Plumbing | — |
| Apr 13 | 4745 WASHBURN AVE S | TODAYS EXTERIORS INC | Res | $7,900 |
03.0 / FOR DEVELOPERSSame data. One curl away.
Expand for the API request, response, and integration notes.
See the API ↓Collapse ↑
Same data. One curl away.
Expand for the API request, response, and integration notes.
Start with the sandbox. Generate a key.
Self-serve provisioning. The sandbox key is free, forever, and gives you a low-friction way to evaluate the API before moving to Builder or Production.
Pass a bearer token. Query by city, contractor, or license.
Permits from different city portals come in different shapes. The API normalizes them — same field names, same format, whether the source is EnerGov, CitizenServe, or anything else.
Read the JSON. Ship the decision.
Every field is typed. Every source is cited. Every timestamp tells you when we last pulled it, so stale data is your call, not a surprise.
curl "https://api.pullfirst.com/v1/permits?city=Minneapolis&contractorName=Northern+Star" \ -H "Authorization: Bearer sk_live_..."
{
"permits": [
{
"permitNumber": "BLD-2026-01234",
"city": "Minneapolis",
"contractorName": "Northern Star Construction LLC",
"propertyAddress": "1234 Main St, Minneapolis, MN 55401",
"permitType": "Residential Remodel",
"value": 125000,
"issueDate": "2026-04-08T00:00:00",
"status": "Issued",
"inspectionCount": 3
}
],
"totalCount": 12,
"page": 1,
"pageSize": 20
}Buy a city file or start with the API sandbox.
Downloads are for one-off city files. The API is for recurring programmatic access. Both are self-serve, and the sandbox key gives you a low-friction way to evaluate the API before paying.