NPI Registry Search - US Healthcare Providers
Pricing
Pay per event
NPI Registry Search - US Healthcare Providers
Searches the NPPES NPI Registry for US doctors, dentists, clinics and other healthcare providers, with practice address, phone and specialty. NPPES caps any one search at 1,200 records and never says how many matched, so every row here carries whether the answer is complete. No key and no login.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Gregory Bolshakov
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
19 hours ago
Last modified
Categories
Share
NPI Registry Search
Searches the NPPES NPI Registry for US healthcare providers. Doctors, dentists, clinics, hospitals and anyone else who holds an NPI. You get the practice address, the phone number on file, the specialty and the licence, as JSON, CSV or Excel.
No API key and no login. The data is public and this Actor reads it directly.
The problem this one solves
NPPES will not return more than 1,200 records for a single search, and it does not tell you that. The response has two fields, the page you asked for and how many rows are on it. There is no total anywhere.
Worse, when you page past the limit it does not return an error. It returns the same page again. Measured on 31 August 2026, a search for Los Angeles gives identical results at skip 1000, 1100, 1400 and 20000, each one reporting a full page of 200. A scraper that keeps paging gets 1,200 real providers and then the same 200 over and over, and every repeat looks like fresh data.
So this Actor does two things about it.
It splits a search that is too big into pieces small enough for NPPES to answer whole. Los Angeles alone cannot be split enough, but a postal code prefix can, and a search of Puerto Rico's 009 prefix returned 2,964 providers where a single query stops at 1,200.
When it still cannot get everything, it says so. Every row carries searchComplete,
searchLimitedBy and the exact query it came from. You never have to guess whether the file
you downloaded is the whole answer.
What you get
46 columns per provider. The ones people use most:
npi,entityType, name fields,credentialpracticeAddress,practiceCity,practiceState,practicePhone,practiceFaxmailingAddressand the rest of the mailing fields, kept separateprimaryTaxonomyDescription,licenseNumber,licenseStatepracticeLocationCountandpracticeLocationCitiesfor a provider working at several sitessearchComplete,searchLimitedBy,searchSlice
The practice address and the mailing address are never merged. On 4,600 records I sampled, 32.8% of them have a mailing city that is different from the practice city, because the mailing address is often a billing service in another state. If you filter on city and those two are treated as one field, a third of your rows are wrong.
The specialty comes from the record's own primary flag, not from the first item in the list.
primaryTaxonomySource tells you which it was.
A row can match on an address that is not its practice address
Search for Providence, Rhode Island and some rows come back with a Boston or Birmingham address. The filter is working. NPPES matches your city and state against three things: the practice address, the mailing address, and every extra clinic on the record.
I ran that search on 3 September 2026 and read 80 rows. 15 had a practice address outside
Rhode Island. 11 of those list a Providence clinic in practiceLocationCities and the other
4 have a Providence mailing address in mailingCity. Every one of the 15 explains itself on
the row, and none of them is a broken filter.
If you only want providers whose practice address is in the state, filter on practiceState
after the run.
Search fields
State, city, postal code, specialty, first name, last name, organisation name, entity type.
A trailing * matches a prefix and needs at least two characters before it, so Sm* works
and S* does not.
NPPES will not accept a state on its own. Pair it with a city, a postal code or a specialty.
You can also pass a list of NPI numbers and look them up directly.
Cost
Pay per event, priced on the Actor page. A search that matches nobody is free, because nothing is charged until rows are actually written to your dataset.
Limits worth knowing
A search still capped after splitting is reported, not hidden. Look at searchLimitedBy. If
it says sourceCeiling, narrow the search by postal code or specialty and run it again.
Every record a search returns has status A. I sampled 4,600 across 12 different query shapes on 31 August 2026 and found no deactivated NPIs, so do not expect this Actor to find them.
lastUpdated is worth reading. A record can be years old and still active.