One base URL. Every dataset.
REST over HTTPS with predictable pagination, stable error types, and the source attached to every response. Learn it once and every dataset added afterwards answers the same way.
Try it
A real request, a real response
Every figure below is what the endpoint returns today, read from the live dataset at build time.
curl "https://api.vemon.io/v1/healthcare/prices?procedure=5372" \ -H "Authorization: Bearer vm_live_…"
No key yet? Generate one — the free trial needs no card. Or see the data first in the Explorer.
{
"procedure": { "code": "5372", "name": "Level 2 Urology and Related Services" },
"scope": { "state": "national" },
"summary": {
"facilities": 848,
"median_charge": 3137,
"min_charge": 262,
"max_charge": 52123,
"spread": 198.9
},
"data": [
{
"facility": "Northern Maine Medical Center",
"city": "Fort Kent",
"state": "ME",
"ccn": "200052",
"submitted_charge": 262,
"medicare_allowed": 628
}
],
"source": { "data_year": 2024, "caveat": "…" }
}How it works
Design decisions, and why
Where a choice costs convenience, the reason is stated rather than hidden.
Stable error types
Every failure carries a machine-readable type you can branch on and a message worth logging. Types are part of the contract and will not change without a version bump.
Strict parameters
Unknown query parameters return 400 rather than being ignored. A typo fails loudly instead of quietly returning the wrong rows.
Summaries cover the whole match
The summary block reflects every matching row, not the page you were handed, so a median is a real median.
Provenance travels with the data
Each response names its publisher, data year, and the caveat that applies. A number without its source is a liability.
Rate limit headers on every response
Remaining and reset values arrive on successes too, so you can slow down before you are stopped rather than after.
Cacheable by design
Responses carry cache headers and are safe to hold at your own edge. The data changes annually; your traffic should not.
Use cases
What people build with it
Price benchmarking
Compare what a facility bills against its state and national peers without maintaining an ingestion job.
Benefits and claims tooling
Attach reference charge data to a member-facing estimate or an internal review workflow.
Research and journalism
Reproducible figures with a citable source, so a finding survives review.
Specification
The details
| Protocol | HTTPS only. HTTP is refused, not redirected. |
|---|---|
| Format | JSON. Money is integer USD — no floats, no currency strings. |
| Auth | Bearer token. One header, no token exchange. |
| Versioning | Path-versioned. /v1 will not change shape underneath you. |
| Pagination | limit with a documented ceiling; summaries stay global. |
| Records available | 63,518 across 49 states and DC |
Questions
Asked most often
- Do I need an API key?
- Yes, for every request. There is no unauthenticated endpoint. Keys are issued on signup — the free trial needs no card. If you want to see the data before that, the Explorer runs in your browser.
- What happens when I exceed my plan's quota?
- The API returns 429 and stops. You are never billed for an overage you did not agree to. Warning emails go out at 80%, 90%, and 100% of quota.
- Is the summary calculated across all results or just the page?
- All matching rows. If a query matches 848 facilities and you request 25, the median and spread still describe all 848.
- Can I cache responses?
- Yes. Responses carry Cache-Control headers and the underlying dataset updates annually, so caching aggressively is the right default.
Also on the platform
The other surfaces
Generate a key and query it.
The free trial key takes a minute and needs no card.