Professional License Lookup Scraper — DE + CO Roster Export avatar

Professional License Lookup Scraper — DE + CO Roster Export

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Professional License Lookup Scraper — DE + CO Roster Export

Professional License Lookup Scraper — DE + CO Roster Export

Bulk-export professional and occupational license rosters from Delaware and Colorado state licensing-board open-data portals — nursing, real estate, contractors, medical, accountancy and more, one call per state, with disciplinary flags where published. No API key, no login.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share


🎯 What this scrapes

This Actor bulk-exports professional and occupational license rosters from official state licensing-board open-data portals — Delaware and Colorado in v1 (more states coming) — and returns one structured row per licensee per state. Each row carries the licensee's name, license number, profession, license type, current status, issue and expiration dates, and a disciplinary-action flag with detail where the state publishes one.

We built this as a self-serve alternative to paying for a dozen near-identical single-state, single-profession scrapers. One call per state buys you coverage across nursing, real estate, contractors and trades, medical practice, accountancy, and dozens of other regulated professions — not one narrow niche. It queries each state's own free, keyless Socrata open-data API directly, not a paywalled search UI.

🔥 What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so every request looks like a browser, not Python.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per request, Retry-After honoured.
  • 🧱 Graceful degradation per state — if one state's dataset hiccups, that state is skipped with a warning; your batch keeps running.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, a shared cross-state schema despite each state publishing wildly different raw field names.
  • 🧩 Disciplinary-signal resolution done right — Delaware's inline flag is a dead column (always "N"); we join the state's companion disciplinary dataset instead of trusting it.
  • 💰 Pay-Per-Event pricing — you only pay for licensee rows that land in your dataset. No data, no charge (beyond the small warm-up fee).

💡 Use cases

  • Background-check / HR / compliance vendors — verify a candidate or contractor's professional license is current before a hire or engagement.
  • Staffing agencies — bulk-pull active licensees in a profession/region for a candidate pipeline.
  • Lead-gen / sales prospecting — build a contact list of licensed professionals in a target trade or profession.
  • Insurance underwriting — confirm license status and disciplinary history before binding a policy.
  • List hygiene — drop licensees whose status_normalized comes back inactive, or filter to disciplinary_only before outreach.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Leave Jurisdictions at its default (DE, CO) for both states, or narrow to one.
  3. Optionally set Profession query (e.g. "nursing"), Name query, or License number to narrow the pull — leave all three blank for a full roster export.
  4. Toggle Active licenses only / Disciplinary actions only as needed, and set Max results.
  5. Click Start. Rows stream into the run's dataset as each jurisdiction is paginated.
  6. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
jurisdictionsarrayno["DE","CO"]Which state licensing rosters to query (more states coming).
professionQuerystringnoSubstring filter against the profession/license-type field (e.g. "nursing", "real estate", "roofing"). Omit for a full multi-profession roster pull.
nameQuerystringnoSubstring filter on licensee last/combined name.
licenseNumberstringnoExact license-number lookup — narrows to (at most) one licensee per jurisdiction.
activeOnlybooleannotrueRestrict to active/current license status per jurisdiction's own status vocabulary.
disciplinaryOnlybooleannofalseRestrict to licensees with a disciplinary action on file.
maxResultsintegerno500Cap total rows across all requested jurisdictions (1-500,000).
proxyConfigurationobjectno{"useApifyProxy": false}Optional — these are public open-data APIs, not known to fingerprint clients.

Example input

{
"jurisdictions": ["DE", "CO"],
"professionQuery": "nursing",
"activeOnly": true,
"disciplinaryOnly": false,
"maxResults": 500,
"proxyConfiguration": {"useApifyProxy": false}
}

📤 Output

Every row is one matched licensee for one jurisdiction.

FieldTypeNotes
jurisdictionstringDE or CO.
licensee_namestringCombined/individual or business name on file.
license_numberstringState's on-file license number.
professionstringNormalized profession/category label.
license_typestring | nullSpecific license-type/subtype label.
statusstring | nullRaw state status label.
status_normalizedstringactive, inactive, or unknown — derived per-state.
issue_datestring | nullISO YYYY-MM-DD.
expiration_datestring | nullISO YYYY-MM-DD.
disciplinary_flagbooleanDerived per per-jurisdiction disciplinary signal.
disciplinary_detailstring | nullDisposition text/action, only populated when disciplinary_flag is true.
citystring | nullMailing city on file.
mailing_statestring | nullMailing-address state on file (may differ from jurisdiction).
source_record_urlstringDirect SODA resource query, or CO's linktoverifylicense when present.
registry_urlstringThe state's open-data dataset landing page.
scraped_atstringISO 8601 UTC timestamp this row was written.

Example output

{
"jurisdiction": "DE",
"licensee_name": "SHAHAN,BRIAN",
"license_number": "RS-0037427",
"profession": "Real Estate",
"license_type": "Salesperson",
"status": "Active",
"status_normalized": "active",
"issue_date": "2021-09-14",
"expiration_date": "2028-04-30",
"disciplinary_flag": false,
"disciplinary_detail": null,
"city": "WILMINGTON",
"mailing_state": "DE",
"source_record_url": "https://data.delaware.gov/resource/pjnv-eaih.json?license_no=RS-0037427",
"registry_url": "https://data.delaware.gov/d/pjnv-eaih",
"scraped_at": "2026-07-18T12:00:00+00:00"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.005One-off warm-up charge per run
result-row$0.005Per matched licensee row written to the dataset

Example: 1 000 matched rows ≈ $5.00. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

This is a v1 with 2 confirmed states (DE, CO) — more states are on the roadmap. Illinois' broad multi-profession dataset was evaluated but excluded: its host (illinois-edp.data.socrata.com) publishes a blanket Disallow: / in robots.txt, so we don't scrape it, even though the JSON endpoint itself is technically public. Delaware's inline disciplinary_action column is a dead field (always "N" across the full roster) — the real signal only exists in Delaware's companion disciplinary dataset, which we join automatically; don't rely on any third-party mirror that reads DE's inline column directly. Colorado license numbers are not globally unique across profession prefixes, so an exact licenseNumber lookup on CO can return more than one licensee. Dataset freshness is whatever each state's open-data snapshot publishes — not a real-time transactional lookup.

❓ FAQ

Why only 2 states in v1?

Delaware and Colorado are the states we've confirmed publish a genuinely free, keyless, multi-profession Socrata dataset sourced from the licensing board itself — and whose robots.txt doesn't block the JSON endpoint. Adding a 3rd state is a contained per-state adapter, not a rewrite; more are on the roadmap.

Does this cover attorneys / bar licenses?

No. Neither state's licensing-board portal includes attorneys — bar admission is handled by a separate body and isn't open data in v1.

How current is the data?

It's exactly as current as each state's own open-data snapshot. Neither state's dataset is a real-time transactional lookup — treat status/disciplinary_flag as "as published in the state's snapshot."

Can I get every profession in one run?

Yes — leave professionQuery blank for a full multi-profession roster pull across whichever jurisdictions you select.

What does disciplinaryOnly change?

It restricts the pull server-side to licensees with a disciplinary action on file, instead of the full roster — useful for compliance and risk-screening workflows.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a 3rd state added? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.