Illinois License Scraper | IDFPR 1.2M+ Records avatar

Illinois License Scraper | IDFPR 1.2M+ Records

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Illinois License Scraper | IDFPR 1.2M+ Records

Illinois License Scraper | IDFPR 1.2M+ Records

Extract 1.2M+ Illinois professional license records from IDFPR Socrata database. Pharmacy, nursing, physician, real estate & 100+ categories with discipline history & controlled substance data.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

11 days ago

Last modified

Share

Illinois IDFPR License Scraper — 1.2M+ Professional License Records Across 100+ Categories

The most comprehensive Illinois Department of Financial and Professional Regulation (IDFPR) data extractor on Apify. Pull the entire 1.2 million-record statewide license registry — nursing, medical, pharmacy, real estate, accountancy, dental, contractors, cosmetology, attorneys, architects, engineers, and 100+ more professional categories — directly from the official Illinois Socrata open-data API. Structured, deduplicated, discipline-flagged, and ready for compliance, recruiting, sales, credentialing, and analytics workflows in Chicago, the collar counties, and every Illinois market downstate.

Apify Actor


What This Actor Does

The Illinois IDFPR License Scraper is a production-ready Apify Actor that extracts the complete public license registry maintained by the Illinois Department of Financial and Professional Regulation (IDFPR) — the single state agency responsible for licensing virtually every regulated profession in Illinois. The dataset spans three IDFPR divisions: the Division of Professional Regulation, the Division of Real Estate, and the Division of Financial Institutions. Combined, these divisions oversee more than 1.2 million active and historical license records across 100+ professional categories practicing in Chicago, the suburbs, the collar counties (DuPage, Lake, Will, Kane, McHenry), and every downstate market from Rockford to Cairo.

In a single run, the actor returns structured JSON records covering every regulated practitioner in the state, including (but not limited to):

  • Nursing — registered nurses (RN), licensed practical nurses (LPN), advanced practice registered nurses (APRN/APN), certified nurse midwives, and nursing home administrators
  • Medical — physicians (MD/DO), physician assistants, podiatrists, optometrists, chiropractors, naprapaths, acupuncturists, perfusionists
  • Pharmacy — pharmacists, pharmacy technicians, and licensed pharmacy facilities with controlled-substance schedule data
  • Dental — dentists, dental hygienists, and dental assistants
  • Behavioral health — clinical psychologists, clinical social workers, licensed clinical professional counselors, marriage and family therapists
  • Allied health & therapy — physical therapists, occupational therapists, speech-language pathologists, dietitians, respiratory care therapists, athletic trainers, surgical technologists
  • Real estate — managing brokers, brokers, leasing agents, real estate appraisers, auctioneers, home inspectors
  • Accounting & finance — Certified Public Accountants (CPA), licensed public accountants, collection agencies, currency exchanges, pawn brokers
  • Design & engineering — architects, professional engineers (PE), structural engineers (SE), land surveyors, environmental health practitioners
  • Skilled trades & contracting — roofing contractors, plumbing-adjacent specialties (where IDFPR-licensed)
  • Cosmetology & personal care — cosmetologists, barbers, nail technicians, estheticians
  • Legal & investigations — attorneys (ARDC-coordinated), private detectives, shorthand court reporters
  • Veterinary & funeral — veterinarians, funeral directors and embalmers
  • Combat sports — licensed boxers, referees, and promoters under the Illinois State Athletic Commission

Each record includes the license number, IDFPR license type and description, normalized status, original issue / effective / expiration dates, mailing city / state / ZIP / county, specialty qualifier, controlled-substance schedule fields (where applicable), an everDisciplined flag, and — when discipline exists — the case number, action taken, start/end dates, and the IDFPR-recorded reason. The actor delivers this directly from Illinois's Socrata open-data API (data.illinois.gov/resource/pzzh-kp68.json), so you get the same dataset the State of Illinois publishes — without scraping HTML, solving CAPTCHAs, or building your own SoQL pipeline.


Why scrape IDFPR yourself when this exists?

IDFPR data is technically public. The pain is everywhere else. Teams that try to roll their own pipeline routinely hit:

  • IDFPR's consumer-facing License Lookup (ilesonline.idfpr.illinois.gov) is paginated, JS-rendered, single-record-at-a-time, and lacks bulk export
  • The Socrata pzzh-kp68 dataset is 1.2M+ rows — naive $limit=50000 paging without ordering returns duplicates and skips records
  • SoQL ($where) filter syntax requires precise quoting and upper() casing or your filters silently return zero rows
  • IDFPR mixes individual practitioners and business entities in the same table — you need to read business='Y' to separate them
  • 100+ license_type values with inconsistent capitalization and spelling drift across decades of data ("PHYSICIAN" vs "PHYSICIAN AND SURGEON" vs "MEDICAL CORPORATION")
  • Disciplinary fields live in separate columns (ever_disciplined, case_number, action, discipline_start_date, discipline_end_date, discipline_reason) and require joined logic
  • Socrata sometimes returns dates as ISO timestamps and sometimes as date-only strings — naive parsers break
  • Controlled-substance schedule data only appears for prescribing professions; nullable handling matters
  • Pulling a full 1.2M-row dump can take 30–90 minutes of paginated requests — your script has to survive transient 429/503s
  • Daily-changing record counts mean incremental syncs need offset and ordering discipline that most quick-and-dirty scripts get wrong

This actor handles every one of those concerns: it builds a deterministic SoQL $where clause from your filters, paginates by license_number (stable order), deduplicates on license number, normalizes dates to YYYY-MM-DD, and ships ready-to-ingest JSON.


Quick Start

One-Click Run

  1. Open the actor on the Apify Store page and click "Try for free"
  2. Adjust inputs — by default the prefill returns active PHARMACY licenses, capped at 100 records so you can preview the schema for pennies
  3. Hit Start — most filtered queries finish in under a minute; full statewide runs take longer (you pay per dataset item, so plan accordingly)
  4. Download the dataset as JSON, CSV, Excel, HTML, XML, RSS, or JSON Lines from the Apify dataset view

API Run (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("haketa/illinois-idfpr-license-scraper").call(run_input={
"licenseTypes": ["NURSE", "PHYSICIAN"],
"statusFilter": "active_only",
"counties": ["COOK", "DUPAGE", "LAKE"],
"disciplineFilter": "clean_only",
"maxRecords": 5000
})
for record in client.dataset(run["defaultDatasetId"]).iterate_items():
print(record["licenseNumber"], record["description"],
record["lastName"] or record["businessName"], record["city"], record["county"])

API Run (Node.js / TypeScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/illinois-idfpr-license-scraper').call({
licenseTypes: ['REAL ESTATE'],
statusFilter: 'active_only',
cities: ['CHICAGO', 'NAPERVILLE', 'AURORA', 'EVANSTON'],
maxRecords: 10000
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} active Chicago-area real estate licensees`);

API Run (cURL)

curl -X POST "https://api.apify.com/v2/acts/haketa~illinois-idfpr-license-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"licenseTypes": ["PHARMACY"],
"descriptions": ["PHARMACIST"],
"statusFilter": "active_only",
"counties": ["COOK"]
}'

API Run (Apify CLI)

apify call haketa/illinois-idfpr-license-scraper --input='{
"licenseTypes": ["CPA"],
"statusFilter": "active_only",
"cities": ["CHICAGO"],
"maxRecords": 2500
}'

How It Works

IDFPR publishes its full statewide professional licensing roster as a Socrata Open Data resource at dataset ID pzzh-kp68. Socrata is the same platform powering data.gov, data.cityofchicago.org, and dozens of other US government open-data portals — it exposes a clean JSON REST API with SoQL (Socrata Query Language) filtering, ordering, and pagination.

This actor builds a SoQL $where clause from your inputs, paginates through the resource with a stable $order=license_number ASC, normalizes the response into a consistent schema, and pushes deduplicated records to the Apify dataset.

ComponentDetail
Source endpointhttps://data.illinois.gov/resource/pzzh-kp68.json
Source agencyIllinois Department of Financial and Professional Regulation (IDFPR)
Divisions coveredDivision of Professional Regulation · Division of Real Estate · Division of Financial Institutions
Dataset size1.2M+ rows across 100+ license_type values
Update cadenceDaily — IDFPR refreshes the Socrata feed each business day
TransportDirect HTTPS GET via got-scraping — no browser, no Playwright
Pagination$limit + $offset with stable $order=license_number ASC
Filter languageSoQL $where with upper() casing, IN (...), and timestamp comparators
DeduplicationIn-memory Set keyed on license_number
Date handlingISO 2025-07-01T00:00:00.0002025-07-01; MM/DD/YYYYYYYY-MM-DD
ConcurrencySingle sequential paginator (Socrata is friendlier to single-stream consumers)
Default page size1,000 records — tune up to 50,000 if memory permits
Default request delay300 ms between API calls — well within Socrata's shared anonymous quota
ProxyNone required (Socrata is open public API)

What the actor handles for you

  • SoQL injection-safe quoting — every input value is single-quote-escaped before composition
  • Case-insensitive filtering — every license_type, description, county, and city filter is wrapped in upper(...) so user-supplied lowercase values still match
  • Inactive vs. active normalizationactive_only matches upper(license_status)='ACTIVE'; inactive_only matches anything else (covering NOT RENEWED, EXPIRED, REVOKED, SUSPENDED, RETIRED, INACTIVE, etc.)
  • Discipline filter — passed through to Socrata as ever_disciplined='Y' or ='N' (IDFPR stores this as a single-letter Y/N column, not a boolean)
  • Issued-after date filter — server-side original_issue_date>'YYYY-MM-DDT00:00:00.000' so the API does the heavy lifting
  • Stable ordering$order=license_number ASC prevents Socrata's default offset drift on large paginations
  • Graceful end-of-results — actor stops when a page returns fewer than pageSize rows or returns an empty array

Input Parameters

{
"licenseTypes": ["NURSE", "PHYSICIAN", "PHARMACY"],
"descriptions": ["REGISTERED NURSE"],
"statusFilter": "active_only",
"counties": ["COOK", "DUPAGE", "LAKE"],
"cities": ["CHICAGO", "NAPERVILLE", "EVANSTON"],
"disciplineFilter": "clean_only",
"issuedAfter": "2015-01-01",
"maxRecords": 25000,
"pageSize": 1000,
"requestDelay": 300,
"proxyConfiguration": { "useApifyProxy": false }
}

Parameter reference

ParameterTypeDefaultDescription
licenseTypesarray<string>[]Filter by IDFPR license_type (the top-level profession bucket). Examples: PHARMACY, NURSE, PHYSICIAN, DENTIST, REAL ESTATE, ARCHITECT, CPA, COSMETOLOGY, ATTORNEY, PROFESSIONAL ENGINEER, VETERINARY. Empty array = all 100+ types. Case-insensitive.
descriptionsarray<string>[]Narrow within a license type by the sub-category description. Examples: PHARMACIST, PHARMACY TECHNICIAN, REGISTERED NURSE, LICENSED PRACTICAL NURSE, ADVANCED PRACTICE REGISTERED NURSE, MANAGING BROKER, LEASING AGENT. Case-insensitive.
statusFilterstringallall returns every status. active_only returns only ACTIVE licenses. inactive_only returns everything else (NOT RENEWED, EXPIRED, REVOKED, SUSPENDED, RETIRED, INACTIVE, etc.).
countiesarray<string>[]Filter by Illinois county name (no "County" suffix). Examples: COOK, DUPAGE, LAKE, WILL, KANE, MCHENRY, WINNEBAGO, PEORIA, CHAMPAIGN, SANGAMON, MADISON, ST. CLAIR, ROCK ISLAND, MCLEAN. Case-insensitive.
citiesarray<string>[]Filter by mailing city. Examples: CHICAGO, AURORA, NAPERVILLE, JOLIET, ROCKFORD, SPRINGFIELD, PEORIA, ELGIN, WAUKEGAN, CICERO, CHAMPAIGN, BLOOMINGTON. Case-insensitive.
disciplineFilterstringallall ignores discipline. clean_only keeps ever_disciplined='N'. disciplined_only keeps ever_disciplined='Y' — useful for compliance and risk analytics.
issuedAfterstring""Filter by original issue date — only return licenses first issued after YYYY-MM-DD. Useful for net-new licensee tracking and graduating-class outreach.
maxRecordsinteger0Cap total output. 0 = unlimited (full 1.2M+ dataset when unfiltered). Set a small number first to preview the schema.
pageSizeinteger1000Socrata records per request. Max 50000. Higher = fewer round-trips but more memory; lower = friendlier on tiny Apify memory plans.
requestDelayinteger300Milliseconds between Socrata requests. Socrata's anonymous tier is generous but courteous spacing avoids 429s during long runs.
proxyConfigurationobjectnoneOptional Apify Proxy. Rarely needed — data.illinois.gov is a public open-data endpoint with no IP-level blocking.

Output Schema

Every record returned uses the same flat JSON schema regardless of license type — so downstream databases, CRMs, and BI tools ingest the entire 1.2M dataset without per-category branching.

Identity & license fields

FieldTypeDescription
licenseTypestringTop-level IDFPR profession bucket (PHARMACY, NURSE, PHYSICIAN, REAL ESTATE, CPA, etc.)
descriptionstringSub-category description (PHARMACIST, REGISTERED NURSE, MANAGING BROKER, PHARMACY TECHNICIAN, …)
licenseNumberstringIDFPR-issued license number — primary key
licenseStatusstringNormalized status (ACTIVE, NOT RENEWED, EXPIRED, REVOKED, SUSPENDED, RETIRED, INACTIVE, etc.)
isBusinessbooleantrue if this is a business / entity license (e.g., pharmacy facility, medical corporation, real estate firm); false for individual practitioners
licenseCategorystringActor-derived broad grouping: Healthcare, Technical, Legal, Financial, Real Estate, Beauty, or Other

Individual practitioner fields

FieldTypeDescription
titlestringHonorific or professional title where present
firstNamestringGiven name
middleNamestringMiddle name or initial
lastNamestringFamily name
prefixstringName prefix (Dr., Hon., etc.) where IDFPR records one
suffixstringGenerational or credential suffix (Jr., Sr., III, MD, RN, …)

Business / entity fields

FieldTypeDescription
businessNamestringLegal entity name (e.g., WALGREEN CO, NORTHWESTERN MEDICINE LAKE FOREST HOSPITAL)
businessDBAstring"Doing business as" trade name

Date fields (all normalized to YYYY-MM-DD)

FieldTypeDescription
originalIssueDatestringDate the license was first issued
effectiveDatestringDate of current renewal cycle
expirationDatestringCurrent expiration date
lastModifiedDatestringLast time IDFPR updated the record

Address fields

FieldTypeDescription
citystringMailing city
statestringTwo-letter US state abbreviation (mail-order pharmacies and out-of-state firms may carry non-IL values)
zipstringZIP code (5 or 9 digits)
countystringIllinois county name

Specialty & controlled-substance fields (where applicable)

FieldTypeDescription
specialtyQualifierstringIDFPR specialty/sub-qualifier (e.g., nurse specialty, physician sub-specialty)
controlledSubstanceSchedulestringDEA-aligned schedule(s) the licensee may prescribe (typically populated for prescribers and pharmacy facilities)
delegatedControlledSubstancestringDelegated controlled-substance authority where applicable

Discipline fields

FieldTypeDescription
everDisciplinedbooleantrue if IDFPR has any disciplinary record on this license
caseNumberstringIDFPR enforcement case number (when discipline exists)
actionstringDiscipline action taken (e.g., REPRIMAND, PROBATION, SUSPENSION, REVOCATION, FINE)
disciplineStartDatestringStart date of the discipline period
disciplineEndDatestringEnd date of the discipline period (may be null for indefinite actions)
disciplineReasonstringIDFPR-published reason summary

Provenance fields

FieldTypeDescription
scrapedAtstringISO-8601 timestamp of the actor run that produced the record

Example: individual nurse record

{
"licenseType": "NURSE",
"description": "REGISTERED NURSE",
"licenseNumber": "041-999999",
"licenseStatus": "ACTIVE",
"isBusiness": false,
"title": null,
"firstName": "PRIYA",
"middleName": "K",
"lastName": "PATEL",
"prefix": null,
"suffix": "RN",
"businessName": null,
"businessDBA": null,
"originalIssueDate": "2014-07-22",
"effectiveDate": "2024-06-01",
"expirationDate": "2026-05-31",
"city": "CHICAGO",
"state": "IL",
"zip": "60611",
"county": "COOK",
"specialtyQualifier": null,
"controlledSubstanceSchedule": null,
"delegatedControlledSubstance": null,
"everDisciplined": false,
"lastModifiedDate": "2025-12-04",
"caseNumber": null,
"action": null,
"disciplineStartDate": null,
"disciplineEndDate": null,
"disciplineReason": null,
"licenseCategory": "Healthcare",
"scrapedAt": "2026-05-16T09:00:00.000Z"
}

Example: pharmacy facility record (business)

{
"licenseType": "PHARMACY",
"description": "PHARMACY",
"licenseNumber": "054-099999",
"licenseStatus": "ACTIVE",
"isBusiness": true,
"title": null,
"firstName": null,
"middleName": null,
"lastName": null,
"prefix": null,
"suffix": null,
"businessName": "WALGREEN CO",
"businessDBA": "WALGREENS #99999",
"originalIssueDate": "1998-04-15",
"effectiveDate": "2024-10-01",
"expirationDate": "2026-09-30",
"city": "NAPERVILLE",
"state": "IL",
"zip": "60540",
"county": "DUPAGE",
"specialtyQualifier": null,
"controlledSubstanceSchedule": "II,III,IV,V",
"delegatedControlledSubstance": null,
"everDisciplined": false,
"lastModifiedDate": "2025-11-20",
"caseNumber": null,
"action": null,
"disciplineStartDate": null,
"disciplineEndDate": null,
"disciplineReason": null,
"licenseCategory": "Healthcare",
"scrapedAt": "2026-05-16T09:00:00.000Z"
}

Example: disciplined real estate broker record

{
"licenseType": "REAL ESTATE",
"description": "MANAGING BROKER",
"licenseNumber": "471-099999",
"licenseStatus": "SUSPENDED",
"isBusiness": false,
"firstName": "JOHN",
"lastName": "DOE",
"businessName": null,
"originalIssueDate": "2008-03-11",
"effectiveDate": "2023-05-01",
"expirationDate": "2025-04-30",
"city": "AURORA",
"state": "IL",
"zip": "60506",
"county": "KANE",
"specialtyQualifier": null,
"controlledSubstanceSchedule": null,
"everDisciplined": true,
"lastModifiedDate": "2025-09-12",
"caseNumber": "2024-REL-99999",
"action": "SUSPENSION",
"disciplineStartDate": "2024-11-15",
"disciplineEndDate": "2026-11-15",
"disciplineReason": "Failure to maintain trust account records as required by 225 ILCS 454/20-20.",
"licenseCategory": "Real Estate",
"scrapedAt": "2026-05-16T09:00:00.000Z"
}

License Type Catalog (selected)

IDFPR licenses 100+ professional categories. The actor accepts any license_type value the dataset contains — the table below is a curated cross-section grouped by the actor's derived licenseCategory.

Healthcare

license_typeTypical sub-categories (description)
NURSERegistered Nurse, Licensed Practical Nurse, Advanced Practice Registered Nurse, Nurse Midwife
PHYSICIANPhysician (MD), Physician (DO)
PHYSICIAN ASSISTANTPhysician Assistant
PHARMACYPharmacist, Pharmacy Technician, Pharmacy (facility), Pharmacy Continuing Education Sponsor
DENTISTDentist, Dental Hygienist
PHYSICAL THERAPYPhysical Therapist, Physical Therapist Assistant
OCCUPATIONAL THERAPYOccupational Therapist, Occupational Therapy Assistant
OPTOMETRYOptometrist
PODIATRYPodiatric Physician
CLINICAL PSYCHOLOGYClinical Psychologist
CLINICAL SOCIAL WORKERLicensed Clinical Social Worker, Licensed Social Worker
COUNSELORLicensed Clinical Professional Counselor, Licensed Professional Counselor
MARRIAGE & FAMILYMarriage and Family Therapist
SPEECH LANGUAGE PATHSpeech-Language Pathologist, Audiologist
DIETITIANLicensed Dietitian Nutritionist
RESPIRATORY CARERespiratory Care Practitioner
ATHLETIC TRAINERAthletic Trainer
SURGICAL TECHNOLOGISTRegistered Surgical Technologist
NURSING HOME ADMNursing Home Administrator
PERFUSIONISTLicensed Perfusionist
NAPRAPATHNaprapath
ACUPUNCTUREAcupuncturist
ADVANCED PRACTICEAPRN with Prescriptive Authority

Real Estate

license_typeTypical sub-categories
REAL ESTATEManaging Broker, Broker, Leasing Agent, Real Estate Sponsor Card, Real Estate Education Sponsor, Real Estate Appraiser (Certified Residential / Certified General / Associate), Auctioneer, Home Inspector

Financial & Accounting

license_typeTypical sub-categories
CPACertified Public Accountant
PUBLIC ACCOUNTANTLicensed Public Accountant
COLLECTION AGENCYCollection Agency
CURRENCY EXCHANGECurrency Exchange
PAWN BROKERPawn Broker
license_typeTypical sub-categories
ATTORNEYAttorney (coordinated with ARDC)
PRIVATE DETECTIVEPrivate Detective, Private Detective Agency, Private Security Contractor
SHORTHAND REPORTERCertified Shorthand Reporter

Design, Engineering & Trades

license_typeTypical sub-categories
ARCHITECTLicensed Architect, Professional Design Firm
PROFESSIONAL ENGINEERProfessional Engineer (PE)
STRUCTURAL ENGINEERStructural Engineer (SE)
LAND SURVEYORProfessional Land Surveyor
ROOFING CONTRACTORRoofing Contractor (limited / unlimited)
HOME INSPECTORHome Inspector
ENVIRONMENTAL HEALTHEnvironmental Health Practitioner

Beauty & Personal Care

license_typeTypical sub-categories
COSMETOLOGYCosmetologist, Cosmetology School, Cosmetology Salon
BARBERBarber, Barber Shop
NAIL TECHNICIANNail Technician
ESTHETICSEsthetician

Other

license_typeTypical sub-categories
VETERINARYVeterinarian, Veterinary Technician
FUNERAL DIRECTORFuneral Director, Funeral Director and Embalmer
BOXINGBoxer, Referee, Promoter (Illinois State Athletic Commission)
AUCTIONEERAuctioneer

License Status Reference

Status (normalized)Meaning
ACTIVELicense current, in good standing, may legally practice
NOT RENEWEDLapsed at end of cycle; may be renewable with reinstatement
EXPIREDPast expiration date
INACTIVEVoluntarily inactive
RETIREDRetired status — practitioner has formally retired
SUSPENDEDTemporarily barred from practice (often pending hearing or complying with terms)
REVOKEDPermanently terminated by Board action
RELINQUISHEDVoluntarily surrendered (often pre-disciplinary)
PROBATIONActive practice subject to Board-imposed conditions

Tip: statusFilter: "active_only" matches ACTIVE exactly. Use "inactive_only" to pull historical and disciplined records for risk analysis, churn studies, and discipline dashboards.


Use Cases

Healthcare Staffing, Travel Nursing & Locum Placement

Travel nursing, locum tenens, and per-diem agencies use this dataset to:

  • Source candidates by Illinois county — pull every active RN, LPN, or APRN in Cook, DuPage, Lake, Will, and Kane in one run
  • Verify Illinois licenses before placing nurses, physicians, or therapists on assignment at Northwestern Memorial, Rush, Loyola, UChicago Medicine, OSF, Carle, Memorial, or any IL hospital system
  • Monitor expirations daily with expirationDate so credentials never lapse mid-assignment
  • Filter out disciplinary issues automatically with disciplineFilter: "clean_only"
  • Build APRN-only outreach lists by combining licenseTypes: ["ADVANCED PRACTICE"] with city filters for Chicago, Naperville, Aurora, and the collar counties
  • Build pharmacist-only outreach lists by combining licenseTypes: ["PHARMACY"] with descriptions: ["PHARMACIST"]

Pharmaceutical & Medical Device B2B Sales

Med-device, pharma, and pharmacy-tech vendors use IDFPR data to:

  • Build targeted Illinois prescriber lists — every active physician, APRN, PA, podiatrist, optometrist, and dentist in the state filtered by county and specialty
  • Map controlled-substance prescribers using the controlledSubstanceSchedule field to identify Schedule II–V authorized practitioners
  • Identify net-new pharmacies and clinics by running with issuedAfter set to "last sync date" and capturing only fresh licensures
  • Route territory assignments by ZIP, county, and city density (Cook vs. DuPage vs. downstate metros)
  • Enrich Salesforce, HubSpot, or Veeva CRM with current license status, expiration, and discipline flags on existing accounts
  • Power direct-mail and email campaigns to verified Illinois mailing addresses (note: IDFPR does not publish emails)

Compliance, Credentialing & License Verification Automation

Hospital systems, payer credentialing teams, PBMs, and Medicare Advantage plans use IDFPR data to:

  • Automate monthly license verification for every IL-licensed clinician on payroll or in network
  • Catch status changes within 24 hoursACTIVESUSPENDED triggers immediate credentialing review
  • Maintain audit-ready logs with timestamped scrapedAt fields proving when each verification ran
  • Document discipline history for NCQA, URAC, and Joint Commission audits
  • Replace per-lookup commercial verification subscriptions that charge $0.50–$5.00 per record
  • Cross-check Illinois data against NPDB and federal databases to triangulate practitioner risk

Real Estate, Mortgage & Title Industry Lead Generation

Real estate tech vendors, brokerages, MLS providers, title companies, and mortgage lenders use IDFPR's Division of Real Estate data to:

  • Build Chicago-area managing broker and broker lists filtered by city (Chicago, Evanston, Oak Park, Naperville, Aurora, Schaumburg)
  • Power recruiting pipelines for brokerages chasing top-producing brokers
  • Identify newly-licensed leasing agents as a referral channel
  • Map real estate appraiser coverage for AMC (appraisal management company) lender networks
  • Track home inspector and auctioneer rosters for ancillary service marketplaces

Accounting, CPA Recruiting & Professional Services

Public accounting firms, CPA recruiters, accounting-software vendors (NetSuite, Xero, QuickBooks ecosystem), and continuing education providers use the dataset to:

  • Build Illinois CPA target lists — every active CPA in Cook, DuPage, Lake, and the major downstate metros (Springfield, Peoria, Champaign, Rockford)
  • Identify newly-licensed CPAs for CE marketing and Big-Four recruiting funnels
  • Map firm density to inform local-market expansion decisions
  • Cross-sell tax software and audit tools by enriching CRM with current license data
  • Track collection-agency and currency-exchange licensure for fintech compliance teams

Cosmetology, Beauty & Personal-Care Industry Marketing

Beauty-school operators, salon-management software vendors, professional-product distributors (Ulta Pro, SalonCentric, Sally Beauty), and franchise developers use IDFPR data to:

  • Build cosmetologist, barber, esthetician, and nail-tech outreach lists filtered by Chicago neighborhood, suburban metros, and downstate cities
  • Identify new cosmetology school graduates with issuedAfter filters
  • Map salon and shop density for franchise feasibility
  • Run ZIP-code-level product distribution analyses for B2B beauty supply

Law firms, M&A advisors, expert-witness brokers, and licensing dispute counsel use the dataset to:

  • Verify practitioner credentials in malpractice, negligence, or licensing litigation
  • Build chronologies of an individual practitioner's license history (combine with archived runs)
  • Conduct pre-acquisition due diligence on hospital, pharmacy, real estate brokerage, or accounting firm acquisitions
  • Identify every licensed practitioner at a target business for litigation discovery and Rule 26 disclosures
  • Validate expert-witness Illinois credentials before engagement
  • Surface IDFPR disciplinary case histories by ID with disciplineFilter: "disciplined_only"

Insurance Underwriting & Risk Analytics

Insurers writing medical, dental, pharmacy, real estate E&O, and professional liability policies use this data to:

  • Verify license validity at policy bind and renewal across every IDFPR-regulated profession
  • Adjust pricing for disciplinary history automatically using the everDisciplined flag and disciplineReason text
  • Monitor portfolio risk by flagging insureds whose status changes mid-policy
  • Process claims faster with pre-verified licensee data
  • Build actuarial discipline-rate models by license type, county, and tenure

Market Research, Workforce Analytics & Academic Studies

Healthcare-policy researchers, workforce economists, public-health programs, and management consultants use IDFPR data to:

  • Map healthcare workforce supply in Illinois — nurses per capita by county, physician density by metro, behavioral-health provider gaps
  • Track real estate licensure cycles as a leading indicator of housing-market momentum in Chicago and the collar counties
  • Quantify discipline patterns by profession, county, and decade
  • Study CPA pipeline trends as proxy for accounting talent supply
  • Analyze cosmetology school graduate retention by tracking license renewal cohorts
  • Inform Illinois public-health policy proposals with current empirical data

Government, Journalism & Investigative Reporting

State agencies, county health departments, investigative journalists at the Tribune, Sun-Times, ProPublica Illinois, WBEZ, and local TV news use IDFPR data to:

  • Investigate disciplined practitioners still listed as active elsewhere
  • Map healthcare access disparities along racial, economic, or geographic lines (Cook vs. downstate)
  • Cover IDFPR enforcement — discipline trends, action patterns, suspension volume by year
  • Build FOIA-replacement datasets that bypass the months-long IDFPR records request queue
  • Power data-journalism dashboards for community health and housing coverage

Sample Queries & Recipes

Recipe 1: Every active pharmacist in Cook County

{
"licenseTypes": ["PHARMACY"],
"descriptions": ["PHARMACIST"],
"statusFilter": "active_only",
"counties": ["COOK"]
}

Recipe 2: All active registered nurses in the Chicago metro area

{
"licenseTypes": ["NURSE"],
"descriptions": ["REGISTERED NURSE"],
"statusFilter": "active_only",
"counties": ["COOK", "DUPAGE", "LAKE", "WILL", "KANE", "MCHENRY"]
}

Recipe 3: Every disciplined physician statewide (for risk dashboards)

{
"licenseTypes": ["PHYSICIAN"],
"statusFilter": "all",
"disciplineFilter": "disciplined_only"
}

Recipe 4: Active managing brokers in Chicago, Naperville, Aurora, Evanston

{
"licenseTypes": ["REAL ESTATE"],
"descriptions": ["MANAGING BROKER"],
"statusFilter": "active_only",
"cities": ["CHICAGO", "NAPERVILLE", "AURORA", "EVANSTON"]
}

Recipe 5: New CPAs licensed in 2024 or later (recruiting pipeline)

{
"licenseTypes": ["CPA"],
"statusFilter": "active_only",
"issuedAfter": "2024-01-01"
}

Recipe 6: Schedule II–V prescriber audit (controlled substance focus)

{
"licenseTypes": ["PHYSICIAN", "ADVANCED PRACTICE", "PHYSICIAN ASSISTANT", "DENTIST", "PODIATRY"],
"statusFilter": "active_only"
}

Then post-filter downstream:

prescribers = [r for r in records if r["controlledSubstanceSchedule"]]

Recipe 7: All active cosmetologists in the major downstate metros

{
"licenseTypes": ["COSMETOLOGY"],
"statusFilter": "active_only",
"cities": ["SPRINGFIELD", "PEORIA", "ROCKFORD", "CHAMPAIGN", "BLOOMINGTON", "DECATUR"]
}

Recipe 8: Sample 100 records before committing to a full scrape

{
"licenseTypes": ["DENTIST"],
"maxRecords": 100
}

Recipe 9: Architects and Professional Engineers in Chicago (design-firm prospecting)

{
"licenseTypes": ["ARCHITECT", "PROFESSIONAL ENGINEER", "STRUCTURAL ENGINEER"],
"statusFilter": "active_only",
"cities": ["CHICAGO"]
}

Recipe 10: Full historical dataset (every license ever issued — slow run)

{
"statusFilter": "all",
"pageSize": 5000,
"requestDelay": 250
}

Integration Examples

Google Sheets

  1. Create an Apify Schedule that runs this actor daily at 7:00 AM Central
  2. Add the Export to Google Sheets integration to the schedule
  3. A fresh Illinois license sheet lands in your Drive every morning — point Looker Studio at it for dashboards

Make.com / Zapier / n8n

Use the Apify connector on any major automation platform. Trigger downstream workflows on:

  • New license issuance (originalIssueDate after last sync)
  • Status changes (ACTIVESUSPENDED / REVOKED)
  • Address changes (relocations within Illinois or out of state)
  • New disciplinary actions (everDisciplined transitions from falsetrue)
  • Expiration approaching (within 90 days)

Power BI / Tableau / Looker

Connect Apify's REST API as a data source. Refresh on the Apify schedule. Build dashboards covering:

  • Active practitioner count by county and Chicago-metro municipality
  • Discipline action rates by profession and year
  • Real estate broker churn by suburban market
  • Pharmacy facility footprint by chain (businessName grouping)
  • Newly-licensed practitioner cohorts by graduating year

Postgres / Snowflake / BigQuery / Databricks

Use the Apify webhook integration to POST run results to your data warehouse ingestion endpoint after every scheduled run. Recommended primary key: licenseType + licenseNumber (license numbers are unique within type but may collide across IDFPR divisions).

CREATE TABLE idfpr_licenses (
license_type TEXT,
description TEXT,
license_number TEXT,
license_status TEXT,
is_business BOOLEAN,
first_name TEXT,
last_name TEXT,
business_name TEXT,
business_dba TEXT,
original_issue_date DATE,
effective_date DATE,
expiration_date DATE,
city TEXT,
state TEXT,
zip TEXT,
county TEXT,
specialty_qualifier TEXT,
cs_schedule TEXT,
ever_disciplined BOOLEAN,
case_number TEXT,
action TEXT,
discipline_reason TEXT,
license_category TEXT,
scraped_at TIMESTAMPTZ,
PRIMARY KEY (license_type, license_number)
);

Salesforce / HubSpot / Veeva CRM Enrichment

Trigger an Apify run nightly, then upsert against Contact, Lead, or Account records keyed on license number. Status-change events can auto-create Tasks, open Cases, or move records into a disqualified state. For Veeva CRM, map IDFPR records to HCP master accounts using firstName + lastName + zip plus licenseNumber verification.

Slack / Teams / PagerDuty Alerts

Wire a webhook that posts to a #compliance channel on every transition into SUSPENDED, REVOKED, or everDisciplined=true. Page on-call credentialing if the affected license is on an active provider roster.


Major Illinois Markets & Coverage

The dataset is statewide — every Illinois ZIP, every county, every city is in scope. The table below highlights the largest markets and why they matter.

Metro / CityPopulationCountyWhy it matters for IDFPR data
Chicago2.7MCookLargest US-Midwest healthcare market; epicenter of pharmacy, nursing, medical, legal, real estate, CPA, and cosmetology licensure
Aurora180KKane / DuPage / Kendall / WillSecond-largest IL city; major hospital and retail-clinic footprint
Naperville150KDuPage / WillWealthy western suburb with dense healthcare and professional-services workforce
Joliet150KWill / KendallSouthwest suburb; warehousing and healthcare anchor
Rockford145KWinnebagoLargest market outside Chicagoland; Mercyhealth and OSF Saint Anthony anchor
Elgin115KKane / CookNorthwest collar suburb; Advocate Sherman and Presence Saint Joseph footprint
Springfield115KSangamonState capital; Memorial Health and SIU School of Medicine
Peoria110KPeoriaOSF HealthCare HQ and UICOMP medical school
Champaign / Urbana130K combinedChampaignUIUC campus; Carle Foundation Hospital is the region's largest employer
Bloomington / Normal115K combinedMcLeanOSF St. Joseph, Carle BroMenn, Illinois State University
Waukegan90KLakeNorthern lakeshore industrial / healthcare hub
Cicero / Berwyn / Oak Park200K combinedCookInner Chicago-collar working-class corridor
Decatur70KMaconDecatur Memorial and HSHS St. Mary's
Evanston80KCookNorthwestern University; NorthShore University HealthSystem
Schaumburg / Hoffman Estates145K combinedCookNW suburbs; AT&T, Motorola, healthcare anchor
Quad Cities (Moline / Rock Island)75KRock IslandCross-river Iowa-IL metro; UnityPoint and Genesis health systems
Belleville / O'Fallon80KSt. ClairMetro East / Greater St. Louis IL side; HSHS and Memorial Hospital
Carbondale25KJacksonSouthern IL University; regional healthcare access for far-southern IL

Counties of greatest density (active licensees): Cook, DuPage, Lake, Will, Kane, McHenry, Winnebago, Madison, St. Clair, Peoria, Sangamon, McLean, Champaign.


Cost & Performance

MetricValue
EngineDirect Socrata REST API via got-scraping — no browser, no Playwright
Auth requiredNone — data.illinois.gov is open public data
Proxy requiredNone (Apify Proxy optional but rarely needed)
Runtime (filtered, ≤10K records)30 seconds – 5 minutes
Runtime (single profession statewide)5 – 20 minutes
Runtime (full 1.2M+ unfiltered dataset)30 – 90 minutes depending on page size and delay
Default page size1,000 (tunable up to 50,000)
Default request delay300 ms between requests
Memory footprint256 MB sufficient for filtered runs; 1024 MB recommended for full dataset
ConcurrencySingle sequential paginator (intentional — preserves stable ordering)
Pricing modelPay-per-event (per dataset item delivered)
Data freshnessDaily — matches IDFPR's Socrata publish cadence
Output formatsJSON, CSV, Excel (XLSX), HTML, XML, RSS, JSON Lines

  • Public data only — every field returned by this actor is published by IDFPR at data.illinois.gov/resource/pzzh-kp68 under the Illinois Freedom of Information Act (FOIA, 5 ILCS 140) and Illinois Open Data initiatives
  • No PHI — the dataset contains zero protected health information; it is a licensure registry, not a patient record
  • No SSNs, DOBs, financial account data, or biometrics — only license-related public information published by the State of Illinois
  • No emails or personal phone numbers — IDFPR does not publish licensee contact email addresses
  • Address data is the mailing/business address on file with IDFPR — for most individual practitioners this is a practice address, but in some categories it may be a home address that the licensee elected to register
  • HIPAA does not apply — this is licensing data, not patient data
  • GDPR / CCPA / CPRA — the dataset relates to professionals in their professional capacity; downstream consumers are responsible for applying their own privacy, marketing, and outreach compliance frameworks (CAN-SPAM, TCPA, Illinois Right of Publicity Act, IL BIPA where applicable, etc.)
  • Illinois Right of Publicity Act (765 ILCS 1075) — do not use names or likenesses for commercial product endorsement without consent
  • No disparagement — IDFPR makes discipline records public so that consumers may make informed decisions; do not use this data to harass, threaten, or stalk any licensee
  • Source attribution — when republishing analysis, credit the Illinois Department of Financial and Professional Regulation and the Illinois Open Data portal as the source
  • Terms of service — review the Illinois Open Data Portal terms before redistribution at scale

Important: IDFPR data may not be used for unlawful purposes including identity fraud, harassment, stalking, unauthorized credentialing claims, or unauthorized practice of a regulated profession. License verification for credentialing, recruiting, compliance, B2B sales, journalism, academic research, and lawful due diligence is well within the public-data use envelope.


Frequently Asked Questions

How fresh is the data?

IDFPR refreshes the Socrata pzzh-kp68 dataset daily. The actor pulls live on each run, so records are at most one business day old.

How many records will I get?

The full unfiltered dataset is 1.2 million+ rows. Filtered runs (one profession in one county) typically return hundreds to tens of thousands. Use maxRecords to cap output for testing.

Does this scraper require login, an IDFPR API key, or a Socrata app token?

No. The actor uses the anonymous Socrata public endpoint. You only need an Apify account to run it. Power users with very high-volume needs can register a free Socrata app token at data.illinois.gov — but it is not required for the volumes this actor produces.

Are CAPTCHAs or JavaScript rendering involved?

No. The actor hits the JSON Socrata REST API directly — no headless browser, no challenge solving, no rate-limit games.

Does this cover Illinois attorneys?

The IDFPR dataset includes an ATTORNEY license_type, but Illinois attorney discipline is primarily administered by the Illinois Attorney Registration and Disciplinary Commission (ARDC), not IDFPR. For the authoritative attorney registry and discipline history, cross-reference with the ARDC's own public lookup. The IDFPR feed is useful where attorneys also hold dual licensure (e.g., CPA + attorney).

Does this dataset include nurses with multi-state compact privileges?

The IDFPR dataset reflects Illinois-issued licenses. Illinois is a Nurse Licensure Compact (NLC) state; nurses with primary residence in another compact state who practice in Illinois under multistate privilege may not appear here. For full compact coverage, layer additional state-licensing datasets — see the Related Actors section.

Can I filter by license expiration date?

The actor exposes a server-side issuedAfter filter for original issue date. For expiration-based filtering, return the dataset and apply your expirationDate predicate downstream (SQL WHERE, pandas, Sheets filter, etc.) — this is intentional because expiration filters are usually small relative-time windows that change per-query.

Does the actor deduplicate?

Yes — every record is deduplicated in-memory by licenseNumber. The IDFPR feed itself is generally clean, but stable dedup prevents any drift from offset-paginated responses.

What's the difference between licenseType and description?

licenseType is the top-level IDFPR profession bucket (e.g., NURSE, REAL ESTATE, PHARMACY). description is the sub-category within that bucket (e.g., REGISTERED NURSE vs. LICENSED PRACTICAL NURSE; MANAGING BROKER vs. LEASING AGENT; PHARMACIST vs. PHARMACY TECHNICIAN). Use licenseTypes for broad cuts and descriptions for precise targeting.

What is isBusiness?

IDFPR mixes individual practitioners and business entities (pharmacy facilities, medical corporations, real estate firms, salons, professional design firms, currency exchanges, etc.) in the same table. isBusiness=true flags entity records so you can split or filter on the consumer side.

How do I separate Cook County records from the rest of Chicagoland?

Use counties: ["COOK"]. To grab the full Chicago metro and collar counties, use counties: ["COOK", "DUPAGE", "LAKE", "WILL", "KANE", "MCHENRY"].

Is proxy or residential IP access required?

No. Illinois's Socrata endpoint is open public data with no IP-based blocking. Run without proxy for free.

Can I run this on the Apify Free Plan?

Yes — for sampling and filtered runs. The full 1.2M-record statewide unfiltered run produces a large dataset, so review your plan's storage and compute quotas before launching unlimited runs.

Can I schedule the actor?

Yes — Apify's built-in Scheduler supports hourly, daily, weekly, or any cron expression. The most common pattern is a nightly run at ~7:00 AM Central (after IDFPR's overnight refresh window) feeding a webhook → data warehouse → BI dashboard.

How do I track changes (deltas) over time?

Schedule the actor nightly and archive each Apify dataset. To diff: keyed on licenseNumber, compare licenseStatus, everDisciplined, caseNumber, and action between successive runs. New records: licenseNumber not in yesterday's set. Status flips, address moves, and new discipline actions all become first-class events for your alerting pipeline.

Can I get NPI numbers?

NPI numbers are issued federally by CMS (NPPES), not by IDFPR, so they are not in this dataset. Cross-reference IDFPR license records with the NPPES NPI Registry for NPI enrichment of physicians, nurses, PAs, and pharmacists.

Can I get DEA registration numbers?

DEA numbers are issued federally by the Drug Enforcement Administration, not IDFPR. The IDFPR controlledSubstanceSchedule field tells you which schedules a practitioner is state-authorized to prescribe; DEA registration is a separate federal lookup.

What if a query returns zero records?

Most often this means the filter combination is over-restrictive or a licenseTypes / descriptions / cities value is misspelled. The actor case-normalizes inputs, but if you misspell a county or city, Socrata will return an empty array. Try removing filters one at a time and reviewing the log line [API] offset=0: N records.

What formats can I export?

JSON, CSV, Excel (XLSX), HTML, XML, RSS, and JSON Lines — directly from the Apify dataset view. The Apify API also streams JSON Lines for downstream consumers.

Does the actor handle Socrata rate limits?

The default requestDelay: 300 keeps the actor comfortably within Socrata's anonymous shared quota. For very long runs, raise the delay to 500–1000 ms. If you need to push harder, register a free Socrata app token and wire it into a forked version of the actor.

How does pay-per-event pricing work?

You're charged a small amount at run start and per dataset item delivered. There are no monthly minimums — you only pay when you actually run, and you can preview the schema with maxRecords: 100 for pennies.

Can I report bugs or request features?

Yes — open an issue on the Apify Store actor page or contact the developer through the Apify Console.


If you need licensing data from other US states — or other multi-board state systems comparable to IDFPR — these sibling actors are part of the same family:

Stack any combination of state actors to build a national multi-state license dataset — Illinois + Ohio + California + Texas + Virginia + Colorado + Minnesota + Washington alone gives you the bulk of US population coverage across regulated professions.


Comparison vs. Alternatives

ApproachSetup timeData freshnessCost (full IL pull)Schema normalizationCompliance audit log
This actor< 1 minuteDailyPay-per-event, transparentBuilt-inAutomatic (scrapedAt)
Manual lookup at ilesonline.idfpr.illinois.govHours per professionReal-timeFreeNoneNone
Custom Socrata script6–16 hours dev + maintenanceDailyFree + infra + dev timeDIYDIY
Paid licensure-verification API (per-lookup)Days, contractReal-time$0.50–$5.00 per recordYesYes
Bulk Open Data CSV downloadMinutesDailyFreeNoneNone
IDFPR FOIA records requestWeeks–monthsStaleVariable / per-page feesNoneIssued to you only

Why Pay-Per-Event Pricing?

Most data scrapers either charge a flat monthly subscription (you pay even when idle) or per-Compute-Unit (unpredictable for large dumps). This actor uses pay-per-event pricing, which means:

  • You only pay when the actor actually runs and delivers records
  • Charges scale linearly with how much data you consume — sampling is cheap, full statewide pulls are predictable
  • Transparent line-item billing inside Apify — every dataset item is itemized
  • No monthly minimums and no contracts
  • Free to evaluate — sample with maxRecords: 100 for pennies before committing to a 1.2M-record run
  • Mixes cleanly with Apify Scheduler so nightly delta syncs cost exactly what they need to

Changelog

VersionDateNotes
1.02026-05Initial public release — direct Socrata API extractor for pzzh-kp68, 100+ profession categories, county/city/discipline/issue-date filters, deduplicated normalized output, pay-per-event pricing

Keywords

Illinois IDFPR scraper · Illinois IDFPR License Scraper · IL professional license lookup · IDFPR license search · IDFPR Socrata API · data.illinois.gov scraper · Illinois Department of Financial and Professional Regulation data · Chicago license verification · Cook County license scraper · Illinois nursing license data · Illinois RN LPN APRN registry · Illinois physician license lookup · Illinois pharmacist license · Illinois pharmacy technician registry · Illinois pharmacy facility license · Illinois dental license · Illinois dentist scraper · Illinois real estate broker scraper · Illinois managing broker registry · Illinois leasing agent license · Illinois CPA license lookup · Illinois certified public accountant database · Illinois architect license · Illinois professional engineer scraper · Illinois cosmetology license · Illinois barber license · Illinois esthetician registry · Illinois veterinary license · Illinois funeral director license · Illinois private detective license · Illinois roofing contractor license · IDFPR discipline records · Illinois practitioner discipline scraper · Illinois controlled substance schedule data · Illinois nursing medical contractor real estate license data · 1.2 million Illinois license records · Illinois compliance automation · Illinois credentialing data · Illinois B2B healthcare leads · Chicago healthcare lead generation · Naperville Aurora Rockford Peoria Springfield license data · IDFPR pzzh-kp68 dataset · Apify Illinois actor · Illinois state license data API


Support

  • Bug reports: Use the Issues tab on the Apify Store page
  • Feature requests: Same place — describe your use case so the next release covers it
  • Direct contact: Through the Apify developer profile (haketa)
  • Pricing & enterprise volume: Reach out via Apify Console for high-volume scheduling guidance

If this actor saves your team time on Illinois license verification, recruiting, compliance, or analytics, a 5-star rating on the Apify Store helps other Chicago and statewide teams discover it. Thank you!