Professional License Lookup Scraper icon

Lead generation

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.

Free Apify credit covers a first run. No credit card to try.

What this Actor 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.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
jurisdictions array no Which state licensing-board rosters to query (more states coming).
professionQuery string no Substring filter against the profession/license-type field (e.g. "nursing", "real estate", "roofing"). Omit for a full multi-profession roster pull.
nameQuery string no Substring filter on licensee last/combined name.
licenseNumber string no Exact license-number lookup — narrows to (at most) one licensee per jurisdiction.
activeOnly boolean no Restrict to active/current license status per jurisdiction's own status vocabulary.
disciplinaryOnly boolean no Restrict to licensees with a disciplinary action on file.
maxResults integer no Cap on total rows collected across all requested jurisdictions.
{
  "jurisdictions": [
    "DE",
    "CO"
  ],
  "professionQuery": "nursing",
  "activeOnly": true,
  "disciplinaryOnly": false,
  "maxResults": 500,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

jurisdictionlicensee_namelicense_numberprofessionlicense_typestatusstatus_normalizedissue_dateexpiration_datedisciplinary_flagdisciplinary_detailcitymailing_statesource_record_urlregistry_urlscraped_at

{
  "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

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result row emitted$0.0050Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

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.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Read more

Articles about this Actor

Related Actors

Teams that run this also run