# Illinois License Leads Scraper - Realtors, Doctors, CPAs & Pros (`scrapesage/illinois-license-leads-scraper`) Actor

Scrape 4M+ Illinois IDFPR licensed pros across 60+ boards: realtors, doctors, nurses, dentists, CPAs, engineers, cosmetologists, vets, contractors & more. Get name, city/county/ZIP, license number, type, status, issue & expiration dates plus disciplinary history. Filter by profession & location.

- **URL**: https://apify.com/scrapesage/illinois-license-leads-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 license lead records

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Illinois License Leads Scraper — Realtors, Doctors, CPAs, Contractors & 60+ Pro Boards

Extract **clean, structured B2B leads from 4.1 million+ Illinois professional licenses** — the official IDFPR (Illinois Department of Financial & Professional Regulation) public record, unified into one schema. Real-estate brokers & salespersons, physicians, nurses, dentists, pharmacists, **CPAs, engineers, architects, cosmetologists, veterinarians, counselors, social workers, roofing contractors, funeral directors, private detectives, cannabis agents** and 60+ boards in all — each with the licensee or business name (already parsed), city/county/ZIP, license number, type, status, issue & **expiration dates**, and — uniquely — **full disciplinary history**.

No login, no API key, no browser — fast JSON extraction straight from the State of Illinois open-data portal, with server-side filtering and a built-in **monitor mode**.

### Why this Illinois license scraper?

Most "Illinois license" actors are narrow single-name lookup tools. This actor is a **bulk lead-gen engine across every IDFPR board**, and it ships the **richest dataset in the category**:

| Data | Typical lookup scrapers | This actor |
|---|---|---|
| 60+ professions in one schema | ❌ one board | ✅ all boards |
| Bulk pull (thousands of leads/run) | ❌ one lookup | ✅ |
| Licensee name parsed (first/middle/last/suffix) | partial | ✅ |
| Business / firm name + DBA | partial | ✅ |
| City / county / ZIP | partial | ✅ |
| License number, type & granular description | ✅ | ✅ |
| Status + normalized active flag | partial | ✅ |
| Issue + **expiration date** (renewal timing) | ❌ | ✅ |
| **Disciplinary history** (case, action, reason, dates) | ❌ | ✅ |
| Controlled-substance schedule & specialty | ❌ | ✅ |
| Lead score (0–100) + signals | ❌ | ✅ |
| Monitor mode (only new / changed) | ❌ | ✅ |

### Use cases

- **Lead generation** — sell to or recruit licensed professionals: insurance, E&O, payroll, EHR/practice-management software, marketing agencies, lenders, CE providers, staffing & recruiters. Filter to active + business + newly licensed and reach them by name, firm, and location.
- **Renewal-timing campaigns** — use `expiringWithinDays` to find licenses up for renewal in the next 30/60/90 days — the highest-intent window for insurance, CE, and software renewals.
- **Recruiting & staffing** — pull every active RN, physician, dentist, engineer, CPA, or cosmetologist in a county or ZIP and build a sourcing list.
- **Compliance, risk & due diligence** — set `onlyDisciplined` to surface every license with a sanction (suspended, revoked, probation) plus the case number, action, and reason — for background screening, insurance underwriting, legal, and journalism.
- **Market & TAM analysis** — count and segment professionals by board, city, county, and recency to size a market or plan territory coverage.
- **CRM enrichment & monitoring** — schedule recurring runs with monitor mode to capture only newly issued or changed licenses.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Illinois License Leads Scraper**, pick one or more **professions / boards**, optionally add cities/counties/ZIPs and a status filter, and click **Start**.
3. Watch leads stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "licenseTypes": ["REAL ESTATE"],
    "descriptionContains": "MANAGING BROKER",
    "statusFilter": "active",
    "cities": ["CHICAGO", "NAPERVILLE"],
    "entityType": "individual",
    "expiringWithinDays": 90,
    "sortBy": "expiringSoon",
    "maxResults": 500
}
````

- **licenseTypes** *(default `["REAL ESTATE"]`)* — one or more of the 60+ IDFPR boards (Medical Board, Nursing Board, Dental, Pharmacy, Public Accountant, Prof. Engineer, Architect, Cosmo, Veterinary, Roofing Contractor, Detective Board, and more).
- **descriptionContains** — target a specific license within a board, e.g. `BROKER`, `REGISTERED NURSE`, `DISPENSARY`, `SALON`.
- **statusFilter** *(default `active`)* — `active`, `inactive` (lapsed), or `all`. Or set **licenseStatuses** for exact raw values.
- **entityType** — `any`, `individual`, or `business`.
- **cities / counties / zipCodes / states** — location filters (case-insensitive).
- **onlyDisciplined** — only licenses with a disciplinary action on record.
- **excludeEducationRecords** *(default true)* — drop CE/pre-license course & sponsor noise so you only get real professional leads.
- **expiringWithinDays / issuedAfter / minLeadScore** — renewal-timing, freshly-licensed, and quality filters.
- **sortBy** — `leadScore`, `newestIssued`, `oldestIssued`, `expiringSoon`, `recentlyDisciplined`, `name`, or `source`.
- **maxResults** *(default 100)* — how many leads to return (each is one billed result).
- **monitorMode / monitorKey** — emit only NEW or CHANGED licenses across runs (see below).

### Output

One record per license (disciplinary actions for the same license are merged into a single record):

```json
{
    "state2": "IL",
    "category": "Real Estate",
    "boardLabel": "Real Estate Brokers, Salespersons, Leasing Agents & Firms",
    "licenseType": "REAL ESTATE",
    "description": "LICENSED REAL ESTATE MANAGING BROKER",
    "licenseNumber": "471012345",
    "status": "Active",
    "licenseStatus": "ACTIVE",
    "isActive": true,
    "recordType": "individual",
    "name": "Maria T Gonzalez",
    "firstName": "Maria",
    "middleName": "T",
    "lastName": "Gonzalez",
    "suffix": null,
    "businessName": null,
    "businessDba": null,
    "city": "Chicago",
    "state": "IL",
    "zip": "60614",
    "county": "Cook",
    "fullLocation": "Chicago, IL 60614",
    "specialtyQualifier": null,
    "controlledSubstanceSchedule": null,
    "originalIssueDate": "2014-05-02",
    "effectiveDate": "2024-04-30",
    "expirationDate": "2026-04-30",
    "expiresInDays": 311,
    "isExpiringSoon": false,
    "isExpired": false,
    "businessAgeYears": 12.1,
    "isNewlyLicensed": false,
    "everDisciplined": false,
    "disciplinaryActionCount": 0,
    "hasActiveDisciplinaryAction": false,
    "latestDisciplineAction": null,
    "disciplinaryActions": [],
    "lastModifiedDate": "2024-04-30",
    "licenseLookupUrl": "https://online-dfpr.micropact.com/lookup/licenselookup.aspx",
    "leadScore": 71,
    "leadSignals": [],
    "scrapedAt": "2026-06-23T12:00:00.000Z"
}
```

A disciplined record additionally carries `everDisciplined: true`, a `disciplinaryActionCount`, and a `disciplinaryActions` array of `{ caseNumber, action, reason, startDate, endDate }`.

### Monitor mode (only new / changed leads)

Turn on **monitorMode** and the actor remembers every license it has emitted (keyed by your **monitorKey**) and, on later runs, returns **only NEW or CHANGED** licenses — change is detected on status, expiration date, last-modified date, or a new disciplinary action. This is ideal for daily/weekly lead pipelines so you never pay for or re-import the same record twice.

Monitor mode is **independent of [Apify Schedules](https://docs.apify.com/platform/schedules)** — it tracks its own state in a key-value store, so you can run it manually or on a schedule and it still only surfaces fresh records. Use a distinct `monitorKey` per saved search so each tracks its own history.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly with monitor mode to capture newly issued or renewed licenses; perfect for lead pipelines and CRM sync.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/illinois-license-leads-scraper').call({
    licenseTypes: ['NURSING BOARD'],
    descriptionContains: 'REGISTERED NURSE',
    cities: ['CHICAGO'],
    statusFilter: 'active',
    maxResults: 1000,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} Illinois license leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new license leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new licenses.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find active Chicago real-estate managing brokers whose license expires in the next 90 days" and let it run this scraper for you.

### More US lead-gen scrapers from scrapesage

Build a complete **state-by-state license & B2B lead stack**:

- **[Virginia License Leads Scraper](https://apify.com/scrapesage/virginia-license-leads-scraper)** — VA DPOR contractors, realtors, appraisers & pros, with e-mail of record.
- **[Florida License Leads Scraper](https://apify.com/scrapesage/florida-license-leads-scraper)** — 18 Florida DBPR boards: construction, real estate, CAMs, veterinary, cosmetology & more.
- **[US Contractor License Scraper](https://apify.com/scrapesage/us-contractor-license-scraper)** — licensed contractors (CA, WA, OR).
- **[US Professional License Scraper](https://apify.com/scrapesage/us-professional-license-scraper)** — TDLR & multi-state professional licenses.
- **[US Real Estate License Scraper](https://apify.com/scrapesage/us-real-estate-license-scraper)** — real-estate agents & brokers (NY, TX, CO).
- **[Texas Business Leads Scraper](https://apify.com/scrapesage/texas-business-leads-scraper)** — Texas sales-tax-permit business registry.
- **[BuildZoom Scraper](https://apify.com/scrapesage/buildzoom-scraper)** — contractors, permits & project history.
- **[NPI NPPES Scraper](https://apify.com/scrapesage/npi-nppes-scraper)** — every US healthcare provider by NPI, taxonomy & location.
- **[Healthgrades Scraper](https://apify.com/scrapesage/healthgrades-scraper)** — doctors, specialties, ratings & practice data.
- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — turn any domain into emails, phones & socials (pair to enrich these leads).

### Tips

- **Fast, focused pulls**: pick one board + a city/county and a status of `active` — you'll get exact lead-score ranking in seconds.
- **Huge boards (Nursing, Real Estate, Cosmo, Detective)**: narrow by `cities`, `counties`, `zipCodes`, or `descriptionContains` so the scan window covers your whole target. Raise `scanLimit` only if you need to rank across an entire statewide board.
- **Renewal campaigns**: combine `statusFilter: active` + `expiringWithinDays` + `sortBy: expiringSoon`.
- **Compliance lists**: `onlyDisciplined: true` + `sortBy: recentlyDisciplined`.
- **No double-paying**: turn on `monitorMode` for recurring runs.

### FAQ

**Where does the data come from?** The State of Illinois open-data portal — the official IDFPR "Professional Licensing" (Bulk License Lookup) dataset, published under the Illinois FOIA / Open Data initiative and refreshed weekly. No API key or login required.

**Do records include phone or email?** No. Illinois publishes name, location (city/county/ZIP), license details, dates, and disciplinary history — not contact details. To append emails/phones, pair the output with the **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** or your own enrichment.

**How many professions are covered?** 60+ IDFPR boards — real estate, all healthcare boards (medical, nursing, dental, pharmacy, optometry, podiatry, veterinary, PT/OT, etc.), behavioral health, cosmetology/barbering, engineering & architecture, public accounting, collection agencies, auctioneers, private detectives & security, funeral & cemetery, cannabis, and more.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I get only newly issued or changed licenses?** Turn on `monitorMode` (optionally with a `monitorKey`) and run on a [Schedule](https://docs.apify.com/platform/schedules); only NEW or CHANGED records are emitted.

**A field is null — why?** Fields are `null` only when Illinois doesn't publish that value for the record (e.g. an individual has no business name, or a license has no specialty qualifier) — never because the scraper skipped it.

**Is scraping this data legal?** It is public-record data published by the State of Illinois. You are responsible for using it in compliance with applicable laws (e.g. TCPA/CAN-SPAM for outreach, FCRA where applicable) and the data portal's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `licenseTypes` (type: `array`):

Which Illinois IDFPR boards to pull. Each value is one of the 60+ official license-type categories. Leave a single profession for fast, focused lead pulls; add several to merge them into one dataset.

## `descriptionContains` (type: `string`):

Optional keyword to target a specific license within the selected board(s) — matched against the granular license description. E.g. "BROKER", "MANAGING BROKER", "REGISTERED NURSE", "DISPENSARY", "SALON".

## `statusFilter` (type: `string`):

Active = currently active licenses only (best for outreach). Inactive = everything not active (not renewed, expired, cancelled, etc.). All = no status filter.

## `licenseStatuses` (type: `array`):

Optional. Target one or more exact raw status values (overrides the simple status filter). Examples: ACTIVE, NOT RENEWED, EXPIRED, SUSPENDED, REVOKED, PROBATION.

## `entityType` (type: `string`):

Limit to individual licensees, business/firm licensees, or both.

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

Optional list of cities to include (e.g. CHICAGO, NAPERVILLE, SPRINGFIELD). Case-insensitive. Clear it to pull statewide.

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

Optional list of counties to include (e.g. COOK, DUPAGE, LAKE, WILL).

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

Optional list of 5-digit ZIP codes to include.

## `states` (type: `array`):

Optional. Most licensees are in IL; some live out of state. Restrict to specific 2-letter state codes if needed (e.g. IL, IN, WI).

## `onlyDisciplined` (type: `boolean`):

Return only licenses that have at least one disciplinary action on record (compliance, risk, legal & journalism use cases).

## `excludeEducationRecords` (type: `boolean`):

Drop continuing-education sponsor/course/instructor and pre-license course records (kept on by default so you only get real professional leads).

## `nameQuery` (type: `string`):

Optional case-insensitive substring match on licensee or business name.

## `businessNameQuery` (type: `string`):

Optional case-insensitive substring match on the business / DBA name only.

## `expiringWithinDays` (type: `integer`):

Optional. Keep only licenses whose expiration date is within the next N days — perfect renewal-timing prospecting (insurance, CE providers, software).

## `issuedAfter` (type: `string`):

Optional. Keep only licenses originally issued on or after this date — surface freshly-licensed professionals.

## `minLeadScore` (type: `integer`):

Optional 0-100 floor on the computed lead score.

## `sortBy` (type: `string`):

Ordering of the emitted leads.

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

Maximum number of license lead records to return (each is one billed result).

## `includeDisciplinaryDetails` (type: `boolean`):

Include the per-license array of disciplinary actions (case number, action, reason, dates). Summary fields are always included.

## `includeRawFields` (type: `boolean`):

Attach the original IDFPR source row(s) for each record under sourceFields.

## `scanLimit` (type: `integer`):

Maximum number of source rows to scan before ranking (bounds run time on very large boards). Increase for exact ranking across an entire huge board; narrow your filters instead when possible.

## `monitorMode` (type: `boolean`):

Remember licenses across runs and emit only NEW or CHANGED ones (status, expiration, last-modified or disciplinary change). Runs independently of Apify Schedules.

## `monitorKey` (type: `string`):

Namespace for monitor state so different saved searches track their own history. Use a short label (letters, numbers, hyphens).

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

The Illinois open-data API is clean; the default Apify proxy simply rotates IPs across pages. You can disable it.

## Actor input object example

```json
{
  "licenseTypes": [
    "REAL ESTATE"
  ],
  "descriptionContains": "BROKER",
  "statusFilter": "active",
  "entityType": "any",
  "cities": [
    "CHICAGO"
  ],
  "onlyDisciplined": false,
  "excludeEducationRecords": true,
  "issuedAfter": "2025-01-01",
  "sortBy": "newestIssued",
  "maxResults": 100,
  "includeDisciplinaryDetails": true,
  "includeRawFields": true,
  "scanLimit": 30000,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All Illinois IDFPR license lead records as JSON items in the default dataset.

# 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 = {
    "licenseTypes": [
        "REAL ESTATE"
    ],
    "cities": [
        "CHICAGO"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/illinois-license-leads-scraper").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 = {
    "licenseTypes": ["REAL ESTATE"],
    "cities": ["CHICAGO"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/illinois-license-leads-scraper").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 '{
  "licenseTypes": [
    "REAL ESTATE"
  ],
  "cities": [
    "CHICAGO"
  ],
  "maxResults": 100
}' |
apify call scrapesage/illinois-license-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/illinois-license-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Illinois License Leads Scraper - Realtors, Doctors, CPAs & Pros",
        "description": "Scrape 4M+ Illinois IDFPR licensed pros across 60+ boards: realtors, doctors, nurses, dentists, CPAs, engineers, cosmetologists, vets, contractors & more. Get name, city/county/ZIP, license number, type, status, issue & expiration dates plus disciplinary history. Filter by profession & location.",
        "version": "0.1",
        "x-build-id": "Z0qpkKCKM43yFskkH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapesage~illinois-license-leads-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapesage-illinois-license-leads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapesage~illinois-license-leads-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapesage-illinois-license-leads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapesage~illinois-license-leads-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapesage-illinois-license-leads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "licenseTypes": {
                        "title": "Professions / boards",
                        "type": "array",
                        "description": "Which Illinois IDFPR boards to pull. Each value is one of the 60+ official license-type categories. Leave a single profession for fast, focused lead pulls; add several to merge them into one dataset.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "REAL ESTATE",
                                "APPRAISAL",
                                "COMM ASSOC MGR",
                                "HOME INSPECTOR",
                                "TIME SHARE LAND SALES",
                                "MEDICAL BOARD",
                                "NURSING BOARD",
                                "ADV PRACTICE NURSE",
                                "PHYSICIAN ASSISTANT",
                                "DENTAL",
                                "PHARMACY",
                                "OPTOMETRY",
                                "PODIATRY",
                                "VETERINARY",
                                "PHYSICAL THERAPY",
                                "OCCUPATIONAL THERAPY",
                                "RESPIRATORY CARE",
                                "SPEECH-LANGUAGE PATH",
                                "ACUPUNCTURE",
                                "DIETETIC AND NUTRITION",
                                "ATHLETIC TRAINER",
                                "NURSING HOME ADMIN",
                                "SURGICAL ASSIST-TECH",
                                "PERFUSION",
                                "ORTHO,PROST.,PEDORTH",
                                "NAPRAPATHY",
                                "MIDWIFERY BOARD",
                                "MUSIC THERAPY BOARD",
                                "ENVIRON. HLTH PRACT",
                                "HME AND SERVICES PROV",
                                "MEDICAL CORP",
                                "CLIN PSYCHOLOGIST",
                                "SOCIAL WORKER",
                                "PROF. COUNSELOR",
                                "MAR AND FAM THERAPIST",
                                "SEX OFFENDER PROVIDER",
                                "ADVISORY BD OF BEHAV",
                                "COSMO",
                                "MASSAGE LICENSING BD",
                                "ROOFING CONTRACTOR",
                                "PROF. ENGINEER",
                                "STRUCTURAL ENGINEER",
                                "ARCHITECT",
                                "LANDSCAPE ARCHITECT",
                                "LAND SURVEYOR BOARD",
                                "GEOLOGY",
                                "INTERIOR DESIGN",
                                "DESIGN FIRM",
                                "PUBLIC ACCOUNTANT",
                                "COLLECTION AGENCY",
                                "AUCTIONEER",
                                "SHORTHAND REPORTER",
                                "DETECT. DECEPTION",
                                "ATHLETE AGENT",
                                "ATHLETICS",
                                "DETECTIVE BOARD",
                                "FUNERAL AND EMBALMER",
                                "CEMETERY OVERSIGHT",
                                "ADULT USE CANNABIS BD",
                                "MEDICAL CANNABIS BD",
                                "PROF SERVICE CORP",
                                "LIMITED LIABILITY CO",
                                "IDPR"
                            ],
                            "enumTitles": [
                                "Real Estate — Brokers, Salespersons, Leasing Agents & Firms",
                                "Real Estate Appraisers & AMCs",
                                "Community Association (HOA) Managers",
                                "Home Inspectors",
                                "Time Share & Land Sales Agents",
                                "Physicians & Surgeons (Medical Board)",
                                "Nurses — RN, LPN & CNA",
                                "Advanced Practice Registered Nurses",
                                "Physician Assistants",
                                "Dentists & Dental Hygienists",
                                "Pharmacists, Techs & Pharmacies",
                                "Optometrists",
                                "Podiatric Physicians",
                                "Veterinarians & Vet Techs",
                                "Physical Therapists",
                                "Occupational Therapists",
                                "Respiratory Care Practitioners",
                                "Speech-Language Pathologists & Audiologists",
                                "Acupuncturists",
                                "Dietitians & Nutrition Counselors",
                                "Athletic Trainers",
                                "Nursing Home Administrators",
                                "Surgical Assistants & Technologists",
                                "Perfusionists",
                                "Orthotists, Prosthetists & Pedorthists",
                                "Naprapaths",
                                "Certified Professional Midwives",
                                "Music Therapists",
                                "Environmental Health Practitioners",
                                "Home Medical Equipment & Services Providers",
                                "Medical Corporations",
                                "Clinical Psychologists",
                                "Social Workers (LSW/LCSW)",
                                "Professional Counselors (LPC/LCPC)",
                                "Marriage & Family Therapists",
                                "Sex Offender Evaluators & Treatment Providers",
                                "Behavior Analysts",
                                "Cosmetologists, Barbers, Nail, Esthetics & Salons",
                                "Massage Therapists",
                                "Roofing Contractors",
                                "Professional Engineers",
                                "Structural Engineers",
                                "Architects",
                                "Landscape Architects",
                                "Professional Land Surveyors",
                                "Professional Geologists",
                                "Registered Interior Designers",
                                "Professional Design Firms",
                                "Certified Public Accountants (CPA) & Firms",
                                "Collection Agencies",
                                "Auctioneers & Auction Firms",
                                "Certified Shorthand Reporters",
                                "Polygraph (Detection of Deception) Examiners",
                                "Athlete Agents",
                                "Athletics — Boxing/MMA",
                                "Private Detectives, Security & Alarm (PERC)",
                                "Funeral Directors & Embalmers",
                                "Cemetery Authorities & Sales Staff",
                                "Adult Use Cannabis — Dispensaries & Agents",
                                "Medical Cannabis — Dispensaries & Agents",
                                "Professional Service Corporations",
                                "Professional LLCs",
                                "IDFPR Department & Misc."
                            ]
                        },
                        "default": [
                            "REAL ESTATE"
                        ]
                    },
                    "descriptionContains": {
                        "title": "License description contains",
                        "type": "string",
                        "description": "Optional keyword to target a specific license within the selected board(s) — matched against the granular license description. E.g. \"BROKER\", \"MANAGING BROKER\", \"REGISTERED NURSE\", \"DISPENSARY\", \"SALON\"."
                    },
                    "statusFilter": {
                        "title": "License status",
                        "enum": [
                            "active",
                            "all",
                            "inactive"
                        ],
                        "type": "string",
                        "description": "Active = currently active licenses only (best for outreach). Inactive = everything not active (not renewed, expired, cancelled, etc.). All = no status filter.",
                        "default": "active"
                    },
                    "licenseStatuses": {
                        "title": "Exact license statuses (advanced)",
                        "type": "array",
                        "description": "Optional. Target one or more exact raw status values (overrides the simple status filter). Examples: ACTIVE, NOT RENEWED, EXPIRED, SUSPENDED, REVOKED, PROBATION.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "entityType": {
                        "title": "Individual or business",
                        "enum": [
                            "any",
                            "individual",
                            "business"
                        ],
                        "type": "string",
                        "description": "Limit to individual licensees, business/firm licensees, or both.",
                        "default": "any"
                    },
                    "cities": {
                        "title": "Cities",
                        "type": "array",
                        "description": "Optional list of cities to include (e.g. CHICAGO, NAPERVILLE, SPRINGFIELD). Case-insensitive. Clear it to pull statewide.",
                        "default": [
                            "CHICAGO"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "counties": {
                        "title": "Counties",
                        "type": "array",
                        "description": "Optional list of counties to include (e.g. COOK, DUPAGE, LAKE, WILL).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "zipCodes": {
                        "title": "ZIP codes",
                        "type": "array",
                        "description": "Optional list of 5-digit ZIP codes to include.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "states": {
                        "title": "States",
                        "type": "array",
                        "description": "Optional. Most licensees are in IL; some live out of state. Restrict to specific 2-letter state codes if needed (e.g. IL, IN, WI).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "onlyDisciplined": {
                        "title": "Only licensees with disciplinary history",
                        "type": "boolean",
                        "description": "Return only licenses that have at least one disciplinary action on record (compliance, risk, legal & journalism use cases).",
                        "default": false
                    },
                    "excludeEducationRecords": {
                        "title": "Exclude CE / pre-license course records",
                        "type": "boolean",
                        "description": "Drop continuing-education sponsor/course/instructor and pre-license course records (kept on by default so you only get real professional leads).",
                        "default": true
                    },
                    "nameQuery": {
                        "title": "Name contains",
                        "type": "string",
                        "description": "Optional case-insensitive substring match on licensee or business name."
                    },
                    "businessNameQuery": {
                        "title": "Business name contains",
                        "type": "string",
                        "description": "Optional case-insensitive substring match on the business / DBA name only."
                    },
                    "expiringWithinDays": {
                        "title": "Expiring within N days",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Optional. Keep only licenses whose expiration date is within the next N days — perfect renewal-timing prospecting (insurance, CE providers, software)."
                    },
                    "issuedAfter": {
                        "title": "Issued after (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Optional. Keep only licenses originally issued on or after this date — surface freshly-licensed professionals."
                    },
                    "minLeadScore": {
                        "title": "Minimum lead score",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Optional 0-100 floor on the computed lead score."
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "leadScore",
                            "newestIssued",
                            "oldestIssued",
                            "expiringSoon",
                            "recentlyDisciplined",
                            "name",
                            "source"
                        ],
                        "type": "string",
                        "description": "Ordering of the emitted leads.",
                        "default": "newestIssued"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of license lead records to return (each is one billed result).",
                        "default": 100
                    },
                    "includeDisciplinaryDetails": {
                        "title": "Include full disciplinary actions",
                        "type": "boolean",
                        "description": "Include the per-license array of disciplinary actions (case number, action, reason, dates). Summary fields are always included.",
                        "default": true
                    },
                    "includeRawFields": {
                        "title": "Include raw source fields",
                        "type": "boolean",
                        "description": "Attach the original IDFPR source row(s) for each record under sourceFields.",
                        "default": true
                    },
                    "scanLimit": {
                        "title": "Source-row scan limit",
                        "minimum": 1000,
                        "maximum": 300000,
                        "type": "integer",
                        "description": "Maximum number of source rows to scan before ranking (bounds run time on very large boards). Increase for exact ranking across an entire huge board; narrow your filters instead when possible.",
                        "default": 30000
                    },
                    "monitorMode": {
                        "title": "Monitor mode (only new / changed)",
                        "type": "boolean",
                        "description": "Remember licenses across runs and emit only NEW or CHANGED ones (status, expiration, last-modified or disciplinary change). Runs independently of Apify Schedules.",
                        "default": false
                    },
                    "monitorKey": {
                        "title": "Monitor key",
                        "type": "string",
                        "description": "Namespace for monitor state so different saved searches track their own history. Use a short label (letters, numbers, hyphens).",
                        "default": "default"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "The Illinois open-data API is clean; the default Apify proxy simply rotates IPs across pages. You can disable it.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
