Minnesota Contractor Licenses - DLI Trades Register
Pricing
from $0.03 / 1,000 minnesota construction trades license records
Minnesota Contractor Licenses - DLI Trades Register
Minnesota DLI construction trades license register (259k rows, public data): electricians, plumbers, boiler and high-pressure-piping engineers, residential contractors and more. Search by name, type, subtype, status or city, look up a license, screen enforcement actions.
Pricing
from $0.03 / 1,000 minnesota construction trades license records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Minnesota Contractor Licenses - DLI Construction Trades Register
The Minnesota Department of Labor and Industry (DLI) publishes its entire current construction trades license register as public data - every electrician, plumber, boiler and high-pressure-piping engineer, residential contractor and more - refreshed continuously. This actor turns that register into a charged-per-record lookup and screening tool.
Built for: contractor and tradesman due diligence - verifying that an electrician, plumber or builder actually holds a current Minnesota license, screening enforcement actions, checking license expiration and status, and statewide trade-market sizing.
What it covers
259,243 license records (current register):
| License type | Rows |
|---|---|
| Electrical | 109,837 |
| Residential Contractors | 59,290 |
| Plumbing | 36,923 |
| Boiler | 34,973 |
| High Pressure Piping | 7,493 |
| Mechanical Contractor Bond | 5,362 |
| Elevator | 1,946 |
| Building Officials | 1,113 |
| Water Conditioning | 1,061 |
| Continuing Education | 1,005 |
| Manufactured Structures | 240 |
Across 78 license subtypes - master and journeyworker electricians and plumbers, registered (unlicensed) electricians, power-limited technicians, special engineers, qualifying builders and remodelers, building officials, backflow-prevention testers, elevator constructors and more.
Every row carries the licensee or business name, doing-business-as name, license number, license type and subtype, mailing address, city, state, ZIP, phone, status, original and expiration dates, an enforcement-action flag, and a renewal-in-progress marker. Dates come through as clean ISO (YYYY-MM-DD).
Two things this actor fixes from the raw file. First, DLI ships each status in mixed case -
ExpiredandEXPIRED,IssuedandISSUED,SuspendedandSUSPENDED- so a naive filter silently splits a facet. This actor ships a normalized status (Issued,Expired,Licensed,Revoked,Suspended,Voluntary Termination,Denied,Withdrawn) and filters and aggregates on that. Second,Enforcement_Actionis a genuine public flag - 3,759 records (~1.5%) carry a DLI enforcement action.
Typical questions
- "Is this electrician's or plumber's license current - and has DLI taken an enforcement action?"
- "Show every Class A Master Electrician in Minneapolis."
- "Which residential building contractors in Minnesota hold a current license?"
- "Look up license PJ064542."
- "Find every trade license with an enforcement action on record."
- "How are Minnesota trades licenses distributed by type and status?"
Inputs
| Input | What it does |
|---|---|
licenseNumber | exact license number -> that licensee's row, e.g. PJ064542 |
name | licensee or DBA name substring, case-insensitive |
licenseType | the trade (Electrical, Plumbing, Boiler, Residential Contractors ) |
licenseSubtype | exact credential, e.g. Class A Master Electrician, Journeyworker Plumber |
busPers | Personal (individual) or Business (entity) |
status | canonical status - Issued / Expired / Licensed / Revoked / Suspended / |
enforcementAction | true = only records with a DLI enforcement action |
city / state / zipCode | location filters (out-of-state licensees carry their home state) |
aggregate / groupBy | one summary row per group with a count - type / subtype / status / business-or-personal / state |
maxResults | cap records (default 200) |
Default run = a tiny aggregate (license-type mix) - fast and safe for the daily auto-test, never a surprise full dump. For records, add a name / licenseType / city filter or a licenseNumber.
Example inputs
Look up one license number - a bare number returns that licensee's row.
{ "licenseNumber": "PJ064542" }
Master electricians in Minneapolis -
{ "licenseSubtype": "Class A Master Electrician", "city": "Minneapolis", "maxResults": 10 }
Screen enforcement actions - enforcementAction=true returns every license carrying a DLI action.
{ "enforcementAction": true, "maxResults": 10 }
The license-type mix - one summary row per trade, across the register.
{ "aggregate": true, "groupBy": "licenseType", "maxResults": 10 }
Low cost
From $0.00005 per record, down to $0.00003 at Gold - billed only for the rows you use, and each record is metered individually.
Minnesota's register is a 51 MB flat CSV with no query server behind it - there is no way to ask the state for "just Minneapolis master electricians". Rather than make every lookup pay for a full-register download, the register is mirrored, and each run queries the mirror in a single pass. That mirror is what lets a 259,243-row register behave like a live lookup at per-record pricing. Every pull is integrity-checked against the register's known shape (total count, type floors, the closed type vocabulary, the status vocabulary, license-number uniqueness, key-column coverage), so a degraded or schema-changed source fails loudly instead of returning bad rows.
Example output
licenseNumber=PJ064542 - a journeyworker plumber:
{"platform": "mn-dli","source": "mn-dli-licenses","jurisdiction": "MN","licenseNumber": "PJ064542","busPers": "Personal","licenseType": "Plumbing","licenseSubtype": "Journeyworker Plumber","name": "ADAM J OTIS","dbaName": "","address1": "120 MINNESOTA ST WEST","address2": "","city": "Cannon Falls","state": "MN","zipCode": "55009","phone": "701230998_","status": "Issued","statusNormalized": "Issued","originalDate": "2021-09-15","expirationDate": "2027-12-31","enforcementAction": "0","renewalInProgress": "","refreshed": "2026-10-07","mode": "record","groupKey": "","groupCount": ""}
aggregate=true, groupBy=licenseType - the register's trade mix:
Electrical 109,837Residential Contractors 59,290Plumbing 36,923Boiler 34,973High Pressure Piping 7,493
Source
- Minnesota DLI Construction Codes and Licensing data - the official public license register this actor reads.
- License data is DLI's own published register; it reflects the state's record as of the refresh.