# Dentist Leads Pro (`red.cars/dentist-leads-pro`) Actor

Instant dentist leads from the national provider registry: NPI, name, practice address, direct phone, license number and specialty. Filter by state, city, ZIP or specialty. Clean, export-ready JSON for outreach.

- **URL**: https://apify.com/red.cars/dentist-leads-pro.md
- **Developed by:** [AutomateLab](https://apify.com/red.cars) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 dentist leads

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

## Dentist Leads Pro

Verified dentist and dental clinic leads with NPI number, practice address, phone, license and specialty details, filtered by state, city, ZIP code and dental specialty.

### Why Dentist Leads Pro

Most dentist lead tools either keyword-search generic listings or stop at raw NPI lookups. Dentist Leads Pro targets dentists by specialty and returns outreach-ready rows: every result carries a real practice location address, phone number and license details from the national provider registry.

**Comparison:** the highest-traffic dentist lead scraper today is samstorm/dentist-lead-scraper (12 users last 30 days, no reviews), and the closest NPI-based competitor pink_comic/nppes-npi-registry (8 users last 30 days, no reviews, $2.00 per 1,000 results) returns raw registry records without specialty targeting or pre-filtering. Dentist Leads Pro is built for outreach: specialty targeting, deduplication, and every row verified to carry a practice address before it is returned.

### Features

- Target by US state, city, ZIP code and dental specialty (general, orthodontics, oral surgery, pediatric, periodontics, endodontics, prosthodontics)
- NPI number, name and credential, organization vs individual classification
- Practice address with street, city, state, ZIP, phone and fax
- License details per taxonomy with primary-specialty flag
- Deduplication by NPI and a hard result cap
- Rows without a practice location are filtered before they are returned, so you never pay for unusable records

### Use cases

- Dental equipment and supply sales teams building territory lists
- Dental labs recruiting partner practices
- DSOs and PE firms mapping acquisition targets by specialty density
- Recruiters sourcing dentists for openings by state and specialty
- Insurance brokers and benefits platforms verifying provider networks
- Local marketers validating dental service areas

### Input

| Field | Type | Description | Default |
| --- | --- | --- | --- |
| State | String | Two-letter US state code, required | TX |
| City | String | Optional city filter | empty |
| ZIP code | String | Optional 5-digit ZIP filter | empty |
| Specialty | Select | Dental specialty to target | Dentist (all) |
| Max results | Integer | Cap on returned rows, 1 to 5000 | 10 |

### Output

Every row is one dentist or dental clinic lead:

| Field | Description |
| --- | --- |
| npi | National provider identifier |
| name | Provider or organization name |
| credential | Degree or credential (DDS, DMD, and so on) |
| isOrganization | True for clinics, groups and DSO entities |
| specialty | Primary taxonomy description |
| taxonomyCodes | All taxonomies with code, description, license and state |
| practiceAddress | Street, city, state, ZIP, country, phone, fax |
| mailingAddress | Mailing address where it differs from the practice |
| phone / otherPhone | Practice and secondary phone numbers |
| enumerationDate / lastUpdated | Registry dates for freshness checks |
| status | Registry status flag |

### Pricing

- $0.005 per run
- $0.003 per lead returned ($3.00 per 1,000)

You are charged only for rows returned. Records filtered out before delivery are not charged.

### FAQ

**How current is the data?**
Rows come from the national provider registry with each provider's last-updated date included, so you can filter on freshness before outreach.

**Does it include emails?**
No. It returns verified NPI, practice address, phone and license details. Use a separate email enrichment step on the NPIs you want.

**Can I target specialists only?**
Yes. Pick a specialty such as Orthodontics or Oral and Maxillofacial Surgery in the Specialty field.

**Can I run a whole state?**
Yes. Leave city and ZIP empty and raise Max results up to 5000. Runs page through the registry until the cap is reached.

**Is it good for organization targets like DSOs?**
Yes. Every row flags whether the NPI is an individual provider or an organization, so you can split clinic lists from provider lists.

### Send your leads straight to your pipeline

Every run lands as clean JSON/CSV in the run dataset, ready to push into HubSpot, Pipedrive, HighLevel, Instantly, Smartlead, or Lemlist through Apify's built-in Zapier, Make, and n8n integrations, or straight into Google Sheets. Scrape in the morning, sequence outreach the same day.

# Actor input Schema

## `state` (type: `string`):

Two-letter US state code, e.g. TX, FL, CA.

## `city` (type: `string`):

Optional city filter, e.g. Dallas.

## `zip` (type: `string`):

Optional 5-digit ZIP code filter.

## `specialty` (type: `string`):

Dental specialty to target.

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

Maximum number of lead rows to return.

## Actor input object example

```json
{
  "state": "TX",
  "specialty": "Dentist",
  "maxResults": 10
}
```

# Actor output Schema

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

Dentist and dental clinic lead rows with NPI, practice address, phone and license details.

# 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 = {
    "state": "TX",
    "city": "",
    "zip": "",
    "specialty": "Dentist",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("red.cars/dentist-leads-pro").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 = {
    "state": "TX",
    "city": "",
    "zip": "",
    "specialty": "Dentist",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("red.cars/dentist-leads-pro").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 '{
  "state": "TX",
  "city": "",
  "zip": "",
  "specialty": "Dentist",
  "maxResults": 10
}' |
apify call red.cars/dentist-leads-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,red.cars/dentist-leads-pro"
        }
    }
}
```

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/3aEd7gYq4XLyukjeQ/builds/Jcg42W8sbXNcxIcVf/openapi.json
