Mn APIroster.aelslagid.state.mn.us ↗
Search Minnesota professional licenses for architects, engineers, surveyors, and more via the AELSLAGID roster. Returns name, license number, profession, and expiration date.
What is the Mn API?
The Minnesota AELSLAGID License Search API provides access to professional license records from the Minnesota Board of Architecture, Engineering, Land Surveying, Landscape Architecture, Geoscience, and Interior Design through a single search_licenses endpoint. Each response includes up to four fields per record — full name, license number, profession, and expiration date — covering all board-regulated disciplines including civil engineers, architects, geologists, and interior designers.
curl -X GET 'https://api.parse.bot/scraper/295a73c2-3e63-4fe9-9235-cb4f3cbaa098/search_licenses?last_name=Smith' \ -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 roster-aelslagid-state-mn-us-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: Minnesota License Search — find and inspect professional licenses."""
from parse_apis.roster_aelslagid_state_mn_us_api import MinnesotaLicenses, InputFormatInvalid
client = MinnesotaLicenses()
# Search for licenses by last name prefix; limit caps total items fetched.
for license in client.licenses.search(last_name="Johnson", limit=5):
print(license.full_name, "|", license.profession, "|", license.expiration_date)
# Drill-down: grab the first result for a different query.
first_license = client.licenses.search(last_name="Anderson", limit=1).first()
if first_license is not None:
print(f"License #{first_license.license_number}: {first_license.full_name}, {first_license.profession}")
# Handle invalid input gracefully.
try:
client.licenses.search(last_name="", limit=1).first()
except InputFormatInvalid as e:
print(f"Invalid input: {e.message}")
print("exercised: licenses.search")
Search for professional licenses by last name. Returns all matching records including full name, license number, profession/discipline, and expiration date. Results include all professions (architects, engineers, surveyors, geologists, interior designers, landscape architects). A partial last name matches all names starting with that prefix.
| Param | Type | Description |
|---|---|---|
| last_namerequired | string | Last name to search for. Partial matches are supported (e.g. 'John' matches Johnson, Johns, Johnsen). |
{
"type": "object",
"fields": {
"total": "integer count of matching records",
"results": "array of license records, each containing full_name, license_number, profession, and expiration_date"
},
"sample": {
"data": {
"total": 265,
"results": [
{
"full_name": "Smith, Aaron D.",
"profession": "Professional Engineer [Structural I]",
"license_number": "44131",
"expiration_date": "06/30/2028"
},
{
"full_name": "Smith II, Addison R",
"profession": "Professional Engineer [Electrical]",
"license_number": "23041",
"expiration_date": "EXPIRED"
}
]
},
"status": "success"
}
}About the Mn API
What the API Returns
The search_licenses endpoint queries the Minnesota AELSLAGID public license roster by last name and returns a total count alongside a results array. Each record in the array contains full_name, license_number, profession, and expiration_date. The profession field distinguishes all disciplines regulated by the board: Architecture, Engineering (various specialties), Land Surveying, Landscape Architecture, Geoscience, and Interior Design.
Searching by Last Name
The single required parameter is last_name. The endpoint supports partial matches, so submitting John will return records for Johnson, Johns, Johnsen, and any other last name beginning with that string. This makes it useful for fuzzy lookups when the exact spelling is uncertain. There is no first-name filter; narrowing results must be done client-side against the returned full_name field.
License Verification Use
The expiration_date field in each record indicates current licensure status — comparing it against today's date tells you whether a credential is active. The license_number is the board-assigned identifier and can be used to cross-reference credentials in legal, contracting, or compliance workflows. All professions in the AELSLAGID board's jurisdiction appear in the same response, so a single query may return records across multiple disciplines for common last names.
The Mn API is a managed, monitored endpoint for roster.aelslagid.state.mn.us — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when roster.aelslagid.state.mn.us 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 roster.aelslagid.state.mn.us 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 active licensure status of a Minnesota engineer or architect before awarding a contract, using the expiration_date field
- Build a credential-checking tool for construction procurement that flags expired professional licenses
- Aggregate license data for all professionals sharing a last name to identify potential candidates in a hiring pipeline
- Confirm a surveyor or geologist holds a valid Minnesota board license during due diligence on a land transaction
- Power a compliance dashboard that monitors license expiration dates across a firm's registered professionals
- Cross-reference license numbers submitted on permit applications against the state board roster
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the Minnesota AELSLAGID board provide an official developer API?+
What does search_licenses return, and how do I distinguish between professions in the results?+
total integer and a results array. Each element includes full_name, license_number, profession, and expiration_date. The profession field carries the board discipline text (e.g., 'Civil Engineer', 'Architect', 'Geologist'), so you can filter client-side to isolate records for a specific discipline.Can I search by first name, license number, or city?+
last_name only. First name, license number, city, and company name filters are not exposed. You can fork this API on Parse and revise it to add those additional search parameters if the source supports them.Does the API return license status (active/inactive) explicitly?+
expiration_date against the current date. Records for expired licenses are included in results alongside active ones.