NPI Healthcare Provider Lookup — CMS NPPES Registry API
Pricing
from $2.00 / 1,000 successful lookups
NPI Healthcare Provider Lookup — CMS NPPES Registry API
Look up any US healthcare provider or organization by NPI number: name, credential, taxonomy/specialty, status, and practice address. Uses CMS's own official NPPES registry, no API key needed. Charged only for NPIs that resolve to a real record.
Pricing
from $2.00 / 1,000 successful lookups
Rating
0.0
(0)
Developer
Adrian Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 minutes ago
Last modified
Categories
Share
NPI Healthcare Provider Lookup
Look up any US healthcare provider or organization by NPI number against the CMS NPPES NPI Registry — name, credential, taxonomy/specialty, enumeration status, and practice address. No API key, no scraping — this hits CMS's own official, free public registry API directly.
Features
- NPI → full provider record. Name (or organization name), credential, enumeration type, status, and enumeration/last-updated dates.
- Individual & organization NPIs both handled. NPI-1 (individual providers) and NPI-2 (organizations) are parsed into the same consistent shape.
- Specialty/taxonomy detail. Every taxonomy code on record, with description, primary flag, license number, and state.
- Practice address & phone. The provider's primary location address and telephone number.
- Pay only for hits. NPIs that don't resolve to a real record cost nothing — see Pricing.
- Built for bulk. Feed in thousands of NPIs; concurrency and proxy behavior are both configurable.
How to use NPI Healthcare Provider Lookup — CMS NPPES Registry API
- In the Apify Console. Open the actor page and click Start — the
itemsfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~npi-provider-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"items":["1437702123"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"items": ["1437702123", "1234567893"],"maxConcurrency": 5}
items is a list of 10-digit National Provider Identifier (NPI) numbers. One dataset row comes
back per item. maxConcurrency (default 5, max 20) caps how many NPIs are looked up in
parallel; this target has no browser fallback, so a conservative value avoids rate-limit
trouble on large batches. proxyConfiguration lets you route through Apify Proxy (residential
recommended) if needed.
Output
One row per NPI, for example:
{"query": "1437702123","found": true,"data": {"npi": "1437702123","enumerationType": "NPI-1","name": "Jane A Smith MD","status": "active","enumerationDate": "2007-05-23","lastUpdated": "2021-11-02","taxonomies": [{ "description": "Internal Medicine", "primary": true, "license": "MD123456", "state": "CA" }],"primaryAddress": {"address": "123 Main St","city": "Los Angeles","state": "CA","postalCode": "90001","telephone": "3105551234"}},"scrapedAt": "2026-08-20T12:00:00.000Z"}
An NPI that doesn't exist in the NPPES registry comes back as "found": false with no data —
these rows are never charged.
Use cases
- Provider credentialing verification. Confirm a provider's name, taxonomy, and active status before onboarding.
- Healthcare directory building. Bulk-enrich a list of NPIs into a searchable provider directory with specialty and location.
- Claims & billing validation. Verify an NPI on a claim actually resolves to an active, correctly-typed provider (individual vs. organization).
- Referral network mapping. Pull practice addresses and specialties to map referral relationships by geography.
- Compliance audits. Spot-check whether NPIs referenced in records are still active and match the expected name/taxonomy.
Pricing
$4 per 1,000 results, plus a $0.00005 start fee. Misses (found:false) are never charged.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~npi-provider-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"items":["1437702123"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~npi-provider-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"items":["1437702123"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~npi-provider-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"items":["{{value}}"]}, mapping the row's value into the items array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "NPI Healthcare Provider Lookup | Apify" — the agent will find and run this actor.
FAQ
What counts as "not found"? The NPPES API returns result_count: 0 for any NPI it doesn't
recognize. This actor treats that (or a malformed response) as not found — no charge.
How are individual and organization NPIs different? NPI-1 records (individuals) return a
name built from first/middle/last name plus credential; NPI-2 records (organizations) return
the organization name instead. Both are normalized into the same name field, with
enumerationType telling you which kind you got.
Which address is returned? The provider's LOCATION-purpose address (practice address) is
preferred; if that's missing, the first address on file is used instead.
Does status reflect deactivation? Yes — CMS's own status code is normalized to "active"
when the record is active; any other status code is passed through as-is.
How fresh is the data? Live — every run queries the NPPES registry directly, not a cached snapshot, so status and taxonomy reflect what's currently on file.
What proxy should I use? Apify Proxy is enabled by default; NPPES's public API is generally permissive, but residential proxies are available if you see blocks on large runs.