# CQC Care Register Scraper (`danielainsworth/cqc-register`) Actor

Search 100,000+ CQC-regulated care locations in England. Filter by area, rating, service type. Official open data, updated monthly.

- **URL**: https://apify.com/danielainsworth/cqc-register.md
- **Developed by:** [Daniel Ainsworth](https://apify.com/danielainsworth) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 record scrapeds

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Search the CQC Care Register — UK Care Provider Data

Search and filter the full Care Quality Commission (CQC) register of regulated care providers in England. Find care homes, GP surgeries, dental practices, home care agencies and hospitals by location, rating, service type or provider name — all in one structured API call.

Data comes directly from the CQC's official open-data publication, updated monthly, under the Open Government Licence v3.0.

---

### What you get

Each result is a CQC-registered location with:

- **Identity**: CQC Location ID, name, registration date
- **Rating**: Latest overall CQC rating (Outstanding / Good / Requires improvement / Inadequate), publication date
- **Service classification**: Primary inspection category, service types (e.g. "Care home service with nursing"), service user bands (e.g. "Dementia", "Older People")
- **Location**: Full address, postcode, local authority, region, latitude/longitude
- **Contact**: Phone number, website
- **Provider details**: Provider name, ownership type, Companies House number, charity number, nominated individual
- **Brand chain**: Brand ID and name (identifies Bupa, HC-One, Anchor and other multi-site operators)
- **CQC profile link**: Direct URL to the location's CQC page

---

### Two operating modes

#### `searchLocations` (default)

Filter the full register using any combination of:

| Parameter | Description |
|---|---|
| `nameQuery` | Partial location name match (case-insensitive) |
| `localAuthority` | Local authority name (partial match) — e.g. `Manchester`, `Leeds` |
| `region` | CQC region (partial match) — e.g. `North West`, `London` |
| `postcode` | Postcode prefix — e.g. `M1`, `LS1`, `SW1A` |
| `overallRating` | Exact match: `Outstanding`, `Good`, `Requires improvement`, `Inadequate` |
| `primaryCategory` | Inspection category partial match — e.g. `nursing`, `dental`, `GP` |
| `careHomeOnly` | `true` to return only care home locations |
| `maxResults` | Cap on results (default: 1000; use `0` for all matching) |

All filters are optional and combinable. Omitting all filters returns all 56,000+ active locations up to your `maxResults` limit.

#### `lookupProviders`

Fetch all locations registered to one or more CQC Provider IDs:

| Parameter | Description |
|---|---|
| `providerIds` | Array of CQC Provider IDs (e.g. `["1-102642895"]`) |
| `maxResults` | Cap on results; use `0` for unlimited |

Use this mode to pull a complete location portfolio for a specific operator — for competitive analysis, acquisition targeting, or tracking a group's CQC performance across all their sites.

---

### Output example

```json
{
  "locationId": "1-10758997851",
  "locationName": "Lightbowne Hall",
  "careHome": true,
  "careHomeBeds": 52,
  "typeSector": "Social Care Org",
  "primaryInspectionCategory": "Residential social care",
  "overallRating": "Good",
  "ratingPublicationDate": "2023-04-12",
  "registrationDate": "2021-05-05",
  "street": "262 Lightbowne Road",
  "city": "Manchester",
  "county": "Greater Manchester",
  "postcode": "M40 5HQ",
  "localAuthority": "Manchester",
  "region": "North West",
  "latitude": 53.511193,
  "longitude": -2.188509,
  "phone": "01616833170",
  "website": null,
  "serviceTypes": ["Care home service without nursing"],
  "serviceUserBands": ["Dementia", "Older People", "Younger Adults"],
  "brandId": "BD223",
  "brandName": "BRAND Anchor",
  "providerId": "1-102642895",
  "providerName": "Anchor Hanover Group",
  "providerOwnershipType": "Organisation",
  "providerCompaniesHouseNumber": "RS007843",
  "providerCharityNumber": null,
  "nominatedIndividual": "Ryan, Daniel",
  "cqcUrl": "https://www.cqc.org.uk/location/1-10758997851",
  "scrapedAt": "2026-05-28T10:26:00.218Z"
}
````

***

### Pricing

| Event | Price | Notes |
|---|---|---|
| Actor start | **$1.00** | Covers ODS file download (~23 MB) and parse |
| Per location | **$0.05** | Per record written to the dataset |

Most searches return a few hundred to a few thousand results. A typical filtered search (e.g. care homes in one region) costs $1–$5 total.

***

### B2B use cases

**Care sector SaaS products**\
Build competitor intelligence or market sizing features into your care management platform. Find all care homes in a postcode area, their bed counts, ratings and operator names — structured and ready to import.

**M\&A and acquisition research**\
Use `lookupProviders` mode to pull every location owned by a specific provider group. Instantly see their full portfolio, ratings spread, and geographic footprint — data that takes hours to gather manually from the CQC website.

**Compliance and due diligence**\
Insurers, lenders and commissioners verify CQC registration and rating before engaging a care provider. This actor gives you a structured API alternative to manual CQC website searches.

**Care home procurement and referrals**\
Discharge coordinators, social workers and NHS commissioners matching patients to appropriate care settings need to search providers by location, service type and bed availability. Filter by postcode + service user band + rating in a single call.

**Sales intelligence for care sector suppliers**\
If you sell into care homes (staffing, laundry, food, technology), this actor builds your prospect list filtered by location, size and rating band. 52k+ sites with phone numbers, postcodes and operator names.

***

### Data source and freshness

This actor uses the CQC's official **HSCA Active Locations** open-data file, published monthly at [cqc.org.uk/about-us/transparency/using-cqc-data](https://www.cqc.org.uk/about-us/transparency/using-cqc-data) under the Open Government Licence v3.0.

The file is discovered dynamically on each run — you always get the latest published version without needing to update the actor. The dataset covers approximately 56,000 active regulated locations.

Attribution: Contains public sector information licensed under the Open Government Licence v3.0.

***

### See also

**[FCA Register Scraper](https://apify.com/danielainsworth/fca-register)** — Extract UK FCA-regulated firm profiles: authorisation status, permissions, addresses, and approved individuals. Free API key, no proxy needed.

**[Ofsted School Register Scraper](https://apify.com/danielainsworth/ofsted-register)** — Search 22,000+ UK state-funded schools with Ofsted inspection grades. Filter by local authority, region, or postcode.

# Actor input Schema

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

searchLocations: filter all 100k+ CQC-registered care locations by name, area, rating or type. lookupProviders: fetch all locations for specific CQC Provider IDs.

## `nameQuery` (type: `string`):

Partial name match (case-insensitive). Leave blank to match all locations. Only applies to searchLocations mode.

## `localAuthority` (type: `string`):

Filter by local authority name (case-insensitive, partial match). Examples: Manchester, Leeds, Birmingham, Cornwall. Only applies to searchLocations mode.

## `region` (type: `string`):

Filter by CQC region (case-insensitive, partial match). Examples: North West, London, South East, East Midlands. Only applies to searchLocations mode.

## `postcode` (type: `string`):

Filter by postcode prefix (e.g. 'M1' matches M1 2AB, M14 5HZ etc). Case-insensitive, spaces ignored. Only applies to searchLocations mode.

## `overallRating` (type: `string`):

Filter by latest CQC overall rating. Exact match. Leave blank to include all ratings (including unrated). Only applies to searchLocations mode.

## `primaryCategory` (type: `string`):

Filter by primary inspection category (case-insensitive, partial match). Examples: 'nursing', 'residential', 'dental', 'GP'. Only applies to searchLocations mode.

## `careHomeOnly` (type: `boolean`):

If true, return only care home locations (excludes GPs, dentists, home care agencies, hospitals). Only applies to searchLocations mode.

## `providerIds` (type: `array`):

List of CQC Provider IDs to look up (e.g. 1-101648526). Returns all active locations registered to each provider. Required for lookupProviders mode.

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

Maximum number of locations to return. Use 0 for unlimited (returns all matching records — can be tens of thousands). Only applies to searchLocations mode.

## Actor input object example

```json
{
  "mode": "searchLocations",
  "nameQuery": "Sunrise",
  "localAuthority": "Manchester",
  "region": "North West",
  "postcode": "M1",
  "overallRating": "",
  "primaryCategory": "nursing",
  "careHomeOnly": false,
  "providerIds": [
    "1-101648526",
    "1-102598178"
  ],
  "maxResults": 1000
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("danielainsworth/cqc-register").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("danielainsworth/cqc-register").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call danielainsworth/cqc-register --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=danielainsworth/cqc-register",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CQC Care Register Scraper",
        "description": "Search 100,000+ CQC-regulated care locations in England. Filter by area, rating, service type. Official open data, updated monthly.",
        "version": "0.1",
        "x-build-id": "bvSseLfyuhzf8GtIl"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/danielainsworth~cqc-register/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-danielainsworth-cqc-register",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/danielainsworth~cqc-register/runs": {
            "post": {
                "operationId": "runs-sync-danielainsworth-cqc-register",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/danielainsworth~cqc-register/run-sync": {
            "post": {
                "operationId": "run-sync-danielainsworth-cqc-register",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Scraping mode",
                        "enum": [
                            "searchLocations",
                            "lookupProviders"
                        ],
                        "type": "string",
                        "description": "searchLocations: filter all 100k+ CQC-registered care locations by name, area, rating or type. lookupProviders: fetch all locations for specific CQC Provider IDs.",
                        "default": "searchLocations"
                    },
                    "nameQuery": {
                        "title": "Location name search",
                        "type": "string",
                        "description": "Partial name match (case-insensitive). Leave blank to match all locations. Only applies to searchLocations mode."
                    },
                    "localAuthority": {
                        "title": "Local authority",
                        "type": "string",
                        "description": "Filter by local authority name (case-insensitive, partial match). Examples: Manchester, Leeds, Birmingham, Cornwall. Only applies to searchLocations mode."
                    },
                    "region": {
                        "title": "Region",
                        "type": "string",
                        "description": "Filter by CQC region (case-insensitive, partial match). Examples: North West, London, South East, East Midlands. Only applies to searchLocations mode."
                    },
                    "postcode": {
                        "title": "Postcode prefix",
                        "type": "string",
                        "description": "Filter by postcode prefix (e.g. 'M1' matches M1 2AB, M14 5HZ etc). Case-insensitive, spaces ignored. Only applies to searchLocations mode."
                    },
                    "overallRating": {
                        "title": "Overall CQC rating",
                        "enum": [
                            "",
                            "Outstanding",
                            "Good",
                            "Requires improvement",
                            "Inadequate"
                        ],
                        "type": "string",
                        "description": "Filter by latest CQC overall rating. Exact match. Leave blank to include all ratings (including unrated). Only applies to searchLocations mode.",
                        "default": ""
                    },
                    "primaryCategory": {
                        "title": "Inspection category",
                        "type": "string",
                        "description": "Filter by primary inspection category (case-insensitive, partial match). Examples: 'nursing', 'residential', 'dental', 'GP'. Only applies to searchLocations mode."
                    },
                    "careHomeOnly": {
                        "title": "Care homes only",
                        "type": "boolean",
                        "description": "If true, return only care home locations (excludes GPs, dentists, home care agencies, hospitals). Only applies to searchLocations mode.",
                        "default": false
                    },
                    "providerIds": {
                        "title": "CQC Provider IDs",
                        "type": "array",
                        "description": "List of CQC Provider IDs to look up (e.g. 1-101648526). Returns all active locations registered to each provider. Required for lookupProviders mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of locations to return. Use 0 for unlimited (returns all matching records — can be tens of thousands). Only applies to searchLocations mode.",
                        "default": 1000
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
