Illinois Professional Licenses - IDFPR Roster & Discipline
Pricing
from $0.06 / 1,000 il professional licence records
Illinois Professional Licenses - IDFPR Roster & Discipline
Illinois IDFPR's full professional licence register (public open data, 4.2M rows, 63 boards): licensee name, business, status and dates, plus the disciplinary case, action and written reason behind 103K disciplined licences.
Pricing
from $0.06 / 1,000 il professional licence records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Low cost
From $0.0001 per record, down to $0.00006 at Gold - pay per record delivered, and nothing for the query. Cost scales with what you pull, not with the size of the register.
Illinois' full professional and occupational licence register, from IDFPR. ~4.16M rows over ~3.88M distinct licences across 63 licence types - nursing, medicine, real estate, cosmetology, pharmacy, engineering, dentistry and the rest of the state's licensed trades.
What you get
Every licensee with their name, business and DBA, licence status, and the issue, effective and expiration dates, plus city, county and ZIP.
And the part most rosters leave out: the discipline record. ~102K licences carry a disciplinary flag, ~92K have a case number, ~92K a discipline start date and ~80K the written reason - the action taken (revocation, suspension, probation, fine, reprimand, refuse-to-renew) and, where the state recorded one, the free-text finding explaining it.
Modes
- rows (default) - licence records matching your filters
- aggregate - counts by board, status, county or state
Filters
Licence number, name (first or last), board, licence status, specialty qualifier, business name, DBA, city, county, state, ZIP, business-vs-person, ever-disciplined, and discipline case number.
Expiry, issue and last-modified year are filterable by a 4-digit year. The source stores every date as MM/DD/YYYY text and offers no way to compare them as dates, so year-granularity is the honest boundary - and every date is normalized to YYYY-MM-DD on output so you can do exact work on the results.
Example inputs
One licence by number - licenseNumber is an exact match.
{ "licenseNumber": "DOPO998927" }
Active nurses in Chicago - licenseType is a board-name substring.
{"licenseType": "NURSING","licenseStatus": "ACTIVE","city": "CHICAGO","maxResults": 25}
Licences the state has disciplined - everDisciplined=Y selects licences with at least one case on record.
{ "everDisciplined": "Y", "maxResults": 25 }
The roster by board - mode=aggregate returns one count row per group.
{ "mode": "aggregate", "groupBy": "licenseType" }
Why this is hard
The status vocabulary has 31 exact values, and several are a base status plus a CHAPERONE REQUIRED suffix - ACTIVE and ACTIVE CHAPERONE REQUIRED are different statuses, as are the SUSPENDED pair. A substring match on "active" quietly returns both and you would never know.
Row count is not licence count, for two separate reasons. ~224K rows carry a masked licence number - the state blanks the digits (33*****04), and those masks collapse onto only 800 distinct strings, so roughly 224K real licences share 800 identifiers. A further ~38K rows have no number at all. The remaining ~23K duplicates are the genuine ones: a licence with several disciplinary actions appears once per action. So a licence number is a search key, not a primary key - dedupe on your side if you need one row per licence.
~90K records carry an expiration date of 2099 - the state's way of writing "no expiration on file", not a real expiry ninety years out.
Output
Dates normalized to YYYY-MM-DD; the same key set on every record.
Example output
One licence - licenseNumber=DOPO998927 returns the licence record:
{"platform": "il-licenses","source": "il-idfpr-licenses","corpus": "licenses","recordKind": "license","mode": "rows","groupKey": "","groupCount": "","groupBy": "","licenseType": "MEDICAL CANNABIS BD","description": "REGISTERED PRINCIPAL OFFICER","licenseNumber": "DOPO998927","licenseStatus": "TERMINATED","business": "N","title": "","firstName": "ROBERT","middleName": "O'S.","lastName": "REMIEN","prefix": "","suffix": "","businessName": "ROBERT O'S. REMIEN","businessDba": "","originalIssueDate": "2018-09-19","effectiveDate": "2024-09-19","expirationDate": "2025-09-19","city": "PLEASANT PRAIRIE","state": "WI","zip": "53158","county": "","specialtyQualifier": "","controlledSubstanceSchedule": "","delegatedControlledSubstance": "","everDisciplined": "N","lastModified": "2025-09-10","caseNumber": "","action": "","disciplineStartDate": "","disciplineEndDate": "","disciplineReason": "","sourceUpdatedAt": "2026-09-21"}
mode=aggregate, groupBy=licenseType - one count row per board:
DETECTIVE BOARD 752,104NURSING BOARD 682,269REAL ESTATE 637,755COSMO 403,598MEDICAL BOARD 387,679PHARMACY 366,027
Notes
- Public open data from data.illinois.gov. No login, no scraping.
- IDFPR publishes the roster and the discipline record as part of its licensing duty.
- Charges are metered per record delivered, so a targeted query costs a fraction of a cent.