Virginia Physician License Verification Scraper
Pricing
from $3.00 / 1,000 results
Virginia Physician License Verification Scraper
Verify physician, osteopathic physician, physician assistant, podiatrist, and chiropractor licenses issued by the Virginia Department of Health Professions (DHP) Board of Medicine. Search by name or look up an exact license number.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Verify physician, osteopathic physician, physician assistant, podiatrist, and chiropractor licenses issued by the Virginia Department of Health Professions (DHP), Board of Medicine. Search by name and/or ZIP code, or look up an exact license number — straight from the DHP's own public License Lookup tool (dhp.virginiainteractive.org). No login, no API key, no proxy required.
What this actor does
- Two modes:
search(name / ZIP / occupation / status) andbyLicenseNumber(exact license-number lookup, one or many) - Ten Board of Medicine occupation types: Medicine (MD), Osteopathic Medicine
(DO), Podiatry, Chiropractor, Physician Assistant, Interns & Residents, University
Limited License, Permitted Physician, Physician Selling Controlled Substances
(and its facility permit) — search one, search a custom subset (e.g. MD + DO
only) via
occupations, or search across all of them at once - License status: filter to current or expired licensees, or filter client-side by the exact status text on file (e.g. "Active", "Suspended", "Revoked", "Probation", "Expired-Compact")
- Full record: license number, occupation, name, city/state/ZIP, initial license date, expiration date, current status, and whether DHP has additional public disciplinary information on file (with a link when available)
- Empty fields are omitted — a field only appears when DHP actually published that data for the licensee
Output per license
licenseNumber— 10-digit Virginia DHP license numberoccupation— e.g.Medicine,Osteopathic Medicine,Physician AssistantfullNameaddress— raw mailing address line as published by DHP (e.g.Richmond, VA 23219)city,state,zipCode— parsed fromaddress(licensee's mailing address on file, may be outside Virginia)initialLicenseDate,expireDate— ISO dateslicenseStatus— raw status text as published by DHPhasAdditionalPublicInformation—truewhen DHP must make additional disciplinary/administrative records available under Virginia Code §54.1-2400.2.HadditionalPublicInformationUrl— link to that additional information, when providedprofileUrl/sourceUrl— canonical DHP License Lookup detail pagerecordType: "physicianLicense",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byLicenseNumber |
lastName | string | Smith | Licensee last name (mode=search; required unless zipCode given) |
firstName | string | – | Licensee first name (mode=search) |
zipCode | string | – | Licensee mailing ZIP (mode=search; required unless lastName given) |
occupation | string | Medicine | One Board of Medicine occupation, or "Any" (mode=search) |
occupations | array | – | Custom subset of two or more occupation types; overrides occupation when set (mode=search) |
addressState | string | – | Filter by licensee's mailing-address US state (mode=search) |
licenseStatus | string | any | any / current / expired (mode=search) |
statusContainsFilter | string | – | Only emit records whose status text contains this (case-insensitive) |
licenseNumbers | array | ["0101058086"] | License numbers to verify (mode=byLicenseNumber) |
maxItems | int | 20 | Hard cap on emitted records (1–300) |
Examples
Example: search by last name (default occupation = Medicine)
{"mode": "search","lastName": "Smith","maxItems": 20}
Example: search across all physician occupation types
{"mode": "search","lastName": "Patel","occupation": "any","maxItems": 50}
Example: exact license number lookup
{"mode": "byLicenseNumber","licenseNumbers": ["0101058086", "0102012345"]}
Example: custom occupation subset (MD + DO only)
{"mode": "search","lastName": "Lee","firstName": "David","occupations": ["101", "102"],"maxItems": 20}
Example: active osteopathic physicians in a ZIP code
{"mode": "search","zipCode": "23451","occupation": "102","licenseStatus": "current","maxItems": 50}
Use cases
- Credentialing & primary source verification — confirm a physician's license is current before onboarding, matching Joint Commission primary-source verification requirements
- Healthcare compliance & KYC — screen providers for disciplinary flags before contracting
- Telehealth & staffing platforms — bulk-verify provider licenses across a roster
- Patient safety research & journalism — check license status and public disciplinary history for accountability reporting
- Insurance & credentialing vendors — automate license re-verification cycles
FAQ
What is the data source? The Virginia Department of Health Professions' public License Lookup tool (dhp.virginiainteractive.org/Lookup/Index). This actor is not affiliated with or endorsed by DHP or the Commonwealth of Virginia.
Is a login or API key required? No. DHP's License Lookup is fully public and free to use.
Why did filtering statusContainsFilter: "active" also return an "Inactive" record?
The filter is a plain case-insensitive substring match against the exact status text
DHP publishes, and "Inactive" contains the substring "active". Use a more specific
phrase (e.g. "Current Active") if you need to exclude Inactive records. Note this
filter also triggers a detail-page fetch per candidate (to read the real status
text), so searches using it take a little longer than the default summary search.
Why does this only cover Virginia? DHP licenses physicians who practice in Virginia (some of whom live out of state). It is a single-state authoritative source, the same scope as this repository's other state-licensing-board actors (e.g. contractor and real estate license scrapers). It does not aggregate other states' medical boards.
What does "Your search returned too many records" mean? DHP's own search caps very broad queries (e.g. a common surname with no other filters). Add a first name, ZIP code, or narrow the occupation to get results under that cap — this actor reports the condition via a clean status message rather than guessing at a partial result set.
Why do some license numbers in byLicenseNumber return nothing?
DHP's lookup only returns unexpired records back to January 1, 2000, plus all
currently active records. A license expired before that date, or a mistyped
number, will return no match.
How fresh is the data? Every run fetches live pages directly from dhp.virginiainteractive.org — DHP itself refreshes the underlying data continuously ("Current as of" timestamp is shown on every page). There is no caching in this actor.
Data Source / Limitations
- For complete, reliable results, include a first name. DHP's own backend applies stricter rate-limiting to broad "last name only" searches (no first name) from automated/cloud clients, which can return noticeably fewer records than the true total. Combining first name + last name (or an exact license number) — the natural way to verify one specific physician — is not affected and returns complete, accurate results every time. If you need a broad roster of everyone with a given surname, run the search from a residential connection instead.
- Single-state scope (Virginia DHP, Board of Medicine occupations only).
licenseStatusis free text exactly as published by DHP — it is not a fixed enum, since DHP does not publish an exhaustive list of every possible status.- Looking up by license number returns whatever license is on file for that number, even if it belongs to an occupation outside this actor's physician scope (DHP license numbers are shared across all professions it regulates).
- Addresses are mailing addresses only (city/state/ZIP) — DHP does not publish street addresses in the public lookup.
- DHP's site also offers a third search form (last 4 digits of SSN + last name). This actor does not expose it — the two modes above already cover every reliable name/ZIP/occupation/status and exact-license-number lookup path, and we intentionally avoid asking users to submit even partial SSN data.
- No city or county search field exists upstream. The License Lookup form
only offers State (dropdown) and ZIP code as geographic filters — there is no
separate city/county input on the live form to expose.
cityin the output is parsed from the licensee's mailing address, not searchable as an input. - No sort options exist on the results listing. DHP's search-results table
has plain (non-sortable) column headers; results come back in whatever order
the database returns them, so this actor does not offer a
sortByinput. - Board disciplinary case decisions (notices/orders) are not fetched as
structured data. When DHP has additional public information on a
licensee, the "Yes" link on the detail page (
additionalPublicInformationUrl) points to a separate legacy system atdhp.virginia.gov/enforcement/cdecision/(classic ASP, not thedhp.virginiainteractive.orgsite this actor scrapes). Verified live: the initial disclaimer page loads (200), but submitting it consistently returns500 Internal Server Errorfrom DHP's own server — the endpoint itself is broken, not merely gated. This actor still surfaces the link exactly as DHP publishes it so users can try it manually; it does not attempt to scrape structured case content from it. - DHP's homepage also advertises three paid, subscription/login-gated services — bulk "License Verification" ($95/user/year), a "License Database Download" (per-record fee), and "Case Decision Notification" emails ($200–500/user/year). None of these are exposed here; they require an account and payment, which conflicts with this actor's zero-cost, no-login design.