New York Professional License Lookup & Verification Scraper avatar

New York Professional License Lookup & Verification Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
New York Professional License Lookup & Verification Scraper

New York Professional License Lookup & Verification Scraper

Look up and verify New York professional licenses with no API key. Search the NYSED Office of the Professions by name or license number across 90+ professions (doctors, nurses, PE, CPA, pharmacists, dentists). Get status, registration dates, school and enforcement. Batch or single lookups.

Pricing

from $6.15 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

New York Professional License Scraper (OP)

New York Professional License Lookup and Verification Scraper (NYSED OP)

Here is one real result, with every field the actor returns:

{
"name": "SMITH AARON DOUGLAS",
"profession": "Licensed Practical Nursing (010)",
"professionCode": "010",
"licenseNumber": "323219",
"status": "Registered",
"city": "WATERVILLE",
"state": "NY",
"address": "WATERVILLE NY",
"dateOfLicensure": "August 25, 2015",
"registeredThroughDate": "October 31, 2026",
"additionalQualifications": "Not applicable in this profession",
"schoolName": null,
"schoolDegreeDate": null,
"privileges": ["Not applicable in this profession"],
"additionalLicenses": null,
"enforcementActions": null,
"hasEnforcementActions": false,
"sourceUrl": "https://www.op.nysed.gov/verification-search",
"observedAt": "2026-08-14T12:15:56.310Z",
"error": null
}

New York professional license lookup and verification, with no API key. This is the most complete New York State license verification scraper on Apify: it returns every field the New York State Office of the Professions (NYSED OP) verification system exposes for each licensee, and lets you search by name or license number across 90+ licensed professions in one run. Use it for license verification, credential and primary-source verification, KYB and compliance checks, healthcare and provider credentialing, contractor and expert-witness due diligence, HR background screening, and professional-license lead generation.

Search a single name, a license number, or a whole batch of names and license numbers, across every profession or one. Each record includes the registration status, first-licensure and registered-through dates, qualifications, school and degree date, privileges, additional licenses, and any enforcement flag. Covers doctors, registered nurses (RN) and LPNs, nurse practitioners, physician assistants, pharmacists, dentists, professional engineers (PE), architects (RA), certified public accountants (CPA), psychologists, social workers, veterinarians and 80+ more.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the New York State Office of the Professions (OP) license verification system, applies the filters you pass as input, paginates through the matching licensees, and writes one normalized record per licensee to the run's dataset. You can search by last name, full name or license number, across every profession or a single one. The system covers 90+ licensed professions (doctors, nurses, pharmacists, engineers, accountants, dentists, veterinarians and more).

When withDetails is on, each matched licensee is enriched with the registration status, the registered-through date, additional qualifications, privileges, school and any enforcement actions. Turn it off for a faster, lighter run that returns the name, profession, license number, city, state and licensure date from the results list. Missing source values are returned as null, never invented.

The NYSED OP verification system publishes city and state for each licensee, not a street address, ZIP, county, phone number or email. Those fields are not exposed by the source, so this actor does not invent them. For physicians, formal discipline is held by the NY Department of Health rather than NYSED, so the enforcementActions field reflects what OP publishes.

Why this scraper

A strict superset of the other NYSED license actors on Apify: it accepts everything they take (single lookups, and batch licenseeNames / licenseNumbers arrays) and returns everything they return, plus cross-profession search, a status filter, and privileges/additional-licenses fields.

CapabilityThis actorTypical NYSED competitor
Search by nameYesYes
Search by license numberYesYes
Batch lookups (many names / license numbers per run)Yes (queries, plus licenseeNames / licenseNumbers aliases)Yes
Cross-profession search (ALL) in one queryYes (fans out across 90+ professions)No (one profession per query)
Status filter (keep only Registered, etc.)YesNo
Registration status, first-licensure and registered-through datesYesYes (full tier)
School, degree date, qualificationsYesYes (full tier)
Privileges and additional licenses heldYesPartial
Enforcement action flag and detailsYesYes (full tier)
Free-user results per run10Varies
Pay only for records returned, never on failureYesYes

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 licensees named "smith" across all professions, with full details.

{
"query": "smith",
"profession": "ALL",
"maxLicensees": 10,
"withDetails": true
}

To look up a license number, set query to the digits and pick a specific profession code so the exact license can be resolved. Every input field is optional.

Input reference

FieldTypeRequiredDefaultDescription
querystringnosmith (prefill)A last name (smith), a full name (smith john), or a license number (digits only). For a license number, also set a specific profession.
queriesarrayno[]Batch lookup. Each item is a name or license number (string), or an object like {"query":"099740","profession":"060"} to scope it to a profession. The competitor fields licenseeNames and licenseNumbers are also accepted, so existing configs drop in unchanged. Shares the maxLicensees budget across all items.
professionenumnoALLRestrict to one licensed profession by code (for example 060 Doctor, 022 RN, 020 Pharmacist), or ALL for every profession. Required to resolve a license number.
maxLicenseesintegerno10Maximum number of licensee records to collect across the whole run.
statusstringno(any)Keep only records whose status contains this text, case-insensitive, for example Registered.
withDetailsbooleannotrueEnrich each licensee with status, registration dates, qualifications, school and enforcement actions. Turn off for a faster list-only run.

Output reference

One dataset item per licensee. Types: string, boolean, array, or null when the source value is absent.

FieldTypeDescription
namestringLicensee full name.
professionstringProfession name with its code, for example Licensed Practical Nursing (010).
professionCodestringProfession code, for example 010.
licenseNumberstringLicense number (unique per license within a profession).
statusstringRegistration status, for example Registered, Not Registered (with details on).
citystringCity on file.
statestringState on file.
addressstringCity and state combined as shown by the source.
dateOfLicensurestringDate the license was first issued, for example August 25, 2015.
registeredThroughDatestringDate the current registration is valid through (with details on), or null.
additionalQualificationsstringAdditional qualifications, or a not-applicable note.
schoolNamestringSchool of record, or null.
schoolDegreeDatestringDegree date, or null.
privilegesstring[]Practice privileges, or a not-applicable note.
additionalLicensesarrayOther licenses held by the person, or null.
enforcementActionsarrayEnforcement actions on record, or null.
hasEnforcementActionsbooleantrue if any enforcement action is on record.
sourceUrlstringPublic OP verification search page.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"query": "smith", "profession": "ALL", "maxLicensees": 10, "withDetails": true}). This licensee's registration has lapsed:

{
"name": "SMITH AARON N",
"profession": "Licensed Practical Nursing (010)",
"professionCode": "010",
"licenseNumber": "300946",
"status": "Not Registered",
"city": "WATERTOWN",
"state": "NY",
"address": "WATERTOWN NY",
"dateOfLicensure": "April 21, 2010",
"registeredThroughDate": "March 31, 2013",
"additionalQualifications": "Not applicable in this profession",
"schoolName": null,
"schoolDegreeDate": null,
"privileges": ["Not applicable in this profession"],
"additionalLicenses": null,
"enforcementActions": null,
"hasEnforcementActions": false,
"sourceUrl": "https://www.op.nysed.gov/verification-search",
"observedAt": "2026-08-14T12:15:56.310Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~ny-professions-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"query":"smith","profession":"060","maxLicensees":25,"withDetails":true}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~ny-professions-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"query":"garcia","profession":"022","status":"Registered","maxLicensees":100}'

Apify CLI:

apify call scrapers_lat/ny-professions-scraper \
--input '{"query":"099740","profession":"060"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per licensee record returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxLicensees.

FAQ and troubleshooting

A run returned 0 records. Why? The name or license number matched nothing. Check the spelling, or widen the search by setting profession to ALL. Zero-result runs are not charged.

How do I look up an exact license number? Set query to the digits and pick a specific profession code so the system can resolve the exact license.

Can I verify many licensees in one run? Yes. Put a list in queries, where each item is a name or license number, or an object like {"query":"099740","profession":"060"}. The licenseeNames and licenseNumbers array inputs used by other NYSED actors are accepted too, so an existing config runs here unchanged. The whole batch shares one maxLicensees budget.

Do you return a street address, ZIP, phone or email? No. The NYSED OP verification system publishes only city and state for each licensee. Street address, ZIP, county, phone and email are not exposed by the source, so they are not returned rather than guessed.

Why are status and registration dates missing? withDetails was off. Turn it on to enrich each licensee with the registration status, registered-through date, qualifications and school.

How do I find only currently registered professionals? Set status to Registered. Records whose status does not contain that text are dropped.

Which professions are covered? 90+ licensed professions, from doctors, nurses and pharmacists to engineers, accountants, dentists and veterinarians. Pick one by code in profession, or use ALL.

Is this an official New York State tool? No. This actor is independent and has no affiliation with the New York State Education Department or Office of the Professions. It reads only data that is publicly available through the OP license verification system.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the New York State Education Department or Office of the Professions. Accesses only publicly available data from the OP license verification system.