Illinois APIidoi.illinois.gov ↗
Search Illinois-licensed insurance producers, agencies, and public adjusters. Retrieve license details, lines of authority, appointments, and CE info via 3 endpoints.
What is the Illinois API?
The IDOI API provides 3 endpoints for querying Illinois Department of Insurance licensing data, including producer search, full credential lookup, and site-wide content search. The search_producers endpoint accepts filters like NPN, license number, last name, and entity type, returning records with contact info, license status, and lines of authority. The get_producer_details endpoint retrieves demographics, appointments, and CE data for a specific licensee.
curl -X GET 'https://api.parse.bot/scraper/d7a153f0-d044-4677-a1fc-df3371598727/search_producers?last_name=Smith&entity_type=IND' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace idoi-illinois-gov-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: IDOI SDK — search Illinois insurance producers and IDOI site content."""
from parse_apis.illinois_department_of_insurance_idoi_api import (
IDOI, EntityType, LicenseType, ProducerNotFound
)
client = IDOI()
# Search for individual producers by last name, capped to 5 results
for producer in client.producers.search(last_name="Smith", entity_type=EntityType.IND, limit=5):
print(producer.name, producer.license_number, producer.license_expiration_date)
# Drill into one producer's full details
producer = client.producers.search(last_name="Johnson", license_type=LicenseType.PRO, limit=1).first()
if producer:
detail = client.producers.get(license_number=str(producer.license_number))
print(detail.name, detail.npn, detail.residency)
# Typed error handling — catch a not-found license
try:
client.producers.get(license_number="9999999999")
except ProducerNotFound as exc:
print(f"Producer not found: {exc.license_number}")
# Search IDOI website content for regulatory bulletins
for result in client.sitesearchresults.search(query="health insurance regulation", limit=3):
print(result.title, result.path, result.contenttype)
print("exercised: producers.search / producers.get / sitesearchresults.search")
Search for insurance producers, agencies, and adjusters licensed in Illinois. Supports filtering by name, license number, NPN, and license type. At least one of last_name, license_number, or npn must be provided.
| Param | Type | Description |
|---|---|---|
| npn | string | National Producer Number. |
| last_name | string | Last name or business name of the licensee. Required unless license_number or npn is provided. |
| first_name | string | First name of the producer. |
| entity_type | string | Entity type: 'IND' for individuals, 'BE' for business entities/agencies. |
| license_type | string | License type code: 'PRO' for Producer, 'TMP' for Temporary Producer, 'PAD' for Public Adjuster, 'NAV' for Navigator. |
| license_number | string | Illinois license number. |
{
"type": "object",
"fields": {
"data": "array of licensee records with fields: name, licenseNumber, licenseType, licenseTypeCode, npn, businessPhone, businessAddress, loas, residency, licenseExpirationDate, licenseEffectiveDate, fein, dbaName, designatedHomeState"
},
"sample": {
"data": {
"data": [
{
"npn": "21256136",
"fein": "",
"loas": "NO LINES ASSIGNED",
"name": "SMITH - PROVINCE, KAYLA",
"dbaName": "",
"residency": "Yes",
"licenseType": "TEMPORARY PRODUCER-Cancelled",
"businessPhone": "3146272022",
"licenseNumber": 21256136,
"businessAddress": "FLORISSANT, MO 63031",
"licenseTypeCode": "TMP",
"designatedHomeState": "",
"licenseEffectiveDate": "07/18/2024",
"licenseExpirationDate": "10/16/2024"
}
]
},
"status": "success"
}
}About the Illinois API
Producer Search
The search_producers endpoint queries Illinois-licensed insurance producers, agencies, and public adjusters. At least one of last_name, license_number, or npn must be supplied. The entity_type parameter narrows results to individuals (IND) or business entities (BE), while license_type accepts codes such as PRO (Producer), TMP (Temporary Producer), PAD (Public Adjuster), and NAV. Each result record includes name, licenseNumber, licenseType, npn, businessPhone, businessAddress, and loas (lines of authority).
Producer Details
get_producer_details accepts a required license_number and an optional entity_type. It returns a structured object with three main sections: summary (an array of license records), demographics (name, address, NPN, domicile state), and lines_of_authority (active and inactive authorities by state). Appointment data and continuing education (CE) records are also included, making this endpoint useful for thorough credential verification.
Site Search
The search_site endpoint performs keyword searches across IDOI's public website, returning bulletins, regulatory notices, reports, and general content pages. The results array contains objects with title, path, description, content, and metadata. Pagination is controlled via the page parameter, with the meta object exposing page.current, page.total_pages, page.total_results, and page.size for navigation.
The Illinois API is a managed, monitored endpoint for idoi.illinois.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when idoi.illinois.gov changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official idoi.illinois.gov API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Verify that an insurance agent holds an active Illinois Producer license before onboarding them to a distribution platform
- Look up a public adjuster's license status and contact details using their NPN or license number
- Retrieve an agency's lines of authority and active appointments for compliance auditing
- Build a producer directory filtered by license type and entity type for an insurance carrier portal
- Fetch continuing education records for a licensed producer to confirm CE compliance
- Search IDOI bulletins and regulatory notices by keyword for compliance monitoring workflows
- Cross-reference NPN data from NIPR with Illinois-specific license records for multi-state producer management
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the Illinois Department of Insurance provide an official developer API?+
What does `get_producer_details` return beyond what `search_producers` includes?+
search_producers returns summary-level fields like name, license number, NPN, business address, and lines of authority for matching records. get_producer_details goes further, returning structured demographics (including domicile info), a full lines_of_authority array with state-level detail, appointment records, and continuing education data — all tied to a single license_number.Does the API cover producers licensed in states other than Illinois?+
Are there any required parameters for searching producers?+
search_producers requires at least one of last_name, license_number, or npn. Submitting a request with none of these will not return results. first_name, entity_type, and license_type are optional filters that narrow results when combined with a required identifier.