Developer tools decision

Health Provider API

A capable developer can build a useful self-hosted replacement for lookups, caching, and bulk processing in about a week, but reproducing the hosted product's polish (dashboard, commercial billing, scale-tested enrichment signals, and SLA) is larger work and likely justifies paying the vendor for production teams.

Visit website

Built by Pieter van Wyk, who ships 10 products in this index

You pay

$39/mo

$468/yr

Read off the official pricing page.

You’d pay instead

$100one-off40 h to build

$25/mo3 h/mo upkeep

On cash alone, building overtakes the subscription at 1 seat.

No open-source build does this yet

Nothing published replaces this one, so a replacement starts from an empty file. Here is what it would have to cover.

What a replacement has to do

  • Call NPPES, normalize the response, cache it, enforce per-key quotas, and return stable ProviderData JSON for lookup, search, and bulk endpoints.

What it still won’t have

  • Hosted dashboard and multi-key management UX
  • Commercial SLA, operational monitoring, and paid support
  • Polished enrichment signals and any proprietary quality scoring
  • Scale-tested rate-limits, analytics, and high-volume performance
  • Stripe-managed billing and plan upgrade flows

What remains hard

  • Product polish and ongoing maintenance
Read the build prompt

First-year cost

Keep paying

Paying is—cheaper in year one.

On cash alone, building overtakes the subscription at 1 seat.

Paid seatsseats

Money you would actually spend

Keep paying
—

Subscription price × seats × 12

Build it
—

AI build —APIs + hosting —

Time you would spend

—

—

What you would spend

What we assumed

The verdict above measures whether you could build it. This one is only about money.

Runnable build prompt

Not run yet
Build a minimal provider-validation API using Node.js (TypeScript) + Express, Postgres (for normalized records and request logs), and Redis (for short-term caching). Core features in scope: GET /api/v1/npi/{npi} (fetch NPPES if missing, normalize, cache, return ProviderData and meta with requestId and cache headers), GET /api/v1/providers/search (simple last_name/org_name + location filters with Postgres FTS, optional enrichment flag that derives completeness/freshness from stored data), POST /api/v1/npi/bulk (accept 1–50 NPIs, run per-item lookup with quota checks, return per-item statuses), API key issuance and per-key monthly credit metering (persist keys and usage in Postgres), request-id tracing in every response, and rate-limit/quota headers. Out of scope: paid billing integration, multi-tenant dashboard UI, advanced enrichment models, and sophisticated search ranking. Require input validation, explicit error handling for upstream/unavailable/quota cases, unit tests for core routes, and integration tests for bulk behavior.
How we checked3 sources · 3/3 runs agreed · evidence score 62

How the score was reached

  • Partly verdict base52
  • 3 cited sources+3
  • Price verified on pricing page+3
  • 3/3 assessment runs agreed+4
  • Evidence score62

The base comes from the verdict. Everything under it is a check that either happened or did not, and each one is a fact frozen in this record rather than a judgement made at render time - so the same evidence always produces the same number.

How scoring works →

Cited sources · 3

Every page the run actually retrieved.

Integrity checks

What held up, and what did not.

✓ Price read off the page✓ 3 independent runs, one answer✓ Citations limited to fetched pages! 1 moat recorded