API

Free evaluation tier — 100 lookups/day, no auth

Public NPI-keyed lookup endpoint for evaluating data quality before integrating ProviderSignal into a paid workflow. No API key, no signup, no commitment.

Endpoint

GET /api/v1/free/lookup?npi=1234567890

No 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 Identifier
  • first_name / last_name — provider name (null for organizations)
  • organization_name — entity name when entity_type_code = 2
  • specialty — primary NUCC taxonomy specialty
  • practice_address / city / state / zip — primary practice location
  • enumeration_date — when the NPI was first issued
  • entity_type_code — 1 (individual) or 2 (organization)
  • Citation envelope: meta.envelope_version, meta.source_attribution (NPPES freshness), meta.request with 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-After in 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/health

No 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-payments when shipped.

Related