New York Professional License Scraper (OP)
Pricing
from $6.15 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | no | smith (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. |
profession | enum | no | ALL | Restrict 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. |
maxLicensees | integer | no | 10 | Maximum number of licensee records to collect. |
status | string | no | (any) | Keep only records whose status contains this text, case-insensitive, for example Registered. |
withDetails | boolean | no | true | Enrich 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.
| Field | Type | Description |
|---|---|---|
name | string | Licensee full name. |
profession | string | Profession name with its code, for example Licensed Practical Nursing (010). |
professionCode | string | Profession code, for example 010. |
licenseNumber | string | License number (unique per license within a profession). |
status | string | Registration status, for example Registered, Not Registered (with details on). |
city | string | City on file. |
state | string | State on file. |
address | string | City and state combined as shown by the source. |
dateOfLicensure | string | Date the license was first issued, for example August 25, 2015. |
registeredThroughDate | string | Date the current registration is valid through (with details on), or null. |
additionalQualifications | string | Additional qualifications, or a not-applicable note. |
schoolName | string | School of record, or null. |
schoolDegreeDate | string | Degree date, or null. |
privileges | string[] | Practice privileges, or a not-applicable note. |
additionalLicenses | array | Other licenses held by the person, or null. |
enforcementActions | array | Enforcement actions on record, or null. |
hasEnforcementActions | boolean | true if any enforcement action is on record. |
sourceUrl | string | Public OP verification search page. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). 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
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon 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.
Related scrapers
- NPPES NPI Healthcare Provider Data Scraper: US healthcare providers with an NPI number.
- NY DOS Business Scraper: New York registered business entities.
- California State Bar Scraper: California licensed attorneys.
- Florida MQA Health Scraper: Florida licensed health professionals.
- Florida DBPR Scraper: Florida professional and business licenses.
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.
