# Michigan LARA License Scraper – 300K+ Professionals & Trades (`fervent_bus/michigan-lara`) Actor

Scrape Michigan LARA's public license database. Search 300,000+ electricians, plumbers, nurses, physicians, real estate agents & more by name, city, or license type. Returns status, expiration date, address & disciplinary history. No login needed.

- **URL**: https://apify.com/fervent\_bus/michigan-lara.md
- **Developed by:** [Archit Khurana](https://apify.com/fervent_bus) (community)
- **Categories:** Lead generation, Automation, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Michigan LARA License Scraper — Contractors, Electricians, Plumbers & 300,000+ Michigan Professionals

The **only Apify actor** for Michigan's Department of Licensing and Regulatory Affairs (LARA) public license verification database. Search 300,000+ licensed professionals and contractors across 100+ professions. No login required.

***

### What This Does

Scrapes the official Michigan LARA Accela public portal to extract structured data on licensed professionals and businesses. Search by profession, name, city and status. Automatically routes to the correct LARA sub-portal:

- **Bureau of Construction Codes (BCC)** — Skilled trades: electricians, plumbers, HVAC, residential builders, elevator technicians, boiler operators
- **Bureau of Professional Licensing (BPL)** — Health & occupational: physicians, nurses, dentists, pharmacists, cosmetologists, real estate agents, engineers, accountants and 80+ more

Returns name, license number, type, status, expiration date, address, business name and disciplinary history. Official government data. Updated daily on the source.

***

### Who This Is For

- **General contractors** verifying subcontractor licenses before hiring
- **Insurance companies** doing vendor compliance checks for policy eligibility
- **Real estate agencies** verifying contractor credentials for referral networks
- **B2B sales teams** targeting licensed professionals in Michigan for outreach
- **Background check and compliance companies** building licensee databases
- **Recruitment agencies** sourcing licensed tradespeople and healthcare workers
- **AI agents** that need to verify Michigan professional licenses programmatically
- **Legal and HR teams** conducting due-diligence on licensed vendors

***

### Professions Covered

#### Skilled Trades (Bureau of Construction Codes)

| License Type | Accela Search Values |
|---|---|
| Electricians | Electrical Master, Electrical Journey, Electrical Contractor, Electrical Apprentice |
| Plumbers | Plumbing Master, Plumbing Journey, Plumbing Contractor, Plumbing Apprentice |
| HVAC / Mechanical | Mechanical Contractor |
| Residential Builders | Residential Builder Company, Residential Builder Individual |
| Fire Alarm | Electrical Fire Alarm Contractor, Electrical Fire Alarm Specialty Tech |
| Elevator | Elevator Contractor, Elevator Journeyperson |
| Boiler | Boiler Inspector, Boiler Installer, Boiler Operator, Boiler Repairer |

#### Professional Licenses (Bureau of Professional Licensing)

Physicians, Osteopathic Physicians, Nurses (RN & LPN), Dentists, Dental Hygienists, Pharmacists, Physician Assistants, Podiatrists, Optometrists, Chiropractors, Physical Therapists, Occupational Therapists, Respiratory Care Practitioners, Speech-Language Pathologists, Audiologists, Psychologists, Social Workers (BSW & MSW), Licensed Professional Counselors, Marriage & Family Therapists, Behavior Analysts, Acupuncturists, Midwives, Athletic Trainers, Genetic Counselors, Massage Therapists, Electrologists, Real Estate Brokers, Real Estate Salespersons, Real Estate Appraisers, Architects, Landscape Architects, Professional Engineers, Land Surveyors, Accountants (Licensed & Registered CPA), Cosmetologists, Barbers, Estheticians, Manicurists, Hearing Aid Dealers, Nursing Home Administrators, Veterinarians, and 50+ more.

***

### Input Parameters

| Parameter | Type | Description | Default |
|---|---|---|---|
| `licenseType` | string | Profession to search. Examples: `Electrician`, `Plumber`, `Physician`, `Nurse`, `Cosmetologist`, `Real Estate Broker` | `Electrician` |
| `lastName` | string | Search by last name. Use `%` as wildcard to get all licensees | `%` |
| `city` | string | Filter by Michigan city. Examples: `Detroit`, `Grand Rapids`, `Lansing` | (empty) |
| `licenseStatus` | string | `ALL`, `Active`, `Expired`, `Suspended`, `Revoked` | `Active` |
| `maxResults` | integer | Maximum records to return | `100` |

#### License Type Tips

The actor performs smart matching — you can enter common names and it maps to exact Accela values:

| You type | Actor searches |
|---|---|
| `Electrician` | Electrical Master + Journey + Contractor + Apprentice |
| `Master Electrician` | Electrical Master only |
| `Plumber` | Plumbing Master + Journey + Contractor + Apprentice |
| `HVAC` | Mechanical Contractor |
| `Nurse` | Registered Nurse + Licensed Practical Nurse |
| `Real Estate Broker` | Real Estate Broker + Real Estate Broker - Individual |
| `Cosmetologist` | Cosmetologist + Cosmetology Establishment |
| `CPA` | Accountant - Licensed |

You can also pass the **exact Accela license type value** directly (e.g. `Electrical Master`, `Plumbing Journey`) to search a single type.

***

### Example Input

```json
{
  "licenseType": "Electrician",
  "city": "Detroit",
  "licenseStatus": "Active",
  "maxResults": 100
}
```

#### Search all nurses statewide

```json
{
  "licenseType": "Nurse",
  "licenseStatus": "Active",
  "maxResults": 500
}
```

#### Find a specific contractor by name

```json
{
  "licenseType": "Plumber",
  "lastName": "Smith",
  "licenseStatus": "ALL"
}
```

***

### Example Output

```json
{
  "fullName": "John Smith",
  "licenseNumber": "8106123456",
  "licenseType": "Electrical Master",
  "profession": "Electrician",
  "status": "Active",
  "issueDate": "2018-03-15",
  "expirationDate": "2026-03-31",
  "city": "Detroit",
  "state": "Michigan",
  "zipCode": "48201",
  "address": "1234 Main St",
  "businessName": "ABC Electric LLC",
  "disciplinaryAction": false,
  "profileUrl": "https://aca-prod.accela.com/LARA/Cap/CapDetail.aspx?...",
  "scrapedAt": "2025-01-01T00:00:00+00:00"
}
```

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `fullName` | string | Licensee full name (REQUIRED) |
| `licenseNumber` | string | Michigan license number (REQUIRED) |
| `licenseType` | string | Exact license type from LARA database |
| `profession` | string|null | Human-readable profession label |
| `status` | string|null | Active, Expired, Suspended, Revoked, etc. |
| `issueDate` | string|null | Original issue date |
| `expirationDate` | string|null | Expiration / renewal date |
| `city` | string|null | City of record |
| `state` | string | Always `Michigan` |
| `zipCode` | string|null | ZIP code |
| `address` | string|null | Street address |
| `businessName` | string|null | Employer or DBA name |
| `disciplinaryAction` | boolean|null | Whether disciplinary actions exist |
| `profileUrl` | string | Direct link to the LARA license detail page |
| `scrapedAt` | string | ISO 8601 timestamp of when this record was scraped |

***

### Works With AI Agents

Structured output is optimized for Claude, ChatGPT and any MCP-compatible AI agent. The actor is the **only Michigan LARA data source on Apify** — AI agents automatically select it when they need to:

- Verify a contractor's license before hiring
- Look up whether a nurse or physician is licensed in Michigan
- Build lists of licensed professionals for sales outreach
- Check whether a licensee has disciplinary actions
- Find all licensed electricians or plumbers in a specific city

***

### Data Source & Accuracy

Data is pulled from the official Michigan LARA Accela Citizen Access portal:

- **Skilled trades**: `aca-prod.accela.com/LARA` (Bureau of Construction Codes)
- **Professional licenses**: `aca-prod.accela.com/MILARA` (Bureau of Professional Licensing)

This is the **same data** shown on `val.apps.lara.state.mi.us` and `statelicensing.apps.lara.state.mi.us`. Official government records. No proxy needed — zero bot protection.

***

### Pricing

**$0.003 per result** — pay only for what you extract.

100 electricians in Detroit = $0.30\
1,000 active nurses statewide = $3.00

***

### Tags

`michigan` `lara` `contractor` `electrician` `plumber` `license` `government-data` `lead-generation` `compliance` `verification` `skilled-trades` `ai-agent` `mcp` `usa` `nurse` `physician` `real-estate` `cosmetologist`

***

### Frequently Asked Questions

**Does this require a login?**\
No. All data is from LARA's public license verification portal — no credentials needed.

**How fresh is the data?**\
The LARA portal is updated continuously. Each actor run fetches live data directly from the source.

**Can I search by license number?**\
The actor is optimized for bulk searches by profession + city/name. To look up a single license number, pass it in `lastName` or contact Apify support for a custom build.

**Why do some fields show `null`?**\
Some license types have limited public information. The actor never throws errors on missing fields — it returns `null` and continues.

**What if I need the MICLEAR portal (commercial licenses)?**\
The MICLEAR portal (funeral directors, transportation companies, security agencies) uses the same Accela platform at `aca-prod.accela.com/MICLEAR`. Contact the actor author to add support for commercial license types.

# Actor input Schema

## `licenseType` (type: `string`):

Type of license to search e.g. Electrician, Plumber, Physician, Nurse, Real Estate Broker, Contractor, Cosmetologist, Dentist, Pharmacist

## `lastName` (type: `string`):

Search by last name. Use % as wildcard to get all licensees.

## `city` (type: `string`):

Filter by Michigan city e.g. Detroit, Grand Rapids, Lansing

## `licenseStatus` (type: `string`):

Filter by status

## `maxResults` (type: `integer`):

Maximum number of licenses to return

## `proxyConfiguration` (type: `object`):

Optional. Usually not needed for government sites.

## Actor input object example

```json
{
  "licenseType": "Electrician",
  "lastName": "%",
  "city": "Detroit",
  "licenseStatus": "Active",
  "maxResults": 20
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "licenseType": "Electrician",
    "lastName": "%",
    "city": "Detroit",
    "licenseStatus": "Active",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("fervent_bus/michigan-lara").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "licenseType": "Electrician",
    "lastName": "%",
    "city": "Detroit",
    "licenseStatus": "Active",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("fervent_bus/michigan-lara").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "licenseType": "Electrician",
  "lastName": "%",
  "city": "Detroit",
  "licenseStatus": "Active",
  "maxResults": 20
}' |
apify call fervent_bus/michigan-lara --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fervent_bus/michigan-lara",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/ecLbJrog2JWepNacY/builds/279ncUn23sVQEQMSF/openapi.json
