# CMS Hospital Change of Ownership Scraper API (`pink_comic/cms-hospital-change-ownership-transactions`) Actor

Search CMS Hospital Change of Ownership enrollment transactions by buyer/seller CCN, NPI, enrollment IDs, organization, state, provider type, acquisition type, and effective date. Buyer and seller evidence stays distinct with official provenance.

- **URL**: https://apify.com/pink\_comic/cms-hospital-change-ownership-transactions.md
- **Developed by:** [Ava Torres](https://apify.com/pink_comic) (community)
- **Categories:** Lead generation, Business, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 cms hospital change of ownership scraper api evidence items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Hospital Change of Ownership Transactions Scraper API

Search the official public **CMS Hospital Change of Ownership (CHOW)** dataset for hospital enrollment transactions. Buyer and seller identifiers, organizations, states, provider types, and names remain separate in every result.

### Fast default and price

Empty input uses buyer CCN `150056` and returns one Indiana University Health transaction. The maximum first-run charge is **$0.0021**: `$0.0001` actor start + one `$0.002` dataset item.

```json
{"buyerCcn":"150056","maxResults":1}
```

### Search examples

```json
{"sellerCcn":"150161","maxResults":10}
```

```json
{
  "organizationName":"INDIANA UNIVERSITY HEALTH",
  "state":"IN",
  "providerType":"HOSPITAL",
  "acquisitionType":"ACQUISITION/MERGER",
  "effectiveFrom":"2025-01-01",
  "effectiveTo":"2025-12-31",
  "maxCandidates":500,
  "maxResults":25
}
```

Supported fields include buyer/seller CCN and NPI, either-side enrollment ID and associate ID, either-side organization/DBA, state, provider type, CHOW acquisition type/code, and effective-date range. Results sort deterministically by effective date and identifiers. `maxResults` is a total output cap. Broad fields are applied to at most `maxCandidates` source rows, and output discloses when that bound may affect coverage.

### Output and provenance

Each found item includes:

- distinct nested `buyer` and `seller` evidence
- CCN, NPI, enrollment ID, associate ID, state, provider type, legal name, and DBA where CMS reports them
- CHOW type code/text and CMS effective date
- retrieval timestamp, dataset ID, official source link, query disclosure, candidate bound, and interpretation limits
- explicit `NO_MATCH` or `SOURCE_UNAVAILABLE` evidence instead of silent empty output

### Evidence boundaries

CMS CHOW rows are **hospital enrollment transaction snapshots**. They are not proof of legal closing, completed acquisition, complete corporate lineage, beneficial ownership, current operator, licensure, good standing, valuation, or deal outcome. Dates, parties, and identifiers may be corrected. A bounded no-match does not prove no transaction exists. Confirm consequential ownership, licensing, transaction, and corporate conclusions with the relevant CMS enrollment record, state agencies, transaction documents, and legal registries.

Source: [CMS Hospital Change of Ownership](https://data.cms.gov/provider-characteristics/hospitals-and-other-facilities/hospital-change-of-ownership)

# Actor input Schema

## `buyerCcn` (type: `string`):

Exact CMS Certification Number reported for the buyer.

## `sellerCcn` (type: `string`):

Exact seller CCN.

## `buyerNpi` (type: `string`):

Exact buyer NPI.

## `sellerNpi` (type: `string`):

Exact seller NPI.

## `enrollmentId` (type: `string`):

Buyer or seller enrollment ID; checked within the bounded candidate set.

## `associateId` (type: `string`):

Buyer or seller associate ID; checked within the bounded candidate set.

## `organizationName` (type: `string`):

Case-insensitive buyer/seller legal-name or DBA substring.

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

Two-letter buyer or seller enrollment state.

## `providerType` (type: `string`):

Buyer/seller CMS provider type code or text substring, such as HOSPITAL.

## `acquisitionType` (type: `string`):

CHOW type code or text substring, such as AM or ACQUISITION/MERGER.

## `effectiveFrom` (type: `string`):

CMS CHOW effective date on or after YYYY-MM-DD.

## `effectiveTo` (type: `string`):

CMS CHOW effective date on or before YYYY-MM-DD.

## `sortDirection` (type: `string`):

Optional effective date sort filter or result-control setting. See the README for source semantics and examples.

## `maxCandidates` (type: `integer`):

Hard bound for source rows retrieved before local filters. Results disclose when the bound may limit coverage.

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

Total paid dataset-item cap after filtering and sorting. The one-item default costs at most $0.0021: $0.0001 start plus $0.002 per item.

## Actor input object example

```json
{
  "buyerCcn": "150056",
  "sortDirection": "desc",
  "maxCandidates": 500,
  "maxResults": 1
}
```

# 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 = {
    "buyerCcn": "150056",
    "maxResults": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("pink_comic/cms-hospital-change-ownership-transactions").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 = {
    "buyerCcn": "150056",
    "maxResults": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("pink_comic/cms-hospital-change-ownership-transactions").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 '{
  "buyerCcn": "150056",
  "maxResults": 1
}' |
apify call pink_comic/cms-hospital-change-ownership-transactions --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pink_comic/cms-hospital-change-ownership-transactions"
        }
    }
}

```

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/aphvhOv4gPuX5IoGw/builds/og5TJStxXTH4pQ6XO/openapi.json
