# NYSED Professional License Verification API (`ws_tony/nysed-professional-license-search`) Actor

Verify any New York State licensed professional — physicians, nurses, PEs, CPAs, architects, dentists, pharmacists, and 110+ more — directly from NYSED. $0.005–$0.020 per record. Empty searches never charged.

- **URL**: https://apify.com/ws\_tony/nysed-professional-license-search.md
- **Developed by:** [Tony](https://apify.com/ws_tony) (community)
- **Categories:** Business, Lead generation, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event + usage

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## NYSED Professional License Verification — New York State License Lookup API

**Verify any New York State licensed professional in seconds.** This actor searches the New York State Education Department (NYSED) Office of the Professions registry — the official, authoritative source for **physician**, **registered nurse**, **professional engineer (PE)**, **architect (RA)**, **certified public accountant (CPA)**, **dentist**, **pharmacist**, **veterinarian**, **licensed clinical social worker (LCSW)**, **chiropractor**, **podiatrist**, **psychologist**, **physical therapist**, **occupational therapist**, **speech-language pathologist**, and **100+ other licensed professions** in New York.

Use it for **license verification**, **healthcare credentialing**, **expert witness vetting**, **contractor due diligence**, **HR background checks**, and **provider directory enrichment** — at a fraction of the cost of enterprise verification services and fresher than third-party aggregators.

### Why this actor

| | This actor | NYSED website | Enterprise aggregators |
|---|---|---|---|
| **Bulk search** | Yes — array input, parallel | One name at a time, manual | Yes |
| **Structured JSON output** | Yes — stable schema | HTML scraping required | Yes |
| **Pricing** | $0.005–$0.020 / record | Free but unusable at scale | $0.50–$5.00 / record + license fee |
| **Data freshness** | Live, every run | Live | Days to weeks behind |
| **API contract stability** | Versioned schema | None | Changes without notice |
| **Setup time** | 60 seconds | N/A | Sales call + contract |

### Pricing

Pay only for records actually returned. Empty searches and failed lookups are never charged.

| Tier | Price per record | What's included |
|---|---:|---|
| **Basic** (`licensee_basic`) | **$0.005** | Licensee name, profession, 3-digit profession code, license number, date of licensure, registered-through date, city + state, deep link to NYSED source page |
| **Full** (`licensee_enriched`) | **$0.020** | Everything in Basic, plus license status (registered / inactive / suspended / revoked / surrendered / expired), school of degree, degree date, additional qualifications, privileges, additional licenses, certificate of authorizations, and enforcement-action history |

A typical run of 1,000 enriched records costs **$20**. The same lookup against a verification-as-a-service vendor costs $500+ and takes a week to onboard.

### Use cases

- **Healthcare credentialing teams** — batch-verify physician, PA, NP, RN, LPN, and pharmacist licenses every quarter against a roster of staff.
- **Healthcare and engineering recruiters** — confirm candidate licenses before extending offers; pull contact-adjacent data (city, profession, school) for sourcing.
- **Hospital privileging committees** — pull enforcement-action history alongside license status in one call.
- **Engineering and architecture firms** — verify PE and RA stamps before bidding on NY-based projects.
- **Law firms and expert-witness brokers** — vet expert credentials, school of degree, and discipline history.
- **Insurance carriers and PBMs** — keep provider networks compliant; flag expired or inactive licenses.
- **Compliance and KYC SaaS** — feed structured NY license data into your platform without building a scraper.
- **Investigative journalism and litigation support** — research licensed professionals named in public records.

### Quick start — name search

```json
{
  "licenseeNames": [
    { "name": "Sullivan", "professionCode": "060" },
    { "name": "Patel",    "professionCode": "016" }
  ],
  "enrichmentLevel": "full",
  "maxResultsPerSearch": 50
}
````

### Quick start — direct license-number lookup

```json
{
  "licenseNumbers": [
    { "professionCode": "060", "licenseNumber": "330968" },
    { "professionCode": "007", "licenseNumber": "099123" }
  ],
  "enrichmentLevel": "full"
}
```

### Profession codes

NYSED assigns each profession a 3-digit code. The most common codes:

| Code | Profession | Code | Profession |
|---|---|---|---|
| `060` | Medicine (Physician — MDs & DOs) | `016` | Professional Engineer |
| `003` | Architect | `007` | Certified Public Accountant |
| `022` | Registered Professional Nurse (RN) | `010` | Licensed Practical Nurse (LPN) |
| `050` | Dentist | `051` | Dental Hygienist |
| `020` | Pharmacist | `075` | Veterinarian |
| `073` | Licensed Clinical Social Worker (LCSW) | `072` | Licensed Master Social Worker (LMSW) |
| `070` | Chiropractor | `065` | Podiatrist |
| `056` | Optometrist | `068` | Psychologist |
| `062` | Physical Therapist | `063` | Occupational Therapist |
| `058` | Speech-Language Pathologist | `057` | Audiologist |
| `018` | Licensed Mental Health Counselor | `006` | Marriage & Family Therapist |
| `023` | Physician Assistant | `029` | Nurse Practitioner — All Specialties |
| `028` | Midwife | `027` | Massage Therapist |
| `015` | Land Surveyor | `004` | Landscape Architect |
| `014` | Interior Designer | `025` | Acupuncture |

This is a partial map. The actor accepts any of the 116 codes NYSED publishes — including the full nurse-practitioner specialty breakdown (`030`–`045`), dental-anesthesia subtypes, and limited-license variants. The complete list lives at `https://api.nysed.gov/rosa/V2/licenseeProfessions`. The special value `"ALL"` searches every profession at once.

### Profession deep-dives

#### Verify a New York physician license — Medicine (code `060`)

Verify any NY-licensed physician (MD or DO). Each enriched record returns license status (active, inactive, surrendered, revoked), date of licensure, registered-through date, school of degree, and degree date. **The Board of Regents does not discipline physicians directly** — disciplinary actions live at the NY State Department of Health Office of Professional Medical Conduct, and the actor returns the deep link to that registry on every physician record so credentialing teams can pull the full DOH file in one click. Common buyers: hospital privileging committees, telehealth networks, locum-tenens staffing firms.

#### Verify a New York nurse license — RN, LPN, NP (codes `022`, `010`, `029`–`045`)

Verify Registered Professional Nurses (`022`), Licensed Practical Nurses (`010`), and the full set of Nurse Practitioner specialties — Family Health (`033`), Pediatrics (`038`), Psychiatry (`040`), Acute Care (`043`), Adult Health (`030`), Women's Health (`042`), and a dozen more. NP records carry the specialty in the `profession` field so credentialing teams don't have to map back from the code. Common buyers: home-health agencies, hospital systems, traveling-nurse staffing firms.

#### Verify a New York Professional Engineer or Architect license — AEC (codes `016`, `003`, `015`, `004`, `014`)

Verify Professional Engineer (`016`), Architect (`003`), Land Surveyor (`015`), Landscape Architect (`004`), and Interior Designer (`014`) licenses before contracting on NY-based projects. Standard for AEC firms bidding into NYC, Albany, Buffalo, and the rest of the state, and for owner's reps verifying stamping engineers on submittals. Enriched records include school of degree and additional qualifications — useful for vendor-prequal questionnaires.

#### Verify a New York CPA license — Public Accountancy (code `007`, `008`)

Verify NY-licensed Certified Public Accountants (`007`) and the smaller pool of Public Accountants (`008`) maintained by NYSED. Both are required disclosures for audit-engagement letterhead and for SEC-registered firms whose engagement partners must be in good standing. Common buyers: audit firms, broker-dealers, banking compliance teams, expert-witness brokers.

#### Verify a New York pharmacist license — Pharmacy (code `020`)

Verify NY-licensed pharmacists (`020`) and registered pharmacy technicians (`002`). Critical for PBMs, mail-order pharmacy networks, and health insurers maintaining provider directories under federal No Surprises Act and state-level network-adequacy rules.

#### Verify other licensed professions

The same call shape works for dentists (`050`), veterinarians (`075`), psychologists (`068`), physical therapists (`062`), occupational therapists (`063`), speech-language pathologists (`058`), audiologists (`057`), licensed clinical social workers (`073`), licensed mental health counselors (`018`), chiropractors (`070`), podiatrists (`065`), optometrists (`056`), and 90+ other licensed professions in New York State.

### Output schema

Every record is one row in the dataset, with this stable shape:

```jsonc
{
  "id":                     "NY-NYSED:060-231050",  // stable, dedupe-friendly
  "source_state":           "NY",
  "source_url":             "https://eservices.nysed.gov/professions/verification-search?licenseNumber=231050&professionCode=060",
  "licensee_name":          "SULLIVAN ALISON ELIZABETH",
  "first_name":             "ALISON ELIZABETH",
  "last_name":              "SULLIVAN",
  "profession":             "Medicine",
  "profession_code":        "060",
  "profession_raw":         "Medicine (060)",
  "license_number":         "231050",
  "license_status":         "active",                // normalized: active | inactive | suspended | revoked | expired | surrendered | pending
  "license_status_raw":     "Registered",            // verbatim from NYSED
  "date_of_licensure":      "2004-01-16",            // ISO 8601
  "registered_through_date":"2027-04-30",
  "city_state":             "MIDDLETOWN NY",
  "school_name":            "COLUMBIA UNIVERSITY",
  "school_degree_date":     "2002-05-22",
  "additional_qualifications": null,
  "privileges":             [],
  "additional_licenses":    [],
  "certificate_of_authorizations": [],
  "enforcement_actions":    [],
  "enforcement_note":       "The Board of Regents does not discipline physicians... see NY DOH Office of Professional Medical Conduct.",
  "scraped_at":             "2026-04-24T10:08:37.407Z",
  "enrichment_level":       "full"
}
```

The `id` field is stable across runs (`NY-NYSED:{professionCode}-{licenseNumber}`), so loading the dataset into a database and using `id` as the primary key gives you idempotent re-runs out of the box.

Basic-tier records have the same shape; the enriched-only fields (`license_status`, `school_name`, `school_degree_date`, `privileges`, `additional_licenses`, `certificate_of_authorizations`, `enforcement_actions`, `enforcement_note`) are `null` or empty arrays.

### Input reference

| Field | Type | Default | Description |
|---|---|---|---|
| `licenseeNames` | array | `[]` | List of `{ name, professionCode }` pairs. `name` is a partial-match search; `professionCode` is the 3-digit NYSED code (or `"ALL"`). |
| `licenseNumbers` | array | `[]` | List of `{ professionCode, licenseNumber }` pairs for direct lookups. One record per pair. |
| `enrichmentLevel` | enum | `"basic"` | `"basic"` or `"full"`. Drives both the data returned and the per-record charge. |
| `maxResultsPerSearch` | integer | `20` | Cap per `(name, professionCode)` pair. NYSED paginates at 20/page; the actor auto-pages up to this cap. |
| `requestTimeoutSecs` | integer | `30` | HTTP timeout per NYSED API call. Raise if you see timeout warnings; NYSED responses are typically sub-second. |
| `proxyConfiguration` | object | Apify Proxy | Apify Proxy datacenter group is sufficient (NYSED has no per-IP throttle that we observe). Configurable to residential or your own pool. |

You must supply at least one of `licenseeNames` or `licenseNumbers`.

### How fresh is the data?

Every run hits NYSED's live registry. There is no caching layer. If a license was renewed, suspended, or surrendered an hour ago, the next run reflects that change.

### Limitations

- **No street address.** NYSED publishes city + state only (`"NEW HYDE PARK NY"` or `"NOT ON FILE"`). If you need practice addresses, cross-reference the NPI registry (free for healthcare providers).
- **Physician disciplinary actions live at NY DOH, not NYSED.** The Board of Regents does not discipline physicians, physician assistants, or specialist assistants. The enriched record includes a pointer to the NY State Department of Health Office of Professional Medical Conduct; the full DOH disciplinary record is a separate data source.
- **Name search is substring-match, unweighted.** Searching `"Smith"` returns every Smith. Always narrow by `professionCode`. Searches that would return 10,000+ records are expensive and almost always indicate too broad a search term.
- **Pagination cap.** NYSED's API serves 20 records per page. The actor auto-pages up to `maxResultsPerSearch`; total results are not capped, but very broad searches will be slow and expensive.
- **Public-record limitation.** All data returned is what NYSED publishes publicly. The actor never attempts to access non-public information.

### FAQ

**Will I be charged for failed lookups?** No. Records are only charged when they're successfully pushed to the dataset. Empty result sets, network failures, and validation errors cost nothing.

**Can I search across all 116 professions at once?** Yes — set `professionCode` to `"ALL"`. Be aware that broad name searches across all professions can return very large result sets; pair with a tight `maxResultsPerSearch`.

**How do I avoid duplicates across runs?** Use the `id` field as a primary key in your destination database. It's stable across runs and uniquely identifies a `(profession, license number)` pair.

**Is this data legal to use?** Yes. NYSED publishes the verification registry as a public record under New York State law. The actor accesses only the public verification endpoint.

**What about other states?** This actor covers New York only. Other state license registries are wrapped as separate actors — see the "Related verification actors" section below for direct links to the California, Texas, and Florida equivalents.

**Why is the data different from what I see on the NYSED website?** It shouldn't be — both the website and this actor read from the same underlying registry. If you spot a discrepancy, please report it via the Issues tab.

### Sample run

A real run searching `"SULLIVAN"` in profession `060` (Medicine), basic enrichment, capped at 3 records, completes in under 5 seconds and returns:

```json
[
  { "id": "NY-NYSED:060-102749", "licensee_name": "SULLIVAN ALBERT LEO",      "license_number": "102749", "date_of_licensure": "1968-11-22", "city_state": null },
  { "id": "NY-NYSED:060-046623", "licensee_name": "SULLIVAN ALBERT W",        "license_number": "046623", "date_of_licensure": "1947-10-23", "city_state": "ROCHESTER NY" },
  { "id": "NY-NYSED:060-231050", "licensee_name": "SULLIVAN ALISON ELIZABETH","license_number": "231050", "date_of_licensure": "2004-01-16", "city_state": "MIDDLETOWN NY" }
]
```

### Related verification actors

Running cross-state credentialing or background checks? These sibling actors use the same canonical record schema (stable `id`, `source_state`, `license_status`, `enrichment_level`) so a single downstream pipeline can ingest all four states without per-state code:

- **California** — [CSLB California Contractor License Verification](https://apify.com/ws_tony/cslb-california-scraper) — verify CA-licensed general, electrical, plumbing, HVAC, and specialty contractors from the Contractors State License Board.
- **Texas** — [TDLR Texas Contractor License Verification](https://apify.com/ws_tony/tdlr-texas-contractor-license-scraper) — verify TX-licensed electricians, plumbers, HVAC techs, tow operators, and 30+ other regulated trades from the Texas Department of Licensing and Regulation.
- **Florida** — [DBPR Florida License Verification](https://apify.com/ws_tony/dbpr-florida-license-verification) — verify FL-licensed contractors, real-estate agents, cosmetologists, CPAs, and 200+ other professions from the Department of Business and Professional Regulation.

Together with this NYSED actor, the four cover roughly **40% of all licensed-professional records in the United States** by population. Same schema, same pricing model, same idempotent `id`-based deduplication.

### Keywords

New York license verification, NYSED license search, NY professional license lookup, physician license verification New York, NY PE license check, NY CPA license search, NY RN license verification, NY pharmacist license, NY architect license, NY dentist license, NY social worker license, license verification API, healthcare credentialing API, NY state license registry, Office of the Professions, NY professional license database, license status check NY, expert witness vetting, contractor verification New York, verify NY doctor license, check New York PE license number, NYSED license lookup, NY State licensed professionals.

# Actor input Schema

## `licenseeNames` (type: `array`):

List of name+professionCode pairs. `name` is a partial-match search (last or full name works well). `professionCode` is the 3-digit NYSED code — e.g. 060=Medicine (Physician), 016=Professional Engineer, 003=Architect, 007=Certified Public Accountant, 022=Registered Professional Nurse, 050=Dentist, 020=Pharmacist, 075=Veterinarian, 073=LCSW, 068=Psychologist, 062=Physical Therapist, 065=Podiatrist. Full list of 116 codes: https://api.nysed.gov/rosa/V2/licenseeProfessions. Use code `ALL` to search every profession at once.

## `licenseNumbers` (type: `array`):

Direct lookups by (professionCode, licenseNumber). Skips the name-search step — one request = one record.

## `enrichmentLevel` (type: `string`):

`basic` returns name, profession, license number, status, date of licensure, registered-through date, and city/state. `full` also pulls school of degree, degree date, additional qualifications, additional licenses, privileges, certificate of authorizations, and enforcement-action summaries.

## `maxResultsPerSearch` (type: `integer`):

Upper bound on records pushed per (name, professionCode) pair. NYSED paginates at 20 per page; the actor auto-pages up to this cap.

## `requestTimeoutSecs` (type: `integer`):

HTTP timeout applied to each NYSED API call. Raise if you see timeout warnings in the log; 30 seconds is well above their typical sub-second response time.

## `proxyConfiguration` (type: `object`):

Apify Proxy (datacenter group) is plenty for this actor — NYSED has no WAF or per-IP throttle that we've observed. Configurable here in case you want residential or your own pool.

## Actor input object example

```json
{
  "licenseeNames": [
    {
      "name": "Smith",
      "professionCode": "060"
    }
  ],
  "licenseNumbers": [],
  "enrichmentLevel": "basic",
  "maxResultsPerSearch": 20,
  "requestTimeoutSecs": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "licenseeNames": [
        {
            "name": "Smith",
            "professionCode": "060"
        }
    ],
    "licenseNumbers": [],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ws_tony/nysed-professional-license-search").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "licenseeNames": [{
            "name": "Smith",
            "professionCode": "060",
        }],
    "licenseNumbers": [],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("ws_tony/nysed-professional-license-search").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "licenseeNames": [
    {
      "name": "Smith",
      "professionCode": "060"
    }
  ],
  "licenseNumbers": [],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call ws_tony/nysed-professional-license-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ws_tony/nysed-professional-license-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NYSED Professional License Verification API",
        "description": "Verify any New York State licensed professional — physicians, nurses, PEs, CPAs, architects, dentists, pharmacists, and 110+ more — directly from NYSED. $0.005–$0.020 per record. Empty searches never charged.",
        "version": "0.0",
        "x-build-id": "bsSb4M6Ofkmj9OUx9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ws_tony~nysed-professional-license-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ws_tony-nysed-professional-license-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ws_tony~nysed-professional-license-search/runs": {
            "post": {
                "operationId": "runs-sync-ws_tony-nysed-professional-license-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ws_tony~nysed-professional-license-search/run-sync": {
            "post": {
                "operationId": "run-sync-ws_tony-nysed-professional-license-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "licenseeNames": {
                        "title": "Licensee name searches",
                        "type": "array",
                        "description": "List of name+professionCode pairs. `name` is a partial-match search (last or full name works well). `professionCode` is the 3-digit NYSED code — e.g. 060=Medicine (Physician), 016=Professional Engineer, 003=Architect, 007=Certified Public Accountant, 022=Registered Professional Nurse, 050=Dentist, 020=Pharmacist, 075=Veterinarian, 073=LCSW, 068=Psychologist, 062=Physical Therapist, 065=Podiatrist. Full list of 116 codes: https://api.nysed.gov/rosa/V2/licenseeProfessions. Use code `ALL` to search every profession at once.",
                        "default": []
                    },
                    "licenseNumbers": {
                        "title": "Direct license-number lookups",
                        "type": "array",
                        "description": "Direct lookups by (professionCode, licenseNumber). Skips the name-search step — one request = one record.",
                        "default": []
                    },
                    "enrichmentLevel": {
                        "title": "Enrichment level",
                        "enum": [
                            "basic",
                            "full"
                        ],
                        "type": "string",
                        "description": "`basic` returns name, profession, license number, status, date of licensure, registered-through date, and city/state. `full` also pulls school of degree, degree date, additional qualifications, additional licenses, privileges, certificate of authorizations, and enforcement-action summaries.",
                        "default": "basic"
                    },
                    "maxResultsPerSearch": {
                        "title": "Max results per search term",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Upper bound on records pushed per (name, professionCode) pair. NYSED paginates at 20 per page; the actor auto-pages up to this cap.",
                        "default": 20
                    },
                    "requestTimeoutSecs": {
                        "title": "Per-request timeout (seconds)",
                        "minimum": 10,
                        "maximum": 120,
                        "type": "integer",
                        "description": "HTTP timeout applied to each NYSED API call. Raise if you see timeout warnings in the log; 30 seconds is well above their typical sub-second response time.",
                        "default": 30
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy (datacenter group) is plenty for this actor — NYSED has no WAF or per-IP throttle that we've observed. Configurable here in case you want residential or your own pool.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
