Check the setup
- Python 3.10 or newer
- A notebook environment such as Jupyter or Google Colab
- An internet connection
Manufacturer payments to clinicians and teaching hospitals for building bounded transparency lookups and conflict-check tools.
From source to product signal
Open Payments publishes manufacturer payments to covered recipients through a no-key datastore API. Start with one program-year general-payment distribution and a 20-row limit. A payment is not evidence of improper influence, and dataset IDs change with each publication.
Install the packages, then run the notebook cell.
python -m pip install pandas requests
import pandas as pd
import requests
response = requests.get(
"https://openpaymentsdata.cms.gov/api/1/datastore/query/e6b17c6a-2534-4207-a4a1-6746a14911ff/0",
params={
"limit": 20,
"conditions[0][property]": "recipient_state",
"conditions[0][value]": "CO",
"conditions[0][operator]": "=",
},
timeout=30,
)
response.raise_for_status()
payments = pd.DataFrame(response.json()["results"])
payments["retrieved_at_utc"] = pd.Timestamp.now(tz="UTC")
print(payments.head(20))Test a useful signal
Test whether a 20-row Open Payments extract can support a bounded physician-payment lookup.
Centers for Medicare & Medicaid Services is a government source. Last verified 2026-08-17. Temporal coverage: annual program years with periodic publications.