← Health board

DLI

Minnesota Contractor License Lookup & Verify (DLI)

Verify any Minnesota residential contractor by license number or name — subtype, status, expiration, city & enforcement-action flag — from the official DLI registry.

100%golden-diff pass
Run it on Apify verified nightly

Verification

100%golden-diff success
301canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
statestring|null
license_numberstring|null
business_namestring|null
person_namestring|null
license_typestring|null
statusstring|null
issue_datestring|null
expiration_datestring|null
citystring|null
countystring|null
addressstring|null
zip_codestring|null
phonestring|null
enforcement_actionstring|null
renewal_in_progressstring|null
bond_amountstring|null
bond_companystring|null
insurance_companystring|null
matched_bystring|null
source_urlstring|null
scraped_atstring|null

Sample row

{
  "state": "MN",
  "license_number": "RR531208",
  "business_name": "RASSMUSSEN METAL ROOFING AND CONSTRUCTION INC (dba RMR CONSTRUCTION INC)",
  "person_name": null,
  "license_type": "Residential Contractors - Residential Roofer Contractor",
  "status": "REVOKED",
  "issue_date": "06/20/2005",
  "expiration_date": "03/31/2008",
  "city": "MINNEAPOLIS",
  "address": "5536 27TH AVE S",
  "zip_code": "55417",
  "phone": null,
  "enforcement_action": "1",
  "renewal_in_progress": null,
  "matched_by": "business_name",
  "source_url": "https://secure.doli.state.mn.us/ccld/data/MNDLILicRegCertExport_Residential_Contractors.csv"
}

Inputs

FieldTypeReqDefaultDescription
query string no "CONSTRUCTION" A Minnesota DLI residential-contractor license number, business name, or person name to verify or search. Searches by exact license number and by business/DBA name substring.
queries array no ["CONSTRUCTION"] Look up many in ONE run instead of starting a run per lookup. Takes the same values as 'Search query'. Combined with 'Search query' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per record returned, not per entry submitted.
maxResults integer no 50 Cap on matches returned PER QUERY (bounds cost) — not a per-run cap, so a batch cannot silently return only the first 50 rows overall and read as 'no match'.
enforcementOnly boolean no false When on, return only licensees with an active DLI enforcement action (revocation, suspension, etc.). Use this to monitor a name/keyword for disciplinary flags.
proxyConfiguration object no {"useApifyProxy":false} Optional. The Minnesota DLI roster CSV is reachable directly; a proxy is not needed.

Pricing

Pay per result (dataset-item) — no charge for empty runs.
Example: 100 verified license records at $0.004/result ≈ $0.40.

FAQ

Where does the data come from?

The official Minnesota Department of Labor & Industry (DLI) residential-contractor licensee roster — a public dataset the state refreshes nightly.

What can I search by?

A DLI license number (exact) or a business/person name (substring, matches the DBA name too). Both return the matching licenses, deduped by license number.

What's the enforcement-action flag?

DLI publishes whether a licensee has an enforcement action on record. We surface that flag on every result, and 'Enforcement monitor mode' returns only licensees currently under one.

What fields do I get?

License number, business/person name, license subtype, status, original and expiration dates, city, address, ZIP, phone (when published), the enforcement-action flag, and a renewal-in-progress flag.

How am I charged?

Pay-per-result — per license match returned. No charge for searches with no results.

Is this personal data?

It's public professional-license data as DLI publishes it. We deliberately skip the roster's email column and add no personal/PII enrichment.

Guides & use cases

Related actors