POST /api/npi/providers/search
Price: 10 credits
Search the US NPI registry (NPPES) for healthcare providers by name, organization, specialty (taxonomy) and location. Filter by provider type (individual / organization), first and last name, organization name, taxonomy description, city, state, postal code and country, with control over which address and name the filters apply to. Returns each matching provider's full record: type, dates, basic block, taxonomies, addresses, identifiers, other names, practice locations and endpoints.
Find US healthcare providers by name, organization, specialty or location. Pass any of enumeration_type (NPI-1/NPI-2), first_name, last_name, organization_name, taxonomy_description, city, state, postal_code, country_code (and address_purpose, name_purpose, use_first_name_alias), plus count. String filters match exactly unless you add a trailing * for prefix matching. Returns full provider records; feed a returned number into npi/providers for a single lookup.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)enumeration_type string nullable — Restrict to individual providers (NPI-1) or organizations (NPI-2) (one of: "NPI-1", "NPI-2")first_name string nullable — Provider first name. Add a trailing * for prefix matching, otherwise the value is matched exactly.last_name string nullable — Provider last name. Add a trailing * for prefix matching, otherwise the value is matched exactly.organization_name string nullable — Organization name. Add a trailing * for prefix matching, otherwise the value is matched exactly.taxonomy_description string nullable — Provider specialty / taxonomy description (examples: "dentist", "Internal Medicine")city string nullable — City of the provider addressstate string nullable — US state or territory of the provider address (one of: "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY", "AS", "GU", "MP", "PR", "VI", "AA", "AE", "AP")postal_code string nullable — Postal (ZIP) code. Add a trailing * for prefix matching, otherwise the value is matched exactly.country_code string nullable — 2-letter country code of the provider address (examples: "US")address_purpose string nullable — Which address the city/state/postal_code filters apply to (one of: "LOCATION", "MAILING", "PRIMARY", "SECONDARY")name_purpose string nullable — Match first_name/last_name against the provider (PROVIDER) or authorized official (AO) (one of: "AO", "PROVIDER")use_first_name_alias boolean nullable — Also match known aliases and variants of first_namecount integer required — Max number of results to return (min: 1; max: 1200)@type string (default: "NpiProvider")number string requiredenumeration_type string nullablecreated_at integer nullableupdated_at integer nullablebasic object nullable@type string (default: "NpiBasic")first_name string nullablelast_name string nullablemiddle_name string nullablename_prefix string nullablename_suffix string nullablecredential string nullablegender string nullablesole_proprietor string nullableorganization_name string nullableorganizational_subpart string nullableparent_organization_name string nullablestatus string nullableenumeration_date string nullablecertification_date string nullableauthorized_official object nullable@type string (default: "NpiAuthorizedOfficial")first_name string nullablelast_name string nullablemiddle_name string nullablename_prefix string nullablename_suffix string nullablecredential string nullableofficial_title string nullablephone string nullableaddresses array (default: [])@type string (default: "NpiAddress")address_purpose string nullableaddress_type string nullableaddress_1 string nullableaddress_2 string nullablecity string nullablestate string nullablepostal_code string nullablecountry_code string nullablecountry_name string nullablephone string nullablefax string nullablepractice_locations array (default: [])@type string (default: "NpiAddress")address_purpose string nullableaddress_type string nullableaddress_1 string nullableaddress_2 string nullablecity string nullablestate string nullablepostal_code string nullablecountry_code string nullablecountry_name string nullablephone string nullablefax string nullabletaxonomies array (default: [])@type string (default: "NpiTaxonomy")code string nullabledescription string nullablelicense string nullableis_primary boolean nullablestate string nullabletaxonomy_group string nullableidentifiers array (default: [])@type string (default: "NpiIdentifier")code string nullabledescription string nullableissuer string nullableidentifier string nullablestate string nullableother_names array (default: [])@type string (default: "NpiOtherName")name_type string nullablecode string nullableorganization_name string nullablefirst_name string nullablelast_name string nullablemiddle_name string nullablename_prefix string nullablename_suffix string nullablecredential string nullableendpoints array (default: [])@type string (default: "NpiEndpoint")endpoint_type string nullableendpoint_type_description string nullableendpoint string nullableendpoint_description string nullableaffiliation string nullableaffiliation_name string nullableuse string nullableuse_description string nullablecontent_type string nullablecontent_type_description string nullablecontent_other_description string nullableaddress_type string nullableaddress_1 string nullableaddress_2 string nullablecity string nullablestate string nullablepostal_code string nullablecountry_code string nullablecountry_name string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.