# CQC Care Services Scraper (`alkausari_mujahid/care-quality-commission-scraper`) Actor

Get ratings, registered managers and inspection reports for any CQC-registered care service in England: care homes, homecare, GPs, dentists, hospitals. Filter by type, area and rating, or schedule it to catch new reports and rating changes.

- **URL**: https://apify.com/alkausari_mujahid/care-quality-commission-scraper.md
- **Developed by:** [Alkausari M](https://apify.com/alkausari_mujahid) (community)
- **Categories:** Automation, Integrations
- **Stats:** 6 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 services

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does CQC Care Services Scraper do?

**Get the current CQC ratings, registered managers and inspection reports for any care service in England — care homes, homecare agencies, GP practices, dentists, hospitals and more — as one spreadsheet-ready row per service.** Pick services by type, area, rating or name, or paste specific services, and the Actor does the rest.

It reads the [Care Quality Commission](https://www.cqc.org.uk)'s official care directory and each service's public CQC pages. Runs are fast: **20 care homes take about 10 seconds**. Schedule it with **monitoring** switched on and each run returns only services with a **new inspection report or changed ratings**.

Because it runs on the Apify platform you also get an API, scheduling, webhooks, and integrations with Google Sheets, Slack, Zapier and Make.

### Who is it for?

- **Compliance and quality teams** — track your own services and competitors, and get alerted when a new report is published or a rating changes.
- **Suppliers to the care sector** — build lists of care homes or homecare agencies in an area, with the registered manager and provider for each.
- **Care comparison and search sites** — keep ratings and reports current across thousands of services.
- **Consultants, investors and due-diligence teams** — review a provider's services, ratings and inspection history in one table.
- **Researchers and journalists** — analyse ratings by region, service type or provider.

### How to get CQC ratings and reports

1. Click **Try for free** and open the **Input** tab.
2. Choose **service types** (for example care homes) and **areas** (a town, local authority, region or postcode).
3. Optionally filter by **overall rating** or **name**, and choose **how much detail** you need.
4. Click **Start**. Services appear in the **Output** tab within seconds.
5. Download them as **Excel, CSV, JSON or HTML**, or send them to Google Sheets or your CRM.

### Input

| Field | What it does |
|---|---|
| **Service types** | Care homes (residential or nursing), homecare agencies, supported living, dentists, GP practices, hospitals, hospices, clinics and every other CQC service type. Empty = all. |
| **Areas** | A town (`Bristol`), a local authority (`Leeds`), a region (`South West`), a postcode district (`BS1`) or area (`BS`), or a full postcode. Empty = all of England. |
| **Overall ratings** | Outstanding, Good, Requires improvement, Inadequate, or Not rated. |
| **Name contains** | A word in the service or provider name, for example a care group like `Barchester`. |
| **Specific services** | CQC location IDs (`1-10557588274`) or cqc.org.uk links, instead of the filters. |
| **Maximum services** | Stop after this many, most recently inspected first. 0 = every match. |
| **How much detail** | Ratings and who runs it (fastest) · plus the latest inspection summary · plus the full latest report. |
| **Include inspection history** | Every past inspection: date, type, summary and report link. |
| **Only services that changed** | Monitoring for scheduled runs — see below. |

```json
{
    "serviceTypes": ["Residential homes", "Nursing homes"],
    "areas": ["Bristol", "BS15"],
    "ratings": ["requires-improvement", "inadequate"],
    "maxResults": 50,
    "detail": "summary"
}
```

### Output

One row per service. Example (shortened):

```json
{
    "locationId": "1-10557588274",
    "name": "Hebburn Manor",
    "serviceTypes": ["Nursing homes"],
    "specialisms": ["Caring for adults over 65 yrs", "Dementia"],
    "address": "Victoria Road East, Hebburn, Tyne and Wear, NE31 1YQ",
    "postcode": "NE31 1YQ",
    "localAuthority": "South Tyneside",
    "region": "North East",
    "phone": "(0191) 430 1100",
    "website": "https://www.example-care-home.co.uk",
    "providerName": "Atlas Care Homes Limited",
    "registeredManagers": ["Mrs Leigh Tania Brown", "Mrs Barbara Theresa Davies"],
    "nominatedIndividuals": ["Mr Mohammad Afzal Ahmad"],
    "overallRating": "Good",
    "safe": "Good",
    "effective": "Good",
    "caring": "Good",
    "responsive": "Good",
    "wellLed": "Good",
    "latestReportPublished": "2025-01-22",
    "latestReportId": "AP8648",
    "latestReportUrl": "https://www.cqc.org.uk/location/1-10557588274/reports/AP8648/overall",
    "latestReportFormat": "HTML",
    "latestInspectionDate": "2025-01-15",
    "latestReportSummary": "Date of assessment 7 January to 15 January 2025. Hebburn Manor is a residential care home…",
    "cqcUrl": "https://www.cqc.org.uk/location/1-10557588274"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The Output tab has three views: **Services**, **Latest reports** and **Changes (monitoring)**.

#### Data fields

| Field | Description |
|---|---|
| `locationId`, `name`, `alsoKnownAs`, `cqcUrl` | The service and its CQC page |
| `serviceTypes`, `specialisms` | What kind of service it is and who it cares for |
| `address`, `postcode`, `localAuthority`, `region`, `phone`, `website` | Where it is and how to contact it |
| `providerId`, `providerName` | The organisation that runs it |
| `registeredManagers`, `nominatedIndividuals` | Every person CQC lists as responsible for the service |
| `overallRating`, `safe`, `effective`, `caring`, `responsive`, `wellLed` | Current ratings. Services CQC doesn't rate (such as dentists) show its judgement instead, like "Regulations met" or "No action" |
| `latestReportPublished`, `latestReview` | When the latest report was published, and when CQC last reviewed the service's information between inspections |
| `latestReportId`, `latestReportUrl`, `latestReportFormat` | The latest report (an HTML page, or a PDF for older inspections) |
| `latestInspectionType`, `latestInspectionDate`, `latestReportSummary` | With summary or full detail |
| `latestReportText` | With full detail: the whole report, every key question section, or the PDF's text |
| `inspections` | With history: every past inspection's date, type, summary and report link |
| `changeType`, `previousOverallRating`, `previousReportId` | With monitoring: what changed |

A **run summary** (filters, sources used, how many services were found, saved or unchanged) is saved to the key-value store as `RUN_SUMMARY`.

### How much detail — and how fast?

| Detail | What you get | Speed (from test runs) |
|---|---|---|
| Ratings and who runs it | Everything except report text | 20 services in about 10 seconds |
| Plus the latest inspection summary | Adds CQC's summary of the latest inspection, its type and date | about the same |
| Plus the full latest report | Adds the complete report text | a few seconds more per service |

Filtering by overall rating reads CQC's national ratings file first, which adds two to three minutes to the run.

### Monitoring: get only what changed

Switch on **Only services that changed since the last run** and schedule the Actor (daily or weekly). The first run returns every matching service as a starting point. After that, a service is returned only when:

- `newReport` — CQC published a new inspection or assessment report,
- `ratingsChanged` — its overall or key-question ratings changed (with the previous overall rating alongside),
- `newService` — it's newly in scope, for example a newly registered care home in your area.

Unchanged services aren't saved and aren't charged. The memory lives in a key-value store in your own Apify account (one per saved task, or a name you choose); use a new memory name to start over.

### How much does it cost?

You pay for what you collect:

| | Price |
|---|---|
| **Per service saved** — ratings, who runs it, contact details, latest report link | $0.005 ($5 per 1,000) |
| **Inspection details** — the latest inspection summary and/or the full history | +$0.002 per service |
| **Full report** — the complete text of the latest report | +$0.01 per service |
| **Monitoring check** — each service compared with the previous run | $0.0005 per service |

| Example run | Cost |
|---|---|
| 100 care homes, ratings and who runs them | $0.50 |
| 100 care homes with their latest inspection summary | $0.70 |
| 100 care homes with the full latest report | $1.70 |
| Monitoring 200 services weekly (about 5 changes a week) | about $0.13 a week |

Add-ons are charged only when a service actually has that content — no summary for a service that hasn't been inspected, no report charge when there's no report. Services that aren't found or can't be read aren't charged, and in monitoring mode unchanged services cost only the check. There's no subscription and no start fee beyond Apify's standard start charge of $0.00005 per GB of memory. Set a **maximum cost per run** in the run options and the Actor stops cleanly at the limit, keeping everything collected so far.

### Where does the data come from?

- **CQC's care directory and ratings files** — published by CQC under the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/). *Contains CQC data © Care Quality Commission, used under the Open Government Licence.*
- **Each service's public page on cqc.org.uk** — ratings, who runs it and its reports.

### FAQ

**Does it cover Wales, Scotland or Northern Ireland?**
No. CQC regulates health and social care in England; the other nations have their own regulators.

**Why do some services have no ratings?**
CQC doesn't rate some types of service, such as dentists, and newly registered services haven't been inspected yet. Very old reports (before 2014) predate the five key questions.

**Does it collect personal data?**
It includes the names of registered managers and nominated individuals, as published on CQC's public register. If you store or use them, data-protection law such as UK GDPR applies to you.

**What happens if CQC changes its website?**
Every run checks its first pages. If they can't be read, the run stops with a clear error, so you're never left with incomplete data. Please report it in the **Issues** tab so the Actor can be updated.

### 📮 Support

Found a bug or need a field added? Open an issue in the **Issues** tab — feedback is very welcome. Need something custom, such as providers' full portfolios, delivery to your own database, or alerts to Slack or email? Email alkausarimujahid@gmail.com or visit my website [ayzalsoft.com](https://ayzalsoft.com).

<sub>Built by **Alkausari M**. This Actor is independent and not affiliated with, endorsed by, or sponsored by the Care Quality Commission. CQC data is used under the Open Government Licence v3.0. Use the data responsibly and in accordance with applicable law, including UK GDPR for the names of registered managers and nominated individuals.</sub>

# Actor input Schema

## `serviceTypes` (type: `array`):

Only these kinds of service. Leave empty for all.

## `areas` (type: `array`):

Only services in these places: a town (Bristol), a local authority (Leeds), a region (South West), a postcode district (BS1), a postcode area (BS) or a full postcode. Leave empty for all of England.

## `ratings` (type: `array`):

Only services with these overall ratings, from CQC's latest ratings file. Services CQC doesn't rate (such as dentists) count as "Not rated".

## `nameContains` (type: `string`):

Only services whose name or provider name contains this, for example a care group like "Barchester".

## `services` (type: `array`):

CQC location IDs (1-10557588274) or cqc.org.uk location links. When set, the filters above are ignored.

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

Stop after this many services, most recently inspected first. 0 = every matching service.

## `detail` (type: `string`):

Every row has the service's details, current ratings and who runs it. Add the latest inspection's summary, or the full report text.

## `includeHistory` (type: `boolean`):

Add every past inspection or assessment: date, type, summary and report link.

## `onlyChanges` (type: `boolean`):

For scheduled runs: return a service only when it has a new report or its ratings changed. The first run returns every service as a starting point.

## `memoryName` (type: `string`):

Monitoring remembers each service in a key-value store of this name in your account. Leave empty for one per saved task. Use a new name to start over.

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

How many CQC pages to read at the same time. CQC's pages can be slow; more parallel requests make big runs faster.

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

Not needed for CQC's public pages. Use it only if your runs get blocked.

## Actor input object example

```json
{
  "serviceTypes": [
    "Residential homes",
    "Nursing homes"
  ],
  "areas": [
    "Bristol"
  ],
  "maxResults": 20,
  "detail": "ratings",
  "includeHistory": false,
  "onlyChanges": false,
  "maxConcurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `services` (type: `string`):

No description

## `reports` (type: `string`):

No description

## `changes` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# 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 = {
    "serviceTypes": [
        "Residential homes",
        "Nursing homes"
    ],
    "areas": [
        "Bristol"
    ],
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("alkausari_mujahid/care-quality-commission-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 = {
    "serviceTypes": [
        "Residential homes",
        "Nursing homes",
    ],
    "areas": ["Bristol"],
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("alkausari_mujahid/care-quality-commission-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 '{
  "serviceTypes": [
    "Residential homes",
    "Nursing homes"
  ],
  "areas": [
    "Bristol"
  ],
  "maxResults": 20
}' |
apify call alkausari_mujahid/care-quality-commission-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alkausari_mujahid/care-quality-commission-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/62YT7sPjWxbFK63uT/builds/7W7oADy7ajm9uE4yZ/openapi.json
