Returns CMS Open Payments records — the Sunshine Act database of every payment / transfer of value from drug + device manufacturers and GPOs to US physicians, non-physician practitioners, and teaching hospitals (~15M records per program year, 2019→present)

Returns CMS Open Payments records — the Sunshine Act database of every payment / transfer of value from drug + device manufacturers and GPOs to US physicians, non-physician practitioners, and teaching hospitals (~15M records per program year, 2019→present). LIVE passthrough to CMS's own API: results reflect CMS's current data and total_count is CMS's authoritative count for the filtered query (the results array is just the requested page). Use this when the user asks about: pharma/device money to doctors, a company's physician-payment footprint, speaker-fee / consulting / royalty programs, industry funding of research (with ClinicalTrials.gov IDs), or physician ownership stakes in manufacturers. payment_type selects the dataset (schemas differ; rows are CMS's fields verbatim): general (default) — meals, travel, consulting, speaker fees, royalties, honoraria. Fields incl. nature_of_payment_or_transfer _of_value, name_of_drug_or_biological_or_device_or_medical supply_1, covered_recipient_specialty_1. research — research payments incl. name_of_study, clinicaltrials_gov_identifier, preclinical_research_indicator. ownership — physician ownership/investment interests (total_amount_invested_usdollars, value_of_interest, terms_of_interest); recipient fields are physician*. summarize=true returns CMS's own pre-aggregated per-(company, nature) totals for the year — transaction counts + dollar totals per payment nature. The nature codes in that dataset ship without a public CMS legend; KeyVex labels the seven codes it has VERIFIED by exact count+total reconciliation against detail data (1=Consulting Fee, 2=Speaker/faculty compensation, 6=Food and Beverage, 7=Travel and Lodging, 9=Charitable Contribution, 10=Royalty or License, 14=Grant); unverified codes pass through with an empty label rather than a guess. Matching: company is a substring (matches subsidiaries: 'pfizer' catches PFIZER INC.); recipient names are EXACT (CMS stores uppercase; we uppercase for you); npi is the exact National Provider Identifier — the precise join key to get_oig_exclusions. Payments are attributed to the manufacturer AS FILED — no ticker/CIK; try the operating-company name. Program years: 2019 through the latest published year (CMS refreshes semiannually; year defaults to the latest). Pagination: limit ≤ 500 per page (CMS cap), use offset for more. Pure-publisher posture: CMS's records as filed, parsed by KeyVex (the source record is authoritative) — no derived influence scores. Disclosure ≠ wrongdoing; these are lawful, statutorily-disclosed payments.

get/v1/open-payments

Request

  • Base URL: https://api.keyvex.com
  • URL: https://api.keyvex.com/v1/open-payments
  • Auth: API key in header x-api-key

Query parameters

yearinteger

Program year (e.g., 2023). Default: latest published year.

payment_type'general' | 'research' | 'ownership'

Dataset: general (default — meals/consulting/speaker fees), research, or ownership (physician stakes).

companystring

Substring against the paying manufacturer / GPO name (e.g., 'pfizer', 'medtronic').

recipient_last_namestring

Recipient physician / practitioner last name (exact, case-insensitive).

recipient_first_namestring

Recipient first name (exact, case-insensitive).

npistring

Recipient National Provider Identifier (exact, 10 digits). Precise join key to get_oig_exclusions.

statestring

Two-letter recipient state code (e.g., 'TX').

naturestring

Substring against nature of payment (general only; e.g., 'consulting', 'speaker', 'royalty', 'food').

productstring

Substring against the associated drug / device name (general only; e.g., 'eliquis', 'ozempic').

summarizeboolean

true = CMS's pre-aggregated per-(company, nature) yearly totals instead of individual payments.

limitinteger

Records per page. Default 25, max 500 (CMS page cap).

offsetinteger

Pagination offset into the filtered result set.

Response

JSON envelope: { results: [...], count, has_more }.

Changes

No recorded changes to this operation across all 1 revision of this API.