Look up prices near a location
Try it on a test key
curl -s "https://api.wellwardhealth.com/v1/prices?service=lipid-panel&near=00010&sort=price" \
-H "Authorization: Bearer $WELLWARD_KEY"
GET /v1/prices returns one record per practice for one service near a point.
Where
Give exactly one location: near (a ZIP; zip also works), lat and lng, or market (a slug from /markets). radius_miles is one of 5, 10, 25, 50, 75 or 100; the default is 25, or the market's own radius when you pass market.
Order and pages
sort=price(the default) — cheapest first; ties go to the nearer practice.sort=distance— nearest first; ties go to the cheaper price.- Pages hold up to 20 results (
limit, default and maximum 20 — a larger value is 400limit_too_large). Follownext_cursorfor the next page; it isnullon the last. A cursor lasts 60 minutes and keeps the first page's sort and radius even if you send different ones. - Each page that returns prices is one Read, so page only as far as you will show.
summary
Every response carries summary — count, min_price, median_price, max_price and nearest_distance_miles — computed over all results for the query, before paging, and identical on every page. summary.count tells you how many pages a full pull takes before you fetch them; the stats let you say "prices here run $X–$Y" without paging at all.
Variants and add-ons
Each record is for one variant: the service's default, or the one you name with variant=. When a service has several core forms, variants[] lists them so you can let the user choose. A record's addons[] are billed on top of the core price; pass addons=<key>,<key> to include them in amount (then included_in_amount: true).
Location precision
practice.geo.precision says how a practice was placed: rooftop (a street-address match) or zip (the ZIP centroid — treat the distance as approximate). Check it per record.
Only valid prices
Every price returned was quoted within the last 364 days and has not been withdrawn, so you don't filter by age; max_age_days narrows it further if you want fresher. Show the disclaimer with every price (Displaying prices).
An empty result is a 200 with prices: [], summary.count: 0, a service_coverage of none, and a link to request the price. It is not a Read.
API reference · Dashboard · Questions: hello@wellwardhealth.com