# CMS Open Payments Scraper - Pharma Payments & Doctor Leads (`scrapesage/open-payments-scraper`) Actor

Scrape CMS Open Payments (Sunshine Act): pharma & device payments to physicians & teaching hospitals. Detailed transactions plus per-physician, per-manufacturer & per-hospital rollups with KOL & lead scores. Filter by state, specialty, NPI, company, year. Keyless US-gov API, no browser, monitoring.

- **URL**: https://apify.com/scrapesage/open-payments-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Agents, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 1,000 payment records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## CMS Open Payments Scraper — Pharma-to-Physician Payments, KOLs & Leads

Extract the entire **[CMS Open Payments](https://openpaymentsdata.cms.gov/) (Sunshine Act)** database — every disclosed **payment or transfer of value** from drug & medical-device manufacturers and GPOs to **physicians, NPs/PAs and teaching hospitals**. Pull **detailed transactions**, or roll them up into **per-physician, per-manufacturer and per-hospital intelligence profiles** with totals, top relationships, payment-nature breakdowns, and **KOL & lead scores**.

No login, no API key, no browser — a fast, consistent read of the official US-government data, filterable by **state, specialty, NPI, manufacturer, payment type, drug/device, amount and year**, with built-in **monitoring** for only-new records.

### Why this Open Payments scraper?

Most tools dump raw payment rows and leave you to do the analysis. This actor ships the **richest dataset in the category** *and* does the aggregation for you — so a single run gives you a ready-to-use list of the top-paid physicians in a specialty + state, or everything a competitor pays the field, complete with contact-grade detail (name, NPI, specialty, full practice address).

| Data | Generic exporters | This actor |
|---|---|---|
| Detailed payment rows (amount, date, nature, form) | ✅ | ✅ |
| Recipient name, **NPI**, specialty, full address | partial | ✅ |
| Associated **drug / device + therapeutic area + NDC** | ❌ | ✅ |
| General **+ research (PI + study) + ownership** books | partial | ✅ |
| **Per-physician rollup**: total $, #transactions, top payers, nature mix | ❌ | ✅ |
| **KOL tier + lead score** (engagement-weighted) | ❌ | ✅ |
| **Per-manufacturer intelligence**: spend, reach, top recipients & products | ❌ | ✅ |
| **Per-teaching-hospital rollup** | ❌ | ✅ |
| NUCC **taxonomy** enrichment | ❌ | ✅ |
| Multi-year totals (2018–2024) in one record | ❌ | ✅ |
| Monitoring — only new records | ❌ | ✅ |

### Use cases

- **Pharma & medical-device sales intelligence** — find the physicians a competitor already pays (by manufacturer + specialty + state), ranked by spend. Every record carries NPI, specialty and practice address — warm, in-market targets.
- **KOL / key-opinion-leader identification** — surface the top-paid physicians in any therapeutic area, with their dominant payers, products and engagement mix (consulting vs speaking vs research).
- **Compliance, transparency & spend monitoring** — track a manufacturer's transfers of value, or a physician's industry relationships, and re-run on a schedule to catch newly published disclosures.
- **Healthcare lead generation** — build targeted physician lists (specialty + geography) enriched with industry-engagement signals and lead scores, ready for your CRM.
- **Investigative journalism & academic research** — quantify financial relationships between industry and medicine, by drug, company, hospital, or region.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **CMS Open Payments Scraper**, choose a **Mode** (Payments, Physicians, Manufacturers or Teaching hospitals), and set your filters (e.g. `state: TX`, `specialty: Dermatology`, `manufacturer: AbbVie`, `years: ["2023"]`).
3. Click **Start** and watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "mode": "physicians",
    "years": ["2023"],
    "paymentTypes": ["general"],
    "state": "TX",
    "specialty": "Dermatology",
    "sortBy": "amount",
    "scanLimit": 20000,
    "maxResults": 500,
    "includeProfileEnrichment": true
}
```

- **mode** *(default `payments`)* — `payments` (detailed transactions), `physicians` (per-physician profiles with KOL & lead score), `manufacturers` (per-company intelligence), `teachingHospitals` (per-hospital rollups).
- **years** *(default `["2023"]`)* — one or more program years, 2018–2024. Combine years to total a physician's or company's payments over time.
- **paymentTypes** *(default `["general"]`)* — `general` (meals, travel, consulting, speaking, gifts), `research` (carries principal investigator + study name), `ownership` (physician ownership interests).
- **state / specialty / physicianNpi / physicianFirstName / physicianLastName** — recipient filters.
- **manufacturer / natureOfPayment / drugOrDevice / minAmount / maxAmount** — payer & payment filters.
- **sortBy** *(default `amount`)* — order the scanned window by largest amount, most recent date, or none (fastest).
- **maxResults** *(default 1000)* — records emitted this run.
- **scanLimit** *(default 20000)* — rows scanned per year/book before rolling up (aggregation modes). Totals are **exact** when your filter matches fewer rows than this; widen `scanLimit` or tighten filters for big queries.
- **includeProfileEnrichment** *(default true)* — add NUCC taxonomy + fallback address from the CMS profile supplement (physicians mode).
- **monitorMode / monitorStoreName** — emit only records not seen in previous runs.
- **proxyConfiguration** — optional; the API is a clean keyless US-gov endpoint that serves the Apify platform directly, so a proxy is **not** required (the actor retries and rides out occasional server blips on its own).

### Output

Each mode returns one clean, dense table. A **physician profile** (`recordType: "physician"`):

```json
{
    "recordType": "physician",
    "recipientProfileId": "6301",
    "recipientNpi": "1124079306",
    "name": "EDWARD LAIN",
    "primaryType": "Medical Doctor",
    "specialty": "Dermatology",
    "licenseStates": ["TX"],
    "city": "AUSTIN", "state": "TX", "zip": "78732-1815",
    "address": "5145 FM 620 N STE B-110, AUSTIN, TX, 78732-1815",
    "totalAmountUsd": 56629.55,
    "transactionCount": 24,
    "uniqueManufacturers": 12,
    "topManufacturer": { "name": "Galderma Laboratories, L.P.", "amountUsd": 35196.5, "count": 6 },
    "topProducts": [{ "name": "AKLIEF", "therapeuticArea": "ACNE", "amountUsd": 18196.5, "count": 4 }],
    "natureBreakdown": {
        "consulting_fee": { "count": 9, "amountUsd": 53301.5 },
        "food_beverage": { "count": 12, "amountUsd": 648.15 },
        "travel_lodging": { "count": 3, "amountUsd": 2679.9 }
    },
    "largestPayment": 9000, "avgPayment": 2359.56,
    "firstPaymentDate": "01/25/2023", "lastPaymentDate": "12/18/2023",
    "taxonomyCodes": ["207N00000X"],
    "kolTier": "High", "leadScore": 100,
    "scrapedAt": "2026-06-16T06:17:17.953Z"
}
```

A **payment** record (`mode: payments`) carries the recipient, paying manufacturer/GPO, `amountUsd`, `dateOfPayment`, `natureOfPayment` (+ a normalized `natureCategory`), `formOfPayment`, the associated `products` (drug/device, therapeutic area, NDC), and research/ownership context. A **manufacturer** record carries `totalAmountUsd`, `uniquePhysicians`, `uniqueTeachingHospitals`, `topRecipients`, `topProducts`, `topSpecialties` and the `natureBreakdown`. A **teachingHospital** record rolls payments up per hospital with its top manufacturers.

#### What to expect (field coverage)

Open Payments is manufacturer-reported, so a few fields are populated only when the reporter included them.

| Field group | Coverage |
|---|---|
| Recipient name, NPI, specialty, state | ~100% for physician recipients |
| Practice address (street, city, zip) | ~95%+ |
| Amount, date, nature, form of payment | ~100% |
| Associated drug/device + therapeutic area | present when the payment relates to a product |
| Research: principal investigator + study | research payments only |
| Taxonomy codes (enrichment) | when the recipient is in the CMS profile supplement |

A blank field means the manufacturer didn't report it — never that scraping failed. Nothing is dropped, so you always get the richest record available.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly with **monitoring mode** on to capture newly published payments or track a manufacturer/physician for new disclosures.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, data-warehouse load) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/open-payments-scraper').call({
    mode: 'physicians',
    years: ['2023'],
    state: 'TX',
    specialty: 'Dermatology',
    maxResults: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} physician profiles`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new physician leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored manufacturer or physician has new disclosures.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "list the top 50 dermatologists in Texas by industry payments, with their biggest payers" and let it run the scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **healthcare & B2B intelligence stack** — pair industry-payment data with provider directories and government records:

- **[Healthgrades Scraper](https://apify.com/scrapesage/healthgrades-scraper)** — doctors, reviews, and provider contact leads.
- **[WebMD Scraper](https://apify.com/scrapesage/webmd-scraper)** — doctors, specialties, insurance, and reviews.
- **[TherapyDen Scraper](https://apify.com/scrapesage/therapyden-scraper)** — therapists and mental-health provider leads.
- **[FINRA Financial Advisor Scraper](https://apify.com/scrapesage/financial-advisor-scraper)** — advisers & firms from BrokerCheck / IAPD.
- **[SEC EDGAR Scraper](https://apify.com/scrapesage/sec-edgar-scraper)** — filings, financials & companies.
- **[USAspending Scraper](https://apify.com/scrapesage/usaspending-scraper)** — federal awards, contractors & leads.
- **[FEC Campaign Finance Scraper](https://apify.com/scrapesage/fec-campaign-finance-scraper)** — donors, committees & lobbying.
- **[FMCSA Trucking Scraper](https://apify.com/scrapesage/fmcsa-trucking-scraper)** — motor carriers, authority & leads.

### Tips

- **Pick a mode that matches the question.** Want a target list of doctors? Use **Physicians**. Want to size up a competitor's spend? Use **Manufacturers**. Want every raw transaction? Use **Payments**.
- **Exact totals vs. fast samples.** In aggregation modes, totals are exact when your filter matches fewer rows than `scanLimit`. For a whole specialty nationwide, raise `scanLimit` or split the run by state.
- **Find KOLs fast** — Physicians mode, set `specialty` + `state`, sort by amount, and read off the `kolTier` / `leadScore` and `topManufacturers`.
- **Competitive intel** — Manufacturers mode with `manufacturer: "<competitor>"` returns their total spend, physician reach, and `topRecipients` you can pursue.
- **Recurring monitoring** — turn on **monitorMode** and add a [Schedule](https://docs.apify.com/platform/schedules) to capture newly published records without re-emitting old ones.

### FAQ

**What is Open Payments / the Sunshine Act?** A US federal program (run by CMS) that requires drug and medical-device manufacturers and GPOs to report payments and transfers of value to physicians, certain non-physician practitioners, and teaching hospitals. This actor reads the official published data.

**Does it need an API key or login?** No. The CMS Open Payments data API is public and keyless — no browser, no proxy required. The actor retries and rides out occasional server blips automatically.

**Which years are available?** Program years 2018 through 2024 (the latest published). Select one or several.

**How current is the data?** It mirrors what CMS has published. CMS refreshes Open Payments annually (and occasionally re-publishes corrections) — run with monitoring mode on a schedule to pick up changes automatically.

**Can I get a physician's full payment history?** Yes — set `physicianNpi` and select multiple `years`; the physician rollup totals across them.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**Are emails included?** Open Payments does not publish email addresses; the lead value is the verified name, **NPI**, specialty, practice **address** and the industry-engagement signal. Pair with the [Healthgrades](https://apify.com/scrapesage/healthgrades-scraper) or [WebMD](https://apify.com/scrapesage/webmd-scraper) scrapers to enrich providers further.

**Is scraping this data legal?** This actor collects publicly available US-government data. You're responsible for using it in compliance with applicable laws and CMS's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `mode` (type: `string`):

What to output. 'Payments' streams detailed transaction records (one row per payment). 'Physicians' aggregates payments into a rich profile per physician (totals, top payers, KOL & lead score) — the lead-gen / KOL engine. 'Manufacturers' rolls payments up per drug/device company (competitive intelligence). 'Teaching hospitals' rolls payments up per teaching hospital.

## `years` (type: `array`):

One or more CMS Open Payments program years to include. The latest published year is 2024. Combine multiple years to total a physician's or company's payments across time.

## `paymentTypes` (type: `array`):

Which Open Payments books to read. 'General' = the main transfers of value (meals, travel, consulting, speaking, gifts) — the largest and most useful. 'Research' = research/clinical-trial payments (carries the principal investigator + study name). 'Ownership' = physician ownership/investment interests.

## `state` (type: `string`):

Filter by the recipient's state. 2-letter code (e.g. TX, CA) or full name. Leave empty for all states. Great for building a geographic target list.

## `specialty` (type: `string`):

Filter by physician specialty (matched anywhere in the CMS specialty string). Examples: Dermatology, Cardiology, Oncology, Orthopaedic Surgery, Psychiatry. Leave empty for all specialties.

## `physicianNpi` (type: `string`):

Look up a single physician by their 10-digit NPI number. Combine with multiple years to see their full payment history.

## `physicianFirstName` (type: `string`):

Filter by physician first name (partial match). Pair with last name to find a specific provider.

## `physicianLastName` (type: `string`):

Filter by physician last name (exact match).

## `manufacturer` (type: `string`):

Filter by the paying drug/device company or GPO name (partial match). Examples: Pfizer, AbbVie, Stryker, Medtronic, Allergan. The key filter for competitive intelligence — see every physician a competitor pays.

## `natureOfPayment` (type: `string`):

Filter to one nature of payment (general payments only). Leave empty for all. Use the exact CMS label, e.g. 'Consulting Fee', 'Food and Beverage', 'Travel and Lodging', 'Honoraria', 'Royalty or License'.

## `drugOrDevice` (type: `string`):

Filter to payments associated with a drug, biological or device name (partial match), e.g. Humira, Botox, Ozempic. Best with general payments.

## `minAmount` (type: `integer`):

Only keep payments of at least this many dollars. In aggregation modes this filters the underlying payments before they are rolled up. Leave empty for no minimum.

## `maxAmount` (type: `integer`):

Only keep payments of at most this many dollars. Leave empty for no maximum.

## `sortBy` (type: `string`):

How to order rows as they are scanned. 'Amount' (default) surfaces the largest payments first — ideal for finding top-paid KOLs. 'Date' returns most recent first. 'None' is fastest.

## `maxResults` (type: `integer`):

Maximum number of records emitted this run (payment rows, or aggregated profiles in physicians/manufacturers/teachingHospitals modes).

## `scanLimit` (type: `integer`):

In physicians / manufacturers / teachingHospitals modes, the maximum number of underlying payment rows scanned PER program-year book before rolling up. Higher = more complete totals on broad queries (use a tighter state/specialty/manufacturer filter to make totals exact). Ignored in payments mode.

## `includeProfileEnrichment` (type: `boolean`):

In physicians mode, enrich each emitted profile with NUCC taxonomy codes and a fallback address from the CMS Covered Recipient Profile Supplement. Adds one fast lookup per physician.

## `deduplicateResults` (type: `boolean`):

Emit each payment record / profile only once per run.

## `monitorMode` (type: `boolean`):

Remember records already returned and emit ONLY records not seen in previous runs. Pair with Apify Schedules to capture newly published payments, or to track a specific manufacturer / physician for new disclosures over time.

## `monitorStoreName` (type: `string`):

Named key-value store holding the 'already seen' ids for monitoring mode. Use a different name per tracked scope (lowercase letters, digits and hyphens only).

## `maxConcurrency` (type: `integer`):

Maximum parallel fetches across the selected year/book datasets (aggregation modes).

## `proxyConfiguration` (type: `object`):

Proxy settings. CMS Open Payments is a clean keyless US-gov API that serves the Apify platform directly, so a proxy is NOT required (leave it off for the fastest runs). The actor retries and rides out occasional server blips on its own; enable a proxy only if you specifically want IP rotation.

## Actor input object example

```json
{
  "mode": "payments",
  "years": [
    "2023"
  ],
  "paymentTypes": [
    "general"
  ],
  "state": "TX",
  "specialty": "Dermatology",
  "sortBy": "amount",
  "maxResults": 1000,
  "scanLimit": 20000,
  "includeProfileEnrichment": true,
  "deduplicateResults": true,
  "monitorMode": false,
  "monitorStoreName": "open-payments-monitor",
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped Open Payments records (transactions or aggregated profiles) in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "years": [
        "2023"
    ],
    "paymentTypes": [
        "general"
    ],
    "state": "TX",
    "specialty": "Dermatology"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/open-payments-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "years": ["2023"],
    "paymentTypes": ["general"],
    "state": "TX",
    "specialty": "Dermatology",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/open-payments-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "years": [
    "2023"
  ],
  "paymentTypes": [
    "general"
  ],
  "state": "TX",
  "specialty": "Dermatology"
}' |
apify call scrapesage/open-payments-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/open-payments-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gqHKq1ZrucYtcZHdI/builds/vymHWxPb9kspLay7y/openapi.json
