3 ms·
Show HN: NPIScan search 9M U.S. healthcare providers from the NPI registry
I’ve been exploring the NPPES dataset, the federal registry that assigns NPI numbers to every healthcare provider in the U.S. It currently has about 9 million records and grows by ~30k per month, but accessing it usually means downloading multi-gigabyte CSVs or using the CMS lookup that returns one provider at a time.
I built NPIScan to make the dataset browsable. You can search by name, NPI, specialty, or location and drill down from state → city → ZIP code. Each provider has a profile with credentials, practice locations, taxonomy codes, and digital health endpoints.
A few interesting patterns from the data:
- 2025 had ~631k new NPI registrations, the largest jump on record
- Behavior Technicians grew to ~526k providers and are now among the largest specialties
- California alone has ~1.1M providers (~12% of the country)
- Only ~0.5% of providers have registered digital health endpoints
Tech stack: Next.js, PostgreSQL, Meilisearch, Redis.
The main challenge was making 9M records feel fast to browse. I solved it with denormalized listing tables, Meilisearch full-text search, and Redis caching for aggregated queries. Most pages respond in <40ms after cache warmup.
Curious to hear feedback from anyone working with healthcare data.