NPI Provider Contact Finder avatar

NPI Provider Contact Finder

Pricing

from $0.70 / 1,000 results

Go to Apify Store
NPI Provider Contact Finder

NPI Provider Contact Finder

Find healthcare provider emails and contacts from NPI registry. Generate sales leads with doctor emails, LinkedIn profiles, practice websites. No API key.

Pricing

from $0.70 / 1,000 results

Rating

0.0

(0)

Developer

mick_

mick_

Maintained by Community

Actor stats

2

Bookmarked

80

Total users

9

Monthly active users

7 days ago

Last modified

Share

Find doctor emails, practice websites, and social media profiles from the NPPES NPI Registry โ€” no API key required. Search 6M+ US healthcare providers by name, specialty, or organization, then enrich each result with contact data.

Replace $50K+/year databases like IQVIA and Definitive Healthcare with pay-per-use pricing. Data comes from the official NPPES API (daily updates from CMS), not month-old 4GB file dumps.


๐ŸŒŸ Why This Beats the Alternatives

Live NPPES data, not static dumps. Most competitors sell annual database exports. This actor queries the live NPPES API โ€” updated daily by CMS โ€” so you get current licensure status, current addresses, and current specialty classifications.

Contact enrichment included. NPI Registry gives you name and address. This actor goes further: it finds the practice website, scrapes for email addresses, and extracts LinkedIn, Healthgrades, Vitals, and Zocdoc links โ€” all in one run.

Batch search built in. Query 10 specialties across 5 states in one run. Results are deduplicated by NPI number automatically โ€” no spreadsheet merging, no duplicates.

Five modes for every workflow. Search by name, specialty, or organization. Direct NPI lookup. Bulk enrichment from a CSV. Whatever your workflow, there's a mode for it.


๐ŸŽฏ Use Cases

๐Ÿฅ Medical Device & Pharma Sales Reps

Build territory lists without buying a data subscription. Search by specialty and state to get every physician in your territory with contact info, practice address, and phone โ€” ready to import into your CRM.

Example: All interventional cardiologists and cardiac surgeons in Georgia and Florida

{
"mode": "search_by_specialty",
"searchQueriesList": ["Interventional Cardiology", "Cardiac Surgery"],
"state": "GA",
"maxResults": 500,
"enableEmailEnrichment": true,
"enableLinkedInEnrichment": true
}

Run twice โ€” once for GA, once for FL. Or use two separate Actor runs.

Example: Target orthopedic surgeons in a ZIP code cluster

{
"mode": "search_by_specialty",
"query": "Orthopedic Surgery",
"city": "Houston",
"state": "TX",
"maxResults": 200,
"enableEmailEnrichment": true,
"enableSocialMediaEnrichment": true
}

๐Ÿงช Clinical Research Organizations (CROs)

Find principal investigators for clinical trials by specialty, location, and institution. Skip the manual CLINICALTRIALS.GOV โ†’ Google โ†’ LinkedIn chain.

Example: Oncologists at academic medical centers in specific states

{
"mode": "search_by_specialty",
"searchQueriesList": ["Medical Oncology", "Hematology & Oncology", "Radiation Oncology"],
"state": "MA",
"enumerationType": "NPI-1",
"maxResults": 300,
"enableEmailEnrichment": true
}

Example: Bulk enrich your existing investigator list

Already have a list of NPI numbers from a previous study? Skip the search entirely:

{
"mode": "bulk_lookup",
"npiNumbers": ["1871538041", "1932102168", "1245319599", "1508943127"],
"enableEmailEnrichment": true,
"enableLinkedInEnrichment": true
}

๐Ÿ“Š Healthcare Marketing Agencies

Build segmented lists for digital campaigns. Target by specialty, geography, and organization type. Get LinkedIn profiles for account-based targeting on social platforms.

Example: Primary care physicians in the Northeast for a telehealth campaign

{
"mode": "search_by_specialty",
"searchQueriesList": ["Family Medicine", "Internal Medicine", "General Practice"],
"state": "NY",
"maxResults": 1000,
"enableLinkedInEnrichment": true,
"enableSocialMediaEnrichment": true
}

Example: Hospital systems and health networks in a metro area

{
"mode": "search_organizations",
"query": "Medical Center",
"city": "Chicago",
"state": "IL",
"enumerationType": "NPI-2",
"maxResults": 100,
"enableEmailEnrichment": true
}

๐Ÿค– AI Agents & Automated Pipelines

This actor is agent-ready. Structured JSON output with consistent schemas makes it a clean data source for AI workflows:

  • LLM pipelines: Wire as a tool call โ€” your agent queries for providers matching criteria, gets back structured records, and reasons over them
  • CRM automation: Trigger this actor from a Zapier/Make workflow to enrich new leads automatically
  • RAG knowledge base: Index provider records into a vector store for semantic retrieval
  • Lead scoring agents: Combine specialty, practice size (inferred from organization type), and enriched contact data for automated scoring

Example: Agent-friendly query โ€” specific providers by last name across states

{
"mode": "search_providers",
"searchQueriesList": ["Patel", "Kumar", "Sharma"],
"state": "NJ",
"maxResults": 200,
"enableEmailEnrichment": true
}

๐Ÿ”ฌ Healthcare Data Scientists

Access structured provider data without managing large NPPES file downloads (the full NPPES export is 4GB+). Pull exactly what you need via API.

Example: Map all licensed psychiatrists by state for a mental health access study

{
"mode": "search_by_specialty",
"query": "Psychiatry",
"enumerationType": "NPI-1",
"maxResults": 1000
}

Example: Get full record for a specific NPI number

{
"mode": "get_provider",
"npiNumber": "1871538041",
"enableEmailEnrichment": true,
"enableSocialMediaEnrichment": true
}

๐Ÿ“ฆ What You Get

Each output record is a ProviderRecord with the following data:

Core Identity

FieldDescription
npi_number10-digit NPI identifier
enumeration_typeNPI-1 (individual) or NPI-2 (organization)
first_name, last_nameProvider name
credentialDegrees and credentials (MD, DO, NP, PA, etc.)
organization_nameOrganization name (NPI-2 records)
statusActive / Deactivated
primary_specialtyTop taxonomy description (convenience field)

Address & Contact

FieldDescription
addressesArray of MAILING and LOCATION addresses with phone and fax
practice_address_cityCity from primary practice location (convenience field)
practice_address_stateState from primary practice location (convenience field)

Taxonomies & Specialties

FieldDescription
taxonomiesFull array of specialties with code, description, license, state, and primary flag
identifiersDEA numbers, state license numbers, UPIN, and other identifiers

Enrichment (optional)

FieldDescription
contact_enrichment.emailsAll email addresses found on practice website
contact_enrichment.primary_emailBest contact email
contact_enrichment.office_emailOffice/scheduling email
contact_enrichment.billing_emailBilling department email
contact_enrichment.practice_websitePractice website URL
contact_enrichment.linkedin_profile_urlProvider LinkedIn URL
contact_enrichment.healthgrades_urlHealthgrades profile
contact_enrichment.vitals_urlVitals.com profile
contact_enrichment.zocdoc_urlZocdoc booking page
contact_enrichment.facebook_urlPractice Facebook page
contact_enrichment.npi_registry_urlDirect NPI Registry link

๐Ÿ”€ Two Batch Workflows

Batch Search by Specialty or Name

Build a territory list in one run. Pass a list of specialties (or last names, or org names) via searchQueriesList and the actor runs each search, then deduplicates results by NPI number across all queries.

Example: Three specialties, one run

{
"mode": "search_by_specialty",
"searchQueriesList": ["Cardiology", "Oncology", "Neurology"],
"state": "TX",
"maxResults": 500,
"enableEmailEnrichment": true
}

searchQueriesList works with search_providers, search_organizations, and search_by_specialty modes. Takes precedence over the single query field.


Bulk Enrich by NPI Number

Already have a list of NPI numbers? Skip the search and go straight to enrichment.

Path A โ€” Small list: paste directly as a JSON array

{
"mode": "bulk_lookup",
"npiNumbers": ["1871538041", "1932102168", "1245319599"],
"enableEmailEnrichment": true,
"enableSocialMediaEnrichment": true
}

Path B โ€” Large list: upload a CSV via Apify Key-Value Store

  1. Go to Apify Console โ†’ Storage โ†’ Key-Value Stores
  2. Click + Create new store and give it a name
  3. Click + Add record โ†’ upload your .csv file
  4. Find your file in the store โ†’ click the link icon to copy the direct URL

    The URL must start with api.apify.com โ€” not console.apify.com. The console URL is a web page and will not work as a file download.

  5. Set mode to bulk_lookup, paste the URL into the npiFile field, and run

CSV format โ€” use a column named npi, npi_number, or NPI, or list one NPI per row:

npi
1871538041
1932102168
1245319599

All enrichment options work the same in bulk mode.


โš™๏ธ Input Reference

Mode & Search

FieldTypeDefaultDescription
modestringsearch_providerssearch_providers, get_provider, search_organizations, search_by_specialty, bulk_lookup
querystringโ€”Single search term: last name (search_providers), org name (search_organizations), specialty (search_by_specialty).
searchQueriesListarrayโ€”Run multiple searches in one go, deduped by NPI. Takes precedence over query.
npiNumberstringโ€”10-digit NPI for direct lookup (get_provider mode).
npiNumbersarrayโ€”JSON array of NPI numbers (bulk_lookup mode).
npiFilestringโ€”URL to a CSV of NPI numbers (bulk_lookup mode). Must be an api.apify.com URL from Key-Value Store.
firstNamestringโ€”Provider first name filter.
lastNamestringโ€”Provider last name filter.
organizationNamestringโ€”Organization name (search_organizations mode).
taxonomyDescriptionstringโ€”Specialty or taxonomy description (search_by_specialty mode).

Location Filters

FieldTypeDefaultDescription
citystringโ€”Filter by city.
statestringโ€”Two-letter state code (e.g. CA, NY, TX).
postalCodestringโ€”ZIP/postal code filter.
countryCodestringโ€”Two-letter country code. Defaults to US.
enumerationTypestringโ€”NPI-1 (individual providers) or NPI-2 (organizations).

Output

FieldTypeDefaultDescription
maxResultsinteger100Max providers to return (1โ€“1000). Free tier: 25 per run.

Contact Enrichment (available on a paid plan โ€” free runs return base NPI data only)

FieldTypeDefaultDescription
enableEmailEnrichmentbooleanfalseScrape practice websites for email addresses (office, billing, general).
enableLinkedInEnrichmentbooleanfalseSearch for provider LinkedIn profiles. Runs a second web search per provider, so it roughly doubles per-lead search cost.
enableSocialMediaEnrichmentbooleanfalseExtract Facebook, Twitter, Instagram, Healthgrades, Vitals, and Zocdoc links.
emailEnrichmentTimeoutinteger10Timeout per website scrape (seconds). Lower = faster, may miss some emails.
maxEnrichmentResultsinteger50Cap on providers enriched per run (each fires a web search). Providers past the cap still return base NPI data. Raise it for larger enriched runs.

Advanced

FieldTypeDefaultDescription
requestIntervalSecsnumber0.5Seconds between NPPES API requests.
timeoutSecsinteger30HTTP timeout per request (seconds).
maxRetriesinteger5Max retry attempts on failed requests.
proxyConfigurationobjectApify Proxy (Google SERP)Proxy used for website/LinkedIn search during enrichment. Default works out of the box.

โ“ FAQ

What is an NPI number? A National Provider Identifier โ€” a unique 10-digit ID assigned to every licensed US healthcare provider by CMS. Over 6 million active NPIs in the registry cover physicians, nurses, dentists, therapists, and healthcare organizations.

Is this free to use? Yes โ€” the first 25 results per run are free and include full base NPI data (name, address, specialty, NPI Registry link). Subscribe to the actor for unlimited results (up to 1,000 per run).

Note: Contact enrichment (emails, LinkedIn, social profiles) is temporarily paused while we improve its quality and pricing. Runs return base NPI data only; the enrichment options are inactive until it returns.

How does email enrichment work? The actor runs a web search (Google, routed through Apify Proxy) to find the provider's practice website, then scrapes that site for email addresses, classifying them as office, billing, or general contact. It also extracts any social media links and the provider's LinkedIn profile. Success depends on whether the practice has a publicly accessible website.

How fresh is the data? The actor queries the live NPPES API directly, which CMS updates daily. You get current provider data, not a static database snapshot.

What's the difference between npiNumbers and npiFile? npiNumbers is for small lists โ€” paste up to a few hundred NPIs directly as a JSON array. npiFile is for large lists โ€” upload a CSV to Apify Key-Value Store and provide the download URL.

Why does npiFile need an api.apify.com URL? console.apify.com URLs load a web page in your browser. The actor needs a direct file download URL to read your CSV. Always use the link icon in Key-Value Store to copy the api.apify.com URL, not the browser address bar.

What enrichment hit rate should I expect? Email enrichment depends on whether the practice has a public website. For providers at independent or private practices, expect roughly a 40โ€“70% email hit rate. Physicians employed by large hospital systems often have no public email address (their system profile pages don't expose one), so email coverage is lower for that group โ€” though their practice website and LinkedIn profile still populate. LinkedIn enrichment works best for physicians at academic institutions and large health systems.

Does enrichment need a proxy? Yes. Practice-website and LinkedIn discovery run a web search per provider, and search engines block datacenter IPs. Enrichment routes search through Apify Proxy (Google SERP group) automatically โ€” no setup needed. The proxyConfiguration input lets you override the default if you want a different proxy group. With enrichment enabled, runs are slower than base NPI lookups because each provider triggers a live per-provider search plus a website scrape.

Can I search by taxonomy code instead of specialty name? The taxonomyDescription field accepts text descriptions like "Cardiology" or "Orthopedic Surgery". For exact taxonomy code lookups, use the query field in search_by_specialty mode with the code directly (e.g., 207RC0000X for Cardiovascular Disease).