# New York Attorney Search - Lawyer Leads with Phone (`pink_comic/new-york-attorney-search`) Actor

Search 435k NYS attorney registrations from the Unified Court System file on data.ny.gov (updated daily): name, law firm, phone, office address, county, year admitted, law school and registration status. Filter by city, county, firm, law school or admission year.

- **URL**: https://apify.com/pink_comic/new-york-attorney-search.md
- **Developed by:** [Ava Torres](https://apify.com/pink_comic) (community)
- **Categories:** Lead generation, Business, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 attorneys

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## New York Attorney Search - Lawyer Leads with Phone

Search **New York State attorney registrations** from the Unified Court System's official file on data.ny.gov (about 435,000 registrations, 335,000 currently registered, refreshed daily). Every attorney admitted in New York must register with the courts every two years, so this is the most complete public directory of NY-admitted lawyers, about 72% with a **phone number**.

Each result includes:

- attorney name, **law firm / employer** and **phone**
- office address, city, state, ZIP, county and country
- **year admitted**, judicial department of admission and **law school**
- registration status and next registration date
- NYS registration number

Results are newest registration first, so the default run returns newly admitted attorneys. No API key, no CAPTCHA. Pricing: **$0.002 per attorney + $0.0001 start**.

```json
{ "yearsAdmitted": ["2026"], "counties": ["New York"], "maxResults": 200 }
```

```json
{ "lawFirms": ["LLP"], "cities": ["BUFFALO"] }
```

### Use cases

Lead generation for legal tech, practice-management software, legal staffing, CLE providers, court reporting, malpractice insurance and law firm marketing; recruiting newly admitted attorneys; KYC checks on counsel.

### Limits

Point-in-time public data from the NYS courts. It has no email or practice area. Name search is a substring match on last name, first name or firm (search 'SMITH', not 'John Smith').

### Related

- [New York Notary Public Search](https://apify.com/pink_comic/new-york-notary-public-search)
- [New York Real Estate Agent Search](https://apify.com/pink_comic/new-york-real-estate-agent-search)
- [CourtListener Legal Opinions](https://apify.com/pink_comic/courtlistener-legal-opinions)

# Actor input Schema

## `query` (type: `string`):

Quick single last name, first name or law firm search (contains match). Leave blank for the newest registrations.

## `names` (type: `array`):

Attorney last/first names or law firm names, contains match, case-insensitive.

## `cities` (type: `array`):

Office city, e.g. 'NEW YORK', 'BROOKLYN', 'BUFFALO', 'ALBANY', 'WHITE PLAINS'.

## `counties` (type: `array`):

Office county, e.g. 'New York', 'Kings', 'Nassau', 'Suffolk', 'Westchester', 'Erie'.

## `states` (type: `array`):

Office state, e.g. 'NY', 'NJ', 'CT', 'CA' (attorneys admitted in NY who practice elsewhere are included).

## `zipCodes` (type: `array`):

Office ZIP code or prefix, e.g. '10017' or '100'.

## `lawFirms` (type: `array`):

Contains match on the firm or employer, e.g. 'SKADDEN', 'LEGAL AID', 'DISTRICT ATTORNEY'.

## `lawSchools` (type: `array`):

Contains match, e.g. 'Columbia', 'Fordham', 'Brooklyn Law', 'St. John'.

## `yearsAdmitted` (type: `array`):

Exact admission years, e.g. '2025', '2026' for newly admitted attorneys.

## `statuses` (type: `array`):

Only used when Active Only is off, e.g. 'Delinquent', 'Deceased', 'Resigned', 'Suspended, delinquent', 'Disbarred'.

## `activeOnly` (type: `boolean`):

Return only attorneys whose status is Currently registered or due to reregister.

## `registrationNumbers` (type: `array`):

Exact 7-digit NYS attorney registration numbers.

## `maxResults` (type: `integer`):

Maximum total paid dataset items, split across search terms. The default returns 10 attorneys (about $0.0201 including the start event).

## Actor input object example

```json
{
  "query": "",
  "names": [],
  "cities": [],
  "counties": [],
  "states": [],
  "zipCodes": [],
  "lawFirms": [],
  "lawSchools": [],
  "yearsAdmitted": [],
  "statuses": [],
  "activeOnly": true,
  "registrationNumbers": [],
  "maxResults": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset items.

# 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 = {
    "query": "",
    "names": [],
    "cities": [],
    "counties": [],
    "states": [],
    "zipCodes": [],
    "lawFirms": [],
    "lawSchools": [],
    "yearsAdmitted": [],
    "statuses": [],
    "activeOnly": true,
    "registrationNumbers": [],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("pink_comic/new-york-attorney-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 = {
    "query": "",
    "names": [],
    "cities": [],
    "counties": [],
    "states": [],
    "zipCodes": [],
    "lawFirms": [],
    "lawSchools": [],
    "yearsAdmitted": [],
    "statuses": [],
    "activeOnly": True,
    "registrationNumbers": [],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("pink_comic/new-york-attorney-search").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "query": "",
  "names": [],
  "cities": [],
  "counties": [],
  "states": [],
  "zipCodes": [],
  "lawFirms": [],
  "lawSchools": [],
  "yearsAdmitted": [],
  "statuses": [],
  "activeOnly": true,
  "registrationNumbers": [],
  "maxResults": 10
}' |
apify call pink_comic/new-york-attorney-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pink_comic/new-york-attorney-search"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cbAxpqY4A6Teymw19/builds/9WAFO8R3yGyFTHUhX/openapi.json
