Minneapolis + Saint Paul Residential Building Permits since 2020
Updated Oct 20, 2026
Source, license and coverage
Supplier documentation. These claims are separate from the automated sample score. A listing edit date is not a data freshness date.
- License
- Brick & Mortar data licence: internal commercial use, no redistribution
- Source / creator
- Brick & Mortar, compiled from Minnesota county, city and federal public records
- Collection method
- Public APIs and bulk files of each office of record, joined on the county parcel id
- Coverage start
- Not applicable
- Coverage end
- Not applicable
- Data last updated
- 2026-10-20
- Update schedule
- snapshot
Sample structure score: 87.2 / 100
This automated check describes the inspected sample, not factual accuracy, legal rights, representativeness, or the quality of the entire dataset. It is not a customer rating.
Assessed 10 sample records (CSV) on 2026-10-20. All records in the provided sample were checked.
| Check | Points | Evidence |
|---|---|---|
| Populated cells | 37.7 / 50 | 181 of 240 top-level cells contain a value. Null, absent and blank values count as missing; zero and false count as populated. |
| Consistent value types | 29.5 / 30 | 178 of 181 populated cells match their column's most common observed type. Types are inferred, not checked against real-world truth. |
| Consistent record shape | 20 / 20 | 10 of 10 records have the expected fields. CSV/TSV use the header width; JSON uses the union of observed keys. |
Field-level findings and improvements
Check missing cells and mixed types below. Document intentional missing values or mixed types in your field descriptions. Do not fill legitimate unknowns with invented values just to increase this score.
| Field | Missing cells | Most common type | Other populated types |
|---|---|---|---|
| city | 0 / 10 | string | 0 / 10 |
| county | 0 / 10 | string | 0 / 10 |
| permit_no | 0 / 10 | string | 0 / 10 |
| issued | 0 / 10 | string | 0 / 10 |
| completed | 0 / 10 | string | 0 / 10 |
| trade | 0 / 10 | string | 0 / 10 |
| kind | 0 / 10 | string | 0 / 10 |
| work | 0 / 10 | string | 0 / 10 |
| occupancy | 3 / 10 | string | 0 / 7 |
| status | 0 / 10 | string | 0 / 10 |
| fees_usd | 3 / 10 | number | 0 / 7 |
| parcel_id | 0 / 10 | number | 3 / 10 |
| address | 1 / 10 | string | 0 / 9 |
| use | 1 / 10 | string | 0 / 9 |
| year_built | 1 / 10 | number | 0 / 9 |
| lat | 0 / 10 | number | 0 / 10 |
| lon | 0 / 10 | number | 0 / 10 |
| rows_per_permit | 0 / 10 | number | 0 / 10 |
| units_added | 10 / 10 | unknown | 0 / 0 |
| units_removed | 10 / 10 | unknown | 0 / 0 |
| sub_type | 7 / 10 | string | 0 / 3 |
| value_usd | 9 / 10 | number | 0 / 1 |
| contractor | 7 / 10 | string | 0 / 3 |
| contractor_address | 7 / 10 | string | 0 / 3 |
About this data
397,338 building permit rows since 2020 from the Minneapolis and Saint Paul permit registers: work type, valuation, contractor, dates, status, lat/lon, joined to the county parcel id. Applicant names removed for this marketplace. One CSV file; Parquet and full schema on request.
Retrieve with your agent or Python
Create an account and configure DATABAZAAR_API_KEY. This example retrieves free or already purchased data; it never makes a purchase. For a multi-file dataset, choose a file index from the manifest.
Download the Python examplepython3 retrieve-dataset.py 12ea29ac-7af6-411d-a5a3-c0d64df2367f --output dataset.bin
Schema
| Name | Type | Description |
|---|---|---|
| city | string | |
| county | string | |
| permit_no | string | |
| issued | string | |
| completed | string | |
| trade | string | |
| kind | string | |
| work | string | |
| occupancy | string | |
| status | string | |
| fees_usd | number | |
| parcel_id | number | |
| address | string | |
| use | string | |
| year_built | number | |
| lat | number | |
| lon | number | |
| rows_per_permit | number | |
| units_added | unknown | |
| units_removed | unknown | |
| sub_type | string | |
| value_usd | number | |
| contractor | string | |
| contractor_address | string |
Sample Data
Download a free sample to inspect the data before purchasing.
Public sample only. Sign in to retrieve the full dataset, including free datasets.
For AI Agents
# 1. Add to your agent's MCP config (claude_desktop_config.json or similar):
{
"mcpServers": {
"databazaar": { "command": "npx", "args": ["databazaar-mcp"] }
}
}
# 2. Your agent can then call:
search_datasets({ query: "Minneapolis + Saint Paul Resid" })
// Found: 12ea29ac-7af6-411d-a5a3-c0d64df2367f
buy_now({ dataset_id: "12ea29ac-7af6-411d-a5a3-c0d64df2367f" }) // uses your saved card# Authenticate with your API key:
curl https://api.databazaar.io/datasets/12ea29ac-7af6-411d-a5a3-c0d64df2367f \
-H "Authorization: Bearer YOUR_API_KEY"
# Purchase:
curl -X POST https://api.databazaar.io/datasets/12ea29ac-7af6-411d-a5a3-c0d64df2367f/buy \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"dataset_id": "12ea29ac-7af6-411d-a5a3-c0d64df2367f"}'