Endpoint
GET /api/v1/free/lookup?npi=1234567890No authentication header required. The endpoint is rate-limited by source IP, not by API key — pass the same way an unsigned cURL would.
What you get
npi— 10-digit National Provider Identifierfirst_name/last_name— provider name (null for organizations)organization_name— entity name when entity_type_code = 2specialty— primary NUCC taxonomy specialtypractice_address/city/state/zip— primary practice locationenumeration_date— when the NPI was first issuedentity_type_code— 1 (individual) or 2 (organization)- Citation envelope:
meta.envelope_version,meta.source_attribution(NPPES freshness),meta.requestwith the request id
What you don't get
The free tier intentionally excludes ProviderSignal's value-add fields. These require a paid plan or per-query billing:
- DSO affiliation flag and brand label
- License events feed (status changes, disciplinary actions, expiration alerts)
- License status, expiration date, disciplinary history
- HRSA HPSA shortage area cross-reference
- NPDB cross-reference
- CMS Medicare Part B billing aggregates
- Confidence scoring
- Co-located providers / practice-entity grouping
- State Medicaid fee-schedule data
Rate limits
- 100 requests per day per source IP (rolling 24-hour window)
- 10 requests per minute per source IP (burst cap, prevents single-second quota burnout)
- Hard block on quota exhaustion. No bypass. The 429 response returns
Retry-Afterin seconds.
Rate limit state is surfaced in standard headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Example responses
200 OK
{
"data": {
"npi": "1234567890",
"first_name": "Jane",
"last_name": "Doe",
"organization_name": null,
"specialty": "General Dentist",
"practice_address": "123 MAIN ST",
"city": "AUSTIN",
"state": "TX",
"zip": "78701",
"enumeration_date": "2008-04-12",
"entity_type_code": 1
},
"error": null,
"meta": {
"envelope_version": "1.0",
"source_attribution": [
{ "table": "npi", "last_refresh": "2026-04-29T03:14:22Z",
"schema_version": "v2", "license": "public-domain" }
],
"request": {
"id": "req_...",
"endpoint": "/api/v1/free/lookup",
"billed_credits": 0,
"billing_method": "free"
}
}
}404 Not Found
{ "data": null, "error": "NPI not found in dental cohort" }429 Too Many Requests
{
"data": null,
"error": "rate_limit_exceeded",
"scope": "free_tier_daily",
"documentation": "https://providersignal.com/docs/free-tier",
"upgrade_paths": [
{ "method": "subscription", "url": "https://providersignal.com/pricing" },
{ "method": "per_query", "url": "https://providersignal.com/docs/agent-payments" }
]
}Health check
GET /api/v1/free/healthNo rate limit on the health endpoint. Use it to validate connectivity before testing the lookup endpoint.
Upgrade paths
When you've verified the data quality and want to integrate for production:
- Subscription — Rep $149/mo, Team $499/mo, Enterprise $1,999/mo. Includes the dashboard plus higher API rate limits. See /pricing.
- Per-query billing — pay only for what you call, via x402 or MPP. Phase 3 of the agent-callable rollout (Q3 2026). Documented at
/docs/agent-paymentswhen shipped.
Related
- OpenAPI 3.1 spec — full schema for every documented endpoint
- Field glossary — definitions and stability commitments for every field
- Data sources — provenance for every dataset behind the API