Michigan Medical License Lookup Scraper
Pricing
from $2.00 / 1,000 item extracteds
Michigan Medical License Lookup Scraper
Search Michigan MiPLUS Medical Doctor licenses by surname or exact license number. Export physician identity, license status, expiration and provenance for recurring credential verification.
Pricing
from $2.00 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Use this Michigan medical license lookup to retrieve public Medical Doctor license records from Michigan LARA's anonymous MiPLUS search. Search by surname or exact license number, then export physician identity, regulator status, expiration date and retrieval provenance.
Who is it for?
Credentialing teams, provider-network analysts and compliance operations can refresh known physician licenses and compare regulator snapshots. This Actor returns public licensing facts, not medical advice or a certified verification document.
Why use this Actor?
- Restricts every search to Medical Doctor instead of mixing professional categories.
- Preserves license numbers as strings and regulator status verbatim.
- Follows source pagination and deduplicates by license number across queries.
- Includes the search context, official source URL and UTC retrieval time.
- Requires no source login, paid external API key or user-managed proxy.
Getting started
- Open Input and provide one or more surname or license-number queries.
- Choose a global maximum of unique licenses.
- Start the Actor and inspect the default dataset.
- Export JSON, CSV, Excel or another Apify dataset format.
- For recurring checks, save a Task and configure an Apify schedule. Compare datasets in your own workflow; the Actor itself does not retain a history or send alerts.
{"queries":[{"lastName":"Smith"}],"maxItems":20}
For a precise known license, use:
{"queries":[{"licenseNumber":"4301010722"}],"maxItems":1}
Input parameters
| Field | Behavior |
|---|---|
queries | Required array of 1–25 objects, each containing exactly one lastName or licenseNumber. |
lastName | Nonempty surname, trimmed before submission. Matching is performed by MiPLUS; no separate case-sensitive or substring filtering is applied by the Actor. |
licenseNumber | Exact ten-digit regulator number. The returned number is checked for equality. |
maxItems | Global unique-license limit, default 20, range 1–1000. Zero/unlimited are unsupported. |
Queries run in order. Duplicate licenses from later searches are not emitted or charged again.
The earliest query producing a license supplies its query field. When the maximum is reached, remaining queries/pages are not fetched.
Extracted data
| Field | Meaning |
|---|---|
licenseType | Always Medical Doctor. |
licenseNumber | Regulator license identifier. |
firstName, middleInitial, lastName | Separate grid name components when shown. |
fullName | Practitioner name shown by the source. |
licenseStatus | Verbatim regulator status, including inactive statuses. |
expirationDate | Source date in MM/DD/YYYY, or null when blank. |
sourceUrl | Official search or single-result detail page. |
query | Normalized query first returning this license. |
scrapedAt | UTC retrieval timestamp. |
MiPLUS automatically redirects single-result searches to a detail page. Those pages provide a full name but not reliable separate name components, so components remain null rather than being guessed. No active/inactive status is inferred from dates.
Output example
A real source record retrieved by surname search:
{"licenseType": "Medical Doctor","licenseNumber": "4301010722","firstName": "Donald","middleInitial": "R","lastName": "Smith","fullName": "Donald R Smith","licenseStatus": "Deceased","expirationDate": "01/31/1991","sourceUrl": "https://aca-prod.accela.com/MILARA/GeneralProperty/PropertyLookUp.aspx?isLicensee=Y","query": {"lastName": "Smith"},"scrapedAt": "2026-10-01T06:07:28.965Z"}
How much does it cost to look up Michigan medical licenses?
The Actor charges a one-time $0.005 start fee plus a fee for each unique license delivered. BRONZE pricing is $0.003332 per license; FREE is $0.0038318, SILVER $0.002599, and GOLD/PLATINUM/DIAMOND $0.0019992.
At BRONZE prices, estimated Actor event charges are $0.008332 for 1 result, $0.03832 for 10 results and $0.1716 for 50 results. A valid no-result search incurs only the start fee. Apify spend tiers depend on qualifying monthly Store spend, not the number of licenses in this Actor's run. See the platform pricing panel for applicable charges and usage treatment.
Limits and coverage
This product covers the Medical Doctor category only. It excludes osteopathic physicians, educational/limited medical licenses, other professions, disciplinary history, addresses and certified license verification documents. It is a bounded query tool, not a guaranteed complete Michigan physician roster.
Upstream result coverage/order may change. A broad surname can return old or deceased licensees alongside active physicians. Review the status field rather than treating every returned record as authorized to practice. The Actor stops at a safe 100-page query ceiling and fails if the source exposes more results without a usable next-page link.
Failure behavior and troubleshooting
Malformed query combinations fail before extraction. A recognized no-result response succeeds with zero records. Unexpected HTML, changed column structures, wrong profession, wrong license number, login/challenge pages and repeated pagination fail rather than silently producing misleading data.
Transient network errors, 429 and selected 5xx responses receive at most two retries per request. No automatic residential proxy or browser fallback is enabled. A failed run can contain records delivered before the failure; inspect run status before relying on completeness.
Integrations
- Export snapshots to a spreadsheet for credentialing review.
- Join
licenseNumberto your internal provider roster; never join by name alone when identities may collide. - Use an Apify webhook after a successful scheduled Task to download results into your warehouse.
- Compare
licenseStatusandexpirationDatebetween snapshots in your own pipeline. The Actor does not implement historical storage or notifications.
API access
Set your own APIFY_TOKEN securely and run:
curl -X POST -H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \'https://api.apify.com/v2/acts/automation-lab~michigan-medical-license-records/run-sync-get-dataset-items' \-d '{"queries":[{"lastName":"Smith"}],"maxItems":10}'
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/michigan-medical-license-records').call({ queries: [{ lastName: 'Smith' }], maxItems: 10 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/michigan-medical-license-records').call(run_input={'queries': [{'lastName': 'Smith'}], 'maxItems': 10})items = client.dataset(run['defaultDatasetId']).list_items().items
MCP setup
For Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/michigan-medical-license-records"
Claude Desktop, Cursor, and VS Code clients supporting HTTP MCP can use this endpoint configuration, with authentication configured securely in their client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/michigan-medical-license-records"}}}
Example prompts: “Find up to 10 Michigan Medical Doctor licenses with surname Smith” or “Look up Michigan license 4301010722 and return its regulator status and expiration.” Availability through hosted MCP depends on platform exposure and authentication.
Legality, responsible use and data handling
This independent Actor is not affiliated with or endorsed by Michigan LARA, MiPLUS or Apify. Source names are used to identify the records. Apify's standard terms apply; no additional custom end-user terms are imposed.
The Actor processes publicly accessible practitioner names, license identifiers, status and dates. Use records for lawful credential verification; do not treat public availability as permission for discriminatory use or unsolicited marketing. Verify consequential decisions against the official regulator and obtain certified verification when required.
No AI is used during extraction, and no input or record is sent to an AI provider. The only external source requests go to Michigan's Accela portal. Execution, logs and results use Apify infrastructure. Session cookies remain in memory only and are discarded at run termination. The Actor writes no persistent cross-run cache.
Results remain in your run's Apify storage under your account's retention settings until expired or deleted; this Actor does not set a custom retention period. Delete datasets, run storage and logs through Apify when no longer needed. Names and license identifiers are intentional dataset fields, not log content. Do not publish datasets unnecessarily.
FAQ
Does this verify every physician in Michigan? No. It queries the regulator's Medical Doctor category and returns a limited snapshot of the requested searches.
Why are the name components null for an exact number? The single-result detail page supplies only a full name. The Actor does not infer how that name should be split.
Does an empty expiration imply an active license? No. Null means the regulator did not display that date.
Can I monitor changes? Schedule recurring Apify Tasks and compare their outputs externally; alerts and historical diffs are not built in.
Where can I report an issue? Use the Actor's Apify Store Issues tab and include the input and run link, without secrets.
Related Actors
For complementary identity data, use NPPES NPI Registry Provider Search. NPI taxonomy license identifiers do not replace Michigan regulator status. For a different jurisdiction's official roster, see West Virginia Physician License Roster.