Platform / API

The practice record, one request away.

Base URL https://api.practicemcp.com/v1. A bearer key. Search the market, fetch a location, or enrich a row you already have. Add expand=evidence when you need the quote.

https://api.practicemcp.com/v1

curl "https://api.practicemcp.com/v1/practices/pb_loc_8f3a21c0?expand=evidence" \
  -H "Authorization: Bearer $PRACTICEMCP_API_KEY"
curl -X POST "https://api.practicemcp.com/v1/enrich" \
  -H "Authorization: Bearer $PRACTICEMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Harbor & Pine Dental",
    "city": "Austin",
    "state": "TX",
    "phone": "5550142281"
  }'
curl -X POST "https://api.practicemcp.com/v1/exports" \
  -H "Authorization: Bearer $PRACTICEMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "format": "parquet",
    "filter": { "state": "TX", "specialty": "dental" }
  }'
curl -X POST "https://api.practicemcp.com/v1/webhooks" \
  -H "Authorization: Bearer $PRACTICEMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/hooks/practicemcp",
    "events": ["provider_added", "phone_changed", "website_found"]
  }'

Endpoints

MethodPathWhat it returns
GET/practicesSearch locations by state, specialty, ownership, size, tech, and change.
GET/practices/{id}Fetch one location. Add expand=evidence to open every field.
POST/enrichMatch a name, address, phone, NPI, or domain to a location.
GET/practices/{id}/providersClinicians resolved to that location.
GET/practices/{id}/evidenceSource, quote, status, and observed time for one record.
GET/changesEvents since a cursor: providers, phones, sites, group size.
POST/exportsBulk CSV or Parquet for a filter. Scale and National plans.
POST/webhooksSubscribe a URL to change events. Build plan and above.

Filters

Ask for the slice.

Pagination uses limit and a cursor. The response includes the next cursor when there is another page. Rate limits scale with the plan. If you need a backfill burst, talk to us. Responses include the remaining allowance.

ParameterUse
stateTwo-letter USPS code, or a comma-separated list.
cityCity name, paired with state when you have it.
specialtyA specialty slug, such as dental or primary-care.
ownershipindependent, group, dso, health_system, or unknown.
provider_count_gteMinimum clinicians resolved to the location.
has_websitetrue or false. True means the site passed the identity check.
has_bookingtrue or false. A booking URL the practice published.
ehr, scheduling, patient_portalTechnology fingerprints read off the matched site.
changed_sinceISO timestamp. Locations with an event after that time.
expandevidence. Returns value, status, source_url, quote, observed_at.

Python and TypeScript

The calls above are the contract. Client libraries follow the same parameters. Docs live at https://docs.practicemcp.com.

OpenAPI

A machine-readable spec is published with the docs, next to llms.txt on this site, so an agent can read the surface without a screenshot.

Evidence

expand=evidence returns value, status, source_url, quote, and observed_at. It does not spend another credit.

Start with one practice. Scale to all of them.

Get a key, read a record, and widen the query when the shape is right.