New York Professional License Scraper (OP) avatar

New York Professional License Scraper (OP)

Pricing

from $6.15 / 1,000 results

Go to Apify Store
New York Professional License Scraper (OP)

New York Professional License Scraper (OP)

Verify New York licensed professionals from the NYS Office of the Professions. Search 90+ professions (doctors, nurses, pharmacists, engineers, accountants) by name or license number. Get name, profession, license number, status, registration dates, city and state.

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

3 days ago

Last modified

Share

New York Professional License Scraper (OP)

New York Professional License Scraper (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
}

The most complete New York professional license scraper available. It returns every field the New York State Office of the Professions verification system exposes for each licensee, including the registration status, licensure and registered-through dates, qualifications, school and enforcement actions, and lets you search by name or license number across 90+ licensed professions.

📥 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.

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.
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.
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.

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.