Skip to main content
Glama

NPI Registry Scraper: US Doctors & Healthcare Provider Leads

npi_provider_lists
Read-only

Build de-duplicated lists of US doctors, dentists, therapists, pharmacies, and clinics by specialty and state, city, or ZIP from the CMS NPI Registry, including NPI, address, and phone.

Instructions

Build de-duplicated lists of US healthcare providers (individuals and organizations) from the official CMS NPI Registry by specialty and territory, with NPI, name, specialty, practice address and phone. Unlike clinical_trial_leads (trial sites and investigators) or local_business_leads (any business category from OpenStreetMap), this is the authoritative US provider registry. Use when you need doctors, dentists, therapists, pharmacies or clinics in states, cities or ZIPs. Do not use for non-US providers or for email addresses (NPI publishes none; follow up with company_website_enricher on practice domains). Parameters: specialties take plain words, mapped to NPI taxonomies. Large states are split by ZIP automatically, so you are not limited by the registry's 1,200-result ceiling. cities and zipCodes narrow the states given. maxResults is shared across all specialty x area combinations. primarySpecialtyOnly=true removes providers who list the specialty only as secondary; includeSecondaryLocations=false drops providers whose main office is outside the territory. Returns per item: summary, NPI, provider type, name, specialty/taxonomy, practice address, phone.

Behavior: read-only; runs the Apify Actor pandadad0214/npi-provider-lists (https://apify.com/pandadad0214/npi-provider-lists) on your own Apify account. Price: $0.0015 per provider in list. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Input Schema

NameRequiredDescriptionDefault
citiesNoCities. Optional. Write "Austin, TX". Saint/St, Fort/Ft and Mount/Mt spellings are searched together. When cities are given, the list is limited to those cities (states only fill in a missing state).
statesNoStates. 2-letter codes, e.g. VT, TX. Big states are split automatically by ZIP code, so you are not stuck at the registry's 1,200-result ceiling. If you also list cities without a state, these states are used for them.
lastNameNoLast name. Optional, individuals only. A trailing * is a wildcard after at least 2 letters (Sm*).
zipCodesNoZIP codes. Optional. 5-digit ZIPs (05401) or prefixes of 2-4 digits (941 = San Francisco area, 05 = Vermont/New Hampshire). Added to the territory on top of states or cities.
firstNameNoFirst name. Optional, individuals only. Wildcards as above.
maxResultsNoMaximum providers. You pay per provider in the list, so this also caps the cost. Up to 50,000. With several specialties or areas the limit is shared fairly between them. Whole number, 1 to 50,000 results; default 500.
specialtiesNoSpecialties. Plain names work: dentist, orthodontist, family doctor, pediatrician, cardiologist, dermatologist, psychiatrist, chiropractor, physical therapist, nurse practitioner, psychologist, mental health counselor, social worker, pharmacy, home health, hospice, nursing home, urgent care, hospital, FQHC and more (full list in the README). Any NPPES taxonomy description also works, e.g. "Family Medicine" or "Nurse Practitioner, Pediatrics".
providerTypeNoProvider type. Individuals (NPI-1: doctors, nurses, therapists) or organizations (NPI-2: practices, clinics, pharmacies, agencies). Choices: all = Both; individual = Individuals only; organization = Organizations only.all
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
organizationNameNoOrganization name. Optional, organizations only, e.g. "Kaiser*" or "Walgreen*".
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).
primarySpecialtyOnlyNoPrimary specialty only. On: keep only providers whose primary taxonomy is the specialty you asked for. Off (default): keep anyone who lists it among their taxonomies.
includeSecondaryLocationsNoInclude providers with an additional practice location in the territory. On (default): a provider whose main office is elsewhere but who also practices in your territory is included, and the in-territory address is shown. Off: primary practice address only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare read-only/open-world/non-destructive, and the description adds substantial operational context: it runs a paid Apify Actor on the user's account, charges $0.0015 per provider, has per-call spending caps, timeout behavior, and billing caveats around maxResults. It also describes the return shape and trimming behavior. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentences front-load purpose and sibling differentiation, then parameter notes, then operational behavior. It is long but justified by 14 parameters; however some parameter details repeat the schema and could be trimmed. Minor redundancy keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 14-parameter tool with no output schema, the description explains the return envelope ({actor, count, items}), item fields, cost model, timeout handling, and result caps. An agent has enough information to call it correctly and interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 14 parameters. The description adds some cross-parameter behavior (e.g., maxResults shared across specialty×area combinations) and clarifies territory narrowing, but much of the parameter prose duplicates schema descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (build de-duplicated lists) and resource (US healthcare providers from the CMS NPI Registry), and explicitly distinguishes itself from local_business_leads and clinical_trial_leads. An agent can identify the tool's scope without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use cases (doctors, dentists, therapists, pharmacies or clinics in states/cities/ZIPs) and when-not-to-use cases (non-US providers, email addresses), plus names company_website_enricher as the follow-up for emails. This is complete routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.