NAIC APIcontent.naic.org ↗
Access NAIC data via API: state insurance department contacts, commissioner details, news releases, glossary terms, and committee listings across all US states.
What is the NAIC API?
The NAIC Content API exposes 6 endpoints covering US state and territory insurance regulatory data from content.naic.org. Use get_insurance_department_details to retrieve commissioner names, phone numbers, and addresses for any of the 50+ departments by state ID. Additional endpoints cover the full NAIC insurance glossary, committee listings, news releases, and a link to the NAIC company search dashboard.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/4aafb1e5-60b8-4e97-a62d-37e8a36b6d0f/list_insurance_departments' \ -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 content-naic-org-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.
from parse_apis.naic_insurance_regulatory_api import Naic, Department, DepartmentSummary, Article, GlossaryTerm, Committee, ArticleType, NotFoundError
naic = Naic()
# List all state insurance departments and print the first few
for dept in naic.departmentsummaries.list(limit=5):
print(dept.id, dept.name)
# Get detailed info for a specific department by constructing from ID
alabama = naic.departmentsummary("1025").details()
print(alabama.name, alabama.commissioner, alabama.phone, alabama.website)
for addr in alabama.addresses:
print(addr.type, addr.address)
# Search newsroom articles filtered by type using the enum
for article in naic.articles.search(type=ArticleType.NEWS_RELEASE, limit=3):
print(article.title, article.link)
# Retrieve glossary terms
for term in naic.glossaryterms.list(limit=5):
print(term.term, term.definition)
# List committees with error handling
try:
first_committee = naic.committees.list(limit=1).first()
if first_committee:
print(first_committee.name, first_committee.link)
except NotFoundError as exc:
print(f"Not found: {exc}")
print("Exercised: departmentsummaries.list / departmentsummary.details / articles.search / glossaryterms.list / committees.list")
List all US state and territory insurance departments. Returns department IDs and names. Each department ID can be used with get_insurance_department_details to retrieve full contact information including commissioner, phone numbers, and addresses.
No input parameters required.
{
"type": "object",
"fields": {
"departments": "array of department objects with id and name"
},
"sample": {
"data": {
"departments": [
{
"id": "1025",
"name": "Alabama"
},
{
"id": "1026",
"name": "Alaska"
},
{
"id": "1029",
"name": "California"
}
]
},
"status": "success"
}
}About the NAIC API
State Insurance Department Data
The list_insurance_departments endpoint returns an array of department objects, each with an id and name. Those IDs feed directly into get_insurance_department_details, which returns structured contact data: commissioner name, phone, website URL, an addresses array (with type and address fields for physical and mailing locations), and additional_phones. This covers all US states and territories recognized by NAIC.
Newsroom and Glossary
search_newsroom accepts two optional parameters — keyword for text filtering and type for article category — and returns an articles array of objects with title and link fields. Without parameters it returns recent NAIC news releases and consumer articles. get_glossary_terms returns the complete NAIC insurance glossary in a single response: an array of objects each containing a term and its plain-language definition. No pagination is needed; the full set is delivered at once.
Committees and Company Search
get_committees lists all NAIC committees, task forces, and working groups as an array of objects with name and link fields pointing to their NAIC detail pages. search_companies returns a message and an interactive_search_url pointing to the NAIC's Tableau-based company search dashboard; an optional company_name parameter pre-populates the search URL. The actual company records are served through that dashboard rather than as structured API fields.
The NAIC API is a managed, monitored endpoint for content.naic.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when content.naic.org 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 content.naic.org 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?+
- Build a state-by-state directory of insurance commissioners and their contact details using
get_insurance_department_details. - Monitor NAIC regulatory news by polling
search_newsroomwith relevant keywords like 'cybersecurity' or 'market conduct'. - Embed the full NAIC insurance glossary into a fintech or insurtech educational product using
get_glossary_terms. - Map which NAIC committees are active for a given regulatory topic by parsing
get_committeesresults. - Generate a coverage table of all state insurance department websites and phone numbers for a compliance reference tool.
- Link users directly to the NAIC company search dashboard with a pre-filled insurer name using
search_companies. - Cross-reference state department addresses from
addressesarray fields for mailing regulatory filings programmatically.
| 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 NAIC provide an official public developer API?+
What does `get_insurance_department_details` return beyond a phone number?+
commissioner name, the primary phone, a website URL, an addresses array distinguishing physical and mailing addresses by type, and an additional_phones array for departments that list secondary numbers. You need a valid state_id from list_insurance_departments to call it.Does the API return structured insurance company records such as financial ratings or license status?+
search_companies endpoint returns a URL to the NAIC's interactive Tableau dashboard rather than structured company fields like ratings, license numbers, or financial data. You can fork this API on Parse and revise it to add an endpoint that parses structured company data if the dashboard exposes it in a machine-readable form.Is the full glossary paginated, or will one call return all terms?+
get_glossary_terms returns the complete glossary in a single response with no pagination parameters. The full array of term and definition objects is delivered in one call.Does the newsroom search support filtering by date range?+
search_newsroom supports filtering by keyword and type only; there is no date-range parameter. You can fork this API on Parse and revise it to add date filtering if the underlying source exposes publication dates in a queryable way.