# IDFPR Illinois License Lookup - Roofing Contractors & Firms (`loomwise/illinois-idfpr-business-licenses`) Actor

Illinois IDFPR license list and lookup, businesses only: licensed roofing contractors, design firms, home inspectors, real estate firms and more, with status, dates, city, county.

- **URL**: https://apify.com/loomwise/illinois-idfpr-business-licenses.md
- **Developed by:** [Loomwise](https://apify.com/loomwise) (community)
- **Categories:** Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## IDFPR Illinois License Lookup: roofing contractors, design firms and licensed businesses

**Illinois licensed businesses from the official IDFPR license database, as a spreadsheet.** Licensed **roofing contractors**, architecture and engineering **design firms**, **home inspection companies**, alarm/security/locksmith agencies, real estate brokerages, CPA firms, HOA management firms and more. Each row has the business name, IDFPR license number, license type, status, original issue and expiration dates, discipline flag, city, county and ZIP.

**Sample output** (real rows, a few of the columns):

| `businessName` | `licenseType` | `licenseNumber` | `originalIssueDate` | `city` | `county` |
|---|---|---|---|---|---|
| SAMMY ROOFING CONSTRUCTION LLC | LICENSED ROOFING CONTRACTOR | 104021273 | 2026-11-06 | Macomb | Mcdonough |
| NAIL CONSTRUCT LLC | LICENSED ROOFING CONTRACTOR | 104021274 | 2026-11-06 | Lake Forest | Lake |
| ASN ENGINEERING LLC | DESIGN FIRM - PROF/STRUCT ENGINEER | 184009858-0006 | 2026-11-04 | Merrillville | Lake |
| CISTARO INCORPORATED | LICENSED HOME INSPECTOR ENTITY | 451001528 | 2026-10-27 | Spring Grove | Lake |

More than **50,000 active business licenses** across 16 IDFPR business categories, with **5,000+ licensed roofing contractors** and **3,900+ design firms**. Hundreds of new business licenses are issued every month. Use it three ways:

1. **New-license leads.** Set `issuedWithinDays` (for example 30) to get every business IDFPR licensed in that window, newest first. Schedule it weekly for a fresh feed of new Illinois roofing contractors or design firms.
2. **Full Illinois license list.** Leave `issuedWithinDays` at 0 and pick categories, counties, cities or ZIP prefixes to export the full active list for a territory.
3. **Bulk IDFPR license lookup / verification.** Paste license numbers into `licenseNumbers` to check status, expiration date and discipline for a whole subcontractor or vendor list in one run.

**Free to try:** Apify's free plan ($5/month in credit, no card needed) covers about **1,600 records** a month.
**Price:** $3.00 per 1,000 results.

No browser, no proxies, no login, no API key. The Actor reads the State of Illinois open-data API, so runs take seconds.

### Business categories (`categories`)

| Code | What you get |
|---|---|
| `roofing` | Licensed roofing contractors (limited and unlimited) |
| `design_firms` | Architecture, professional engineering, structural engineering and land-surveying design firms |
| `home_inspection` | Licensed home inspection companies |
| `alarm_security_locksmith` | Private alarm contractor, security contractor, detective and locksmith agencies |
| `real_estate` | Real estate brokerages (corporations, LLCs, partnerships), branch and virtual offices |
| `community_association_mgmt` | Community association (HOA) management firms |
| `appraisal_mgmt` | Appraisal management companies |
| `accounting_firms` | Public accounting (CPA) firms |
| `collection_agencies` | Collection agencies and branch offices |
| `auction_firms` | Auction firms |
| `salons_barbershops` | Salon and barbershop registrations |
| `pharmacies` | Pharmacies, wholesale drug distributors and 3PLs |
| `medical_professional_corps` | Medical corporations, professional service corporations and professional LLCs |
| `home_medical_equipment` | Home medical equipment providers |
| `cannabis_dispensaries` | Adult-use and medical cannabis dispensing organizations |
| `cemeteries` | Licensed cemeteries |

### What you get

| Field | Example |
|---|---|
| `businessName` / `dbaName` | SAMMY ROOFING CONSTRUCTION LLC |
| `licenseNumber`, `licenseType`, `licenseBoard`, `category` | 104021273, LICENSED ROOFING CONTRACTOR, ROOFING CONTRACTOR, roofing |
| `licenseStatus` | Active, Not Renewed, Expired, Suspended, Revoked... |
| `entityOrScope` | Roofing: LIMITED / UNLIMITED. Design firms: Corporation, LLC... |
| `originalIssueDate`, `effectiveDate`, `expirationDate` | 2026-11-06, 2026-11-06, 2027-12-31 |
| `city`, `county`, `state`, `zipCode` | Macomb, Mcdonough, IL, 61455 |
| `everDisciplined`, `disciplineCaseNumber`, `disciplineAction`, `disciplineStartDate` | false |
| `verifyUrl`, `sourceUrl`, `sourceAgency`, `retrievedAt` | official IDFPR lookup and dataset links |

IDFPR's open data has no street address or phone number. City, county and ZIP are included.

### Input

| Field | What it does | Default |
|---|---|---|
| `categories` | Business categories above | all |
| `issuedWithinDays` | Only licenses first issued in the last N days (0 = any) | 0 |
| `issuedFrom` / `issuedTo` | Exact original-issue-date window | none |
| `licenseNumbers` | Bulk lookup: only these license numbers, any status | none |
| `counties` / `cities` / `zipCodes` | Territory filters | all |
| `keywords` | Business name or DBA contains | none |
| `illinoisOnly` | Skip out-of-state firms holding an Illinois license | false |
| `activeOnly` | Active licenses only | true |
| `includeDiscipline` | Discipline case number, action and dates | true |
| `includeEducationProviders` | Also return schools, courses and CE sponsors | false |
| `maxResults` | Cap (you pay per result) | 100 |

Example: roofing contractors newly licensed in Cook, DuPage and Will counties in the last 90 days:

```json
{ "categories": ["roofing"], "counties": ["COOK", "DUPAGE", "WILL"], "issuedWithinDays": 90, "maxResults": 1000 }
```

Example: every active architecture and engineering design firm in Chicago:

```json
{ "categories": ["design_firms"], "cities": ["CHICAGO"], "maxResults": 5000 }
```

Example: verify a list of Illinois license numbers:

```json
{ "licenseNumbers": ["104021273", "104021274"] }
```

### Output example

```json
{
  "businessName": "SAMMY ROOFING CONSTRUCTION LLC",
  "dbaName": null,
  "licenseNumber": "104021273",
  "licenseType": "LICENSED ROOFING CONTRACTOR",
  "licenseBoard": "ROOFING CONTRACTOR",
  "category": "roofing",
  "licenseStatus": "Active",
  "entityOrScope": "LIMITED",
  "originalIssueDate": "2026-11-06",
  "effectiveDate": "2026-11-06",
  "expirationDate": "2027-12-31",
  "city": "Macomb",
  "county": "Mcdonough",
  "state": "IL",
  "zipCode": "61455",
  "everDisciplined": false,
  "disciplineCaseNumber": null,
  "disciplineAction": null,
  "disciplineStartDate": null,
  "disciplineEndDate": null,
  "recordLastModified": "2026-11-05",
  "licensingState": "IL",
  "verifyUrl": "https://online-dfpr.micropact.com/lookup/licenselookup.aspx",
  "sourceAgency": "Illinois Department of Financial and Professional Regulation (IDFPR)",
  "source": "IDFPR Professional Licensing dataset, Illinois Open Data (data.illinois.gov)",
  "sourceUrl": "https://data.illinois.gov/d/pzzh-kp68",
  "retrievedAt": "2026-11-10T23:37:32.442Z"
}
```

`RUN_SUMMARY` in the key-value store shows rows scanned, results, rows dropped by the privacy filter, and the not-found list for license lookups.

### Who uses this

- **Roofing suppliers, distributors and equipment dealers** prospecting newly licensed Illinois roofing contractors.
- **Insurance, surety and bonding agents** (roofing contractors need a bond and liability insurance to get licensed).
- **Software and service vendors** selling to architecture/engineering firms, real estate brokerages, HOA managers or home inspectors.
- **General contractors, property managers and marketplaces** verifying roofing and design-firm licenses in bulk.

### Privacy by design

- **Business licenses only.** Only records IDFPR flags as business licenses are read. Any business row that still carries a person's first or last name is dropped (about 0.5% of rows).
- **No individual licensees and no personal-name columns** are ever requested from the API.
- **No free-text discipline narratives.** Only the case number, action type and dates.

### Common questions

**Is this data legal to use?** Yes. It is official State of Illinois open data published by IDFPR on data.illinois.gov. Under the Illinois Open Data Act (20 ILCS 45) public data sets are in the public domain and free to reuse. Results are lightly reformatted (dates as YYYY-MM-DD, names of cities and counties title-cased); every row links to the source dataset.

**How fresh is it?** IDFPR updates its bulk license data weekly; the single-license lookup on the IDFPR site updates daily. Each run queries the dataset live and every row has `retrievedAt`.

**How do I verify an Illinois roofing contractor license?** Paste the license number into `licenseNumbers` (or the company name into `keywords` with `activeOnly` off). You get status, expiration date and discipline. Confirm on the official IDFPR license lookup (`verifyUrl`) before you hire.

**How much does it cost?** Free to try with Apify's free plan ($5/month credit, no credit card), which covers about 1,600 records a month. After that it is $3.00 per 1,000 results, plus a fraction of a cent per run.

**Can I get new licenses automatically every week?** Yes. Save your filters as a task and add a weekly **Schedule** with `issuedWithinDays: 7`. Send each batch to Google Sheets, Slack, email, Zapier, Make or n8n under **Integrations**.

**Can I call it from code or an AI agent?** Yes. Use the Apify API or the Python/JavaScript clients, or connect it to Claude, ChatGPT or Cursor through the Apify MCP server.

Data: Illinois Department of Financial and Professional Regulation (IDFPR), Professional Licensing dataset on data.illinois.gov. Not affiliated with or endorsed by IDFPR or the State of Illinois.

### More contractor license tools from Loomwise

- [virginia-contractor-licenses](https://apify.com/loomwise/virginia-contractor-licenses): Virginia DPOR Class A, B and C contractor license lookup and list
- [colorado-electrical-plumbing-contractors](https://apify.com/loomwise/colorado-electrical-plumbing-contractors): Colorado electrical and plumbing contractor list and DORA license lookup: 7,800+ registered contractor businesses, new registrations and bulk lookup
- [us-contractor-licenses](https://apify.com/loomwise/us-contractor-licenses): contractor license lookup across 13 official sources in 9 states
- [california-contractor-licenses](https://apify.com/loomwise/california-contractor-licenses): CSLB California contractor license lookup and list
- [new-york-contractor-registry](https://apify.com/loomwise/new-york-contractor-registry): NYS Contractor Registry lookup and new contractors
- [wa-contractor-licenses](https://apify.com/loomwise/wa-contractor-licenses): Washington L\&I contractor licenses
- [oregon-contractor-licenses](https://apify.com/loomwise/oregon-contractor-licenses): Oregon CCB contractor licenses
- [texas-contractor-licenses](https://apify.com/loomwise/texas-contractor-licenses): Texas TDLR HVAC and electrical contractors
- [city-building-permits](https://apify.com/loomwise/city-building-permits): building permits from 50 US cities, including Chicago
- [delaware-business-licenses](https://apify.com/loomwise/delaware-business-licenses): Delaware Division of Revenue business license list (contractors, retailers, restaurants, hotels)

# Actor input Schema

## `categories` (type: `array`):

Which IDFPR business licenses to return. Leave empty for all business categories.

## `issuedWithinDays` (type: `integer`):

New-license leads: original issue date in the last N days. 0 = any issue date (full list).

## `issuedFrom` (type: `string`):

Optional exact start of the original-issue-date window.

## `issuedTo` (type: `string`):

Optional exact end of the window.

## `licenseNumbers` (type: `array`):

Bulk IDFPR license lookup: paste business license numbers (e.g. 104020210). Each is returned with its status, expiration date and discipline flag, whatever its status. Overrides categories and the active-only filter. Not-found numbers are listed in RUN_SUMMARY.

## `counties` (type: `array`):

Illinois counties, e.g. COOK, DUPAGE, LAKE, WILL.

## `cities` (type: `array`):

Exact city names, e.g. CHICAGO, NAPERVILLE.

## `zipCodes` (type: `array`):

e.g. 606 for Chicago.

## `keywords` (type: `array`):

e.g. roofing, exteriors, engineering.

## `illinoisOnly` (type: `boolean`):

Skip out-of-state firms that hold an Illinois license.

## `activeOnly` (type: `boolean`):

Turn off to include expired, not-renewed, suspended and revoked licenses. Ignored for license-number lookups.

## `includeDiscipline` (type: `boolean`):

Case number, action and dates when IDFPR has disciplined the license.

## `includeEducationProviders` (type: `boolean`):

Off by default: course and continuing-education registrations are not operating businesses.

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

Newest licenses first. You pay per result.

## Actor input object example

```json
{
  "categories": [
    "roofing"
  ],
  "issuedWithinDays": 365,
  "illinoisOnly": false,
  "activeOnly": true,
  "includeDiscipline": true,
  "includeEducationProviders": false,
  "maxResults": 100
}
```

# Actor output Schema

## `licenses` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# 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 = {
    "categories": [
        "roofing"
    ],
    "issuedWithinDays": 365,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("loomwise/illinois-idfpr-business-licenses").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 = {
    "categories": ["roofing"],
    "issuedWithinDays": 365,
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("loomwise/illinois-idfpr-business-licenses").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "categories": [
    "roofing"
  ],
  "issuedWithinDays": 365,
  "maxResults": 100
}' |
apify call loomwise/illinois-idfpr-business-licenses --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,loomwise/illinois-idfpr-business-licenses"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cLsYmmU19oDtFLniU/builds/vRywJGhs4cOXtWgg2/openapi.json
