Medicare Change of Ownership (CHOW) Scraper
parseforge/medicare-change-of-ownership-scraper
Lead generationDeveloper tools
Scrape CMS Medicare change of ownership records: 6,000 hospital and skilled nursing facility ownership changes since 2016 with buyer, seller, effective date and the owners behind both sides, including investment firms and holding companies.
- Total runs
- 14
- Bookmarked
- 0
- Last modified
- 8 days ago
This scraper was last updated on .
What does the Medicare Change of Ownership (CHOW) Scraper return?
Medicare Change of Ownership Scraper - CHOW Data
Every Medicare change of ownership CMS has published since 2016: 5,999 hospital and skilled nursing facility deals with the buyer, the seller, the effective date and the owners behind both sides. No login, no API key, no browser. Export to CSV, JSON, Excel, or XML.
CMS puts the CHOW files behind a data viewer that pages through them a screen at a time, and it keeps the owner records in a separate file that nobody joins for you. This Actor pulls both, matches the owners to each side of every deal, and adds what the raw files do not carry: whether an investment firm or holding company sits behind the buyer, whether the deal converts a non-profit to a for-profit, how many other facilities the same party has bought, and which other changes belong to the same chain.
| Who uses it | What they use CHOW data for |
|---|---|
| Healthcare M&A and PE deal teams | Who is buying in a state, at what pace, and who else the buyer's owners control |
| Health policy researchers and journalists | Private-equity and chain consolidation in nursing homes, with named owners |
| Hospital and SNF operators | Competitor transactions in their market, with CCNs to join to quality data |
| Healthcare lenders and valuation firms | Transaction comparables by facility type, state and year |
| State regulators and advocacy groups | Non-profit to for-profit conversions and out-of-state acquirers |
What it does
CMS publishes two change of ownership files: 772 hospital changes and 5,227 skilled nursing facility changes, effective from 1 January 2016 onward, plus two companion files with 23,857 and 119,419 owner records. Every row this Actor writes is one ownership change, carrying:
- π§Ύ The transaction: facility type, change type (change of ownership or acquisition/merger), effective date with its year and month, and days since it took effect.
- π₯ The buyer: organisation name, doing-business-as name, enrollment id, associate id, NPI, CCN, state and provider type.
- π·οΈ The seller: the same fields, so both sides of the deal are on one row.
- π© Deal flags: cross-state deal, whether the CCN was retained, and whether buyer and seller share a name, which is how an internal restructuring looks in the data.
- π€ The owners (optional): every owner CMS lists for each side, individual or organisation, with role, ownership percentage, address, association date and the entity-type flags, including investment firm, holding company, financial institution, management services company, for profit and non profit.
- π The ownership profile (optional): owner counts by type on each side, an investor-backed flag, owners created for the acquisition, and the profit-status conversion.
- π Deal history (optional): how many other changes the buyer or the seller appears in, split into acquisitions and divestitures, with the states touched and a serial-acquirer flag.
- πΈοΈ The owner network (optional): for the buyer's organisation owners, every Medicare enrollment those owners are attached to and the other ownership changes among them. A recent SNF deal resolved to a holding company attached to 15 enrollments and 14 other changes.
Every row contains: changeId, facilityType, chowTypeCode, chowType, effectiveDate, effectiveYear, effectiveMonth, daysSinceEffective, buyerOrganizationName, buyerDoingBusinessAs, buyerEnrollmentId, buyerAssociateId, buyerNpi, buyerCcn, buyerState, buyerProviderType, buyerMultipleNpiFlag, sellerOrganizationName, sellerDoingBusinessAs, sellerEnrollmentId, sellerAssociateId, sellerNpi, sellerCcn, sellerState, sellerProviderType, crossStateDeal, sameCcnRetained, relatedPartyDeal, sourceDataset, sourceUrl and scrapedAt.
What you can do with change of ownership data
Find the private equity behind a nursing home.
Turn on buyer owners and the ownership profile: buyerInvestmentFirmOwners, buyerHoldingCompanyOwners and buyerHasInvestorOwner come straight from CMS's own entity-type flags on the owner record, not from a guess about the name.
Map a chain.
The owner network follows the buyer's organisation owners into every enrollment they own, then lists the other ownership changes among them. That is how a roll-up shows up in Medicare data before it shows up in a press release.
Track conversions.
conversionType marks a change where the seller's owners are non-profit and the buyer's are for-profit, which is the transaction state regulators and advocacy groups look for.
Build transaction comparables.
Filter by facility type, state and effective date, then export. Every row carries the CCN, so the deals join to CMS quality, staffing and cost report data.
Why choose this scraper
| What you get | |
|---|---|
| Both files joined | Hospital and SNF changes in one feed with a common schema |
| Owners attached | CMS keeps owners in a separate file keyed on the enrollment id; this Actor does the join for you |
| Investor flags from CMS | Investment firm, holding company and financial institution come from the owner record itself |
| Chain detection | The owner network resolves the enrollments behind a buyer, not just the deal in hand |
| Serial acquirers | Deal history counts every other change the same party made, in both directions |
| Cheap filtering | Both files are pulled in full in three requests, so combining ten filters costs nothing extra |
How it compares
Nobody else on the Apify Store publishes the CHOW files. The comparison that matters is against reading them yourself on data.cms.gov, where the deal file and the owner file are separate downloads with no key in the interface to join them.
| Feature | ParseForge | data.cms.gov | General CMS dataset scrapers |
|---|---|---|---|
| Hospital and SNF changes in one feed | Yes | Two separate files | Two separate datasets |
| Owners joined to buyer and seller | Yes | Manual join on the enrollment id | No |
| Investor and holding company flags surfaced | Yes | Raw column | Raw column |
| Serial acquirer and chain network | Yes | No | No |
| Bulk export to CSV, JSON, Excel | Yes | CSV download | Yes |
| Price per row | $0.007 | Free, manual | $0.002 to $0.01 |
What an ownership change looks like
{
"changeId": "hospital-O20260408002087-O20071114000584-2026-04-12",
"facilityType": "Hospital",
"chowTypeCode": "CH",
"chowType": "CHANGE OF OWNERSHIP",
"effectiveDate": "2026-04-12",
"effectiveYear": 2026,
"effectiveMonth": 4,
"daysSinceEffective": 138,
"buyerOrganizationName": "SUTTER VALLEY HOSPITALS",
"buyerDoingBusinessAs": "SUTTER SURGICAL HOSPITAL-NORTH VALLEY",
"buyerEnrollmentId": "O20260408002087",
"buyerAssociateId": "3375531635",
"buyerNpi": "1053281519",
"buyerCcn": "050766",
"buyerState": "CA",
"buyerProviderType": "PART A PROVIDER - HOSPITAL",
"buyerMultipleNpiFlag": "No",
"sellerOrganizationName": "TWIN CITIES SURGICAL HOSPITAL LLC",
"sellerDoingBusinessAs": "SUTTER SURGICAL HOSPITAL-NORTH VALLEY",
"sellerEnrollmentId": "O20071114000584",
"sellerAssociateId": "2567550122",
"sellerNpi": "1336333954",
"sellerCcn": "050766",
"sellerState": "CA",
"sellerProviderType": "PART A PROVIDER - HOSPITAL",
"crossStateDeal": "No",
"sameCcnRetained": "Yes",
"relatedPartyDeal": "No",
"sourceDataset": "Hospital Change of Ownership",
"sourceUrl": "https://data.cms.gov/provider-characteristics/hospitals-and-other-facilities/hospital-change-of-ownership",
"scrapedAt": "2026-08-27T17:47:48.722Z"
}
With the owner blocks on, the row also carries buyerOwners and sellerOwners as arrays, plus buyerOwnerCount, buyerInvestmentFirmOwners, buyerHoldingCompanyOwners, buyerHasInvestorOwner, conversionType, buyerTotalChanges, buyerIsSerialAcquirer, ownerNetworkOwners, ownerNetworkEnrollmentCount and ownerLinkedChanges.
Configure the run
Run it with no input for the most recent changes across both files. Every filter is applied after the two files are downloaded, so combining them is free.
The 100 most recent ownership changes:
{ "maxItems": 100 }
Nursing home deals in Texas since 2024, with the owners and the investor flags:
{
"facilityTypes": ["Skilled Nursing Facility"],
"states": ["TX"],
"effectiveFrom": "2024-01-01",
"includeBuyerOwners": true,
"includeOwnershipProfile": true,
"maxItems": 500
}
Out-of-state hospital acquisitions with the buyer's other deals:
{
"facilityTypes": ["Hospital"],
"chowTypes": ["ACQUISITION/MERGER"],
"onlyCrossStateDeals": true,
"includeBuyerDealHistory": true,
"maxItems": 200
}
One operator's full transaction history and chain:
{
"buyerNameContains": "healthcare",
"includeBuyerOwners": true,
"includeOwnerNetwork": true,
"maxItems": 50
}
Free users
Free-plan runs return up to 10 ownership changes as a preview. Upgrade your Apify plan to pull the whole file.
Run it
- Create a free Apify account with $5 in credit.
- Open the Medicare Change of Ownership (CHOW) Scraper.
- Pick a facility type, state or date range, tick the owner blocks you want, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab, or schedule a monthly run to catch new changes.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent the CHOW files through the Model Context Protocol:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/medicare-change-of-ownership-scraper"
Then ask: "Which nursing homes changed hands in Ohio last year and who owns the buyers?", "Find hospital acquisitions where an investment firm sits behind the buyer" or "Which buyers made more than three acquisitions?"
Troubleshooting
Why does a deal have no owners?
CMS only lists owners for enrollments that filed them. When the owner file has no record for that enrollment id, the row keeps the transaction fields and the block is not charged.
Why is percentageOwnership empty?
Because CMS leaves it blank on most owner records; it is populated mainly for direct ownership interests of 5% or more. That is the source's own gap, not a parsing miss.
Why does the buyer look like the seller?
Related-party transfers are common: an operator moves a facility between its own entities. relatedPartyDeal marks the rows where buyer and seller names start the same, and sameCcnRetained marks the ones that kept the CMS certification number.
Why is nothing newer than a few months ago?
CMS refreshes the CHOW files quarterly. The sourceUrl on every row is the landing page where CMS states the release date.
Why is the run slow with the owner blocks on?
Each enrollment's owners are a separate CMS query, and the owner network adds up to three more per row. The transaction fields alone need three requests for the whole file; 200 changes with owners take a few minutes.
FAQ
| Question | Answer |
|---|---|
| What is a CHOW? | A change of ownership: the Medicare enrollment for a facility moves from one owner to another, either as a change of ownership or as an acquisition or merger. |
| How many changes are there? | 5,999 as published: 772 hospital and 5,227 skilled nursing facility changes effective from 1 January 2016. |
| Is the data public? | Yes. It comes from the CMS Provider Characteristics files on data.cms.gov, which are open data. |
| Does it cover other provider types? | CMS publishes CHOW files for hospitals and skilled nursing facilities only. Other provider types are not in the source. |
| Can I tell if private equity bought a facility? | The owner record carries CMS's own investment firm, holding company and financial institution flags, which is the closest public signal. It names the entity, not the fund's marketing name. |
| What is the owner network? | For the buyer's organisation owners, every Medicare enrollment those owners are attached to, and the other ownership changes among them. |
| Can I join this to quality ratings? | Yes. Every row carries the CCN and NPI for both sides, which join to Care Compare, cost reports and staffing files. |
| How current is it? | The files are refreshed quarterly; the most recent change in the data when this Actor was built was effective April 2026. |
| How many rows per run? | Free plan: 10. Paid: all 5,999. |
| Is this an official CMS product? | No. It is unofficial and reads only public CMS open data. |
π Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
β οΈ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by the Centers for Medicare & Medicaid Services. It reads only public CMS open data. Owner records name real people, so you are responsible for using the data in compliance with applicable laws, including GDPR, CCPA, and PIPL. Do not use it to identify, profile, or target individuals.
What input does the Medicare Change of Ownership (CHOW) Scraper accept?
| Field | Type | What it does | Default |
|---|---|---|---|
| facilityTypes | array | Which CHOW file to read. CMS publishes 772 hospital changes and 5,227 skilled nursing facility changes since 2016. | not set |
| maxItems | integer | Free users: limited to 10 items (preview). Paid users: up to 1,000,000. | 10 |
| chowTypes | array | CMS records two types: a change of ownership and an acquisition or merger. | not set |
| states | array | Two-letter state codes. A change is kept when either the buyer or the seller is enrolled in one of them, for example TX or CA. | not set |
| buyerNameContains | string | Keep only changes where the buying organization's name contains this text. | not set |
| sellerNameContains | string | Keep only changes where the selling organization's name contains this text. | not set |
| npis | array | Keep only changes where the buyer or the seller has one of these NPIs. | not set |
| ccns | array | Keep only changes where the buyer or the seller has one of these CMS Certification Numbers. | not set |
| effectiveFrom | string | Earliest effective date of the change, as YYYY-MM-DD. The files start on 1 January 2016. | not set |
| effectiveTo | string | Latest effective date of the change, as YYYY-MM-DD. | not set |
| onlyCrossStateDeals | boolean | Keep only changes where the buyer and the seller are enrolled in different states, which is the usual shape of an out-of-state roll-up. | false |
| sortBy | string (2 options) | Order by the effective date of the change. | newest |
| includeBuyerOwners | boolean | Add every owner CMS lists for the buying enrollment: name, individual or organisation, role, ownership percentage, address, association date and the entity-type flags (investment firm, holding company, financial institution, management services, for profit, non profit). | false |
| includeSellerOwners | boolean | Add the same owner detail for the selling enrollment. | false |
| includeOwnershipProfile | boolean | Count the owner types on each side and flag the deal: investor-backed buyer, owners created for the acquisition, and whether the change converts a non-profit to a for-profit. | false |
| includeBuyerDealHistory | boolean | How many other ownership changes this buyer appears in, as buyer and as seller, with the first and last dates, the states touched and a serial-acquirer flag. | false |
| includeSellerDealHistory | boolean | The same history for the selling party. | false |
| includeOwnerNetwork | boolean | Other ownership changes linked to the buyer through a shared owner, which is how a chain shows up in the data. | false |
How much does the Medicare Change of Ownership (CHOW) Scraper cost?
from $3.56 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.0178 to $0.02 |
| Ownership change | One Medicare change of ownership: facility type, change type, effective date, and the buyer and seller with their organisation name, doing-business-as name, enrollment and associate ids, NPI, CCN, state and provider type, plus cross-state, retained-CCN and related-party flags. | $0.00623 to $0.007 |
| CMS dataset page | One page of the CMS change of ownership files read. Both files are pulled in full so every filter can be combined at no extra cost. Never charged for more pages than the run wrote rows. | $0.00356 to $0.004 |
| Buyer owners | Optional. Every owner CMS lists for the buying enrollment: name, individual or organisation, role, ownership percentage, address, association date and the entity-type flags (investment firm, holding company, financial institution, management services, for profit, non profit). Charged only when owners are on file. | $0.00534 to $0.006 |
| Seller owners | Optional. The same owner detail for the selling enrollment. Charged only when owners are on file. | $0.00534 to $0.006 |
| Ownership profile | Optional. The owner counts on each side by type, the investor-backed flag, owners created for the acquisition, and whether the change converts a non-profit to a for-profit. Charged only when at least one side has owners on file. | $0.00534 to $0.006 |
| Buyer deal history | Optional. Every other ownership change the buying party appears in, split into acquisitions and divestitures, with the first and last dates, the states touched and a serial-acquirer flag. | $0.00445 to $0.005 |
| Seller deal history | Optional. The same history for the selling party. | $0.00445 to $0.005 |
| Owner network | Optional. The chain behind the buyer: for its organisation owners, every Medicare enrollment those owners are attached to and the other ownership changes among them. Charged only when the owner is attached to more than the enrollment in hand. | $0.00712 to $0.008 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
How do I call the Medicare Change of Ownership (CHOW) Scraper API?
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~medicare-change-of-ownership-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"maxItems": 10,
"onlyCrossStateDeals": false,
"sortBy": "newest",
"includeBuyerOwners": false,
"includeSellerOwners": false
}' What example inputs can I use?
Use these inputs to see how a run is configured.
{
"maxItems": 10,
"onlyCrossStateDeals": false,
"sortBy": "newest",
"includeBuyerOwners": false,
"includeSellerOwners": false
} What do users say about the Medicare Change of Ownership (CHOW) Scraper?
No reviews yet. Be the first.
How do I report an issue with the Medicare Change of Ownership (CHOW) Scraper?
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
What related scrapers can I use?
Run Medicare Change of Ownership (CHOW) Scraper on Apify All scrapers
