# Ofsted Inspections (`spookyweb/uk-ofsted-inspections`) Actor

Ofsted inspection ratings and reports for every school, nursery, childminder and children's social care provider in England. Search by name, URN, postcode radius, local authority, region, provider type or rating and get the graded judgements, the inspection history and the report PDF links.

- **URL**: https://apify.com/spookyweb/uk-ofsted-inspections.md
- **Developed by:** [丂卩ㄖㄖҜㄚ](https://apify.com/spookyweb) (community)
- **Categories:** Education, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 providers

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

## UK Ofsted Inspections

Ofsted inspection ratings, graded judgements and report links for every school, nursery, childminder and children's social care provider in England, taken straight from the official register at [reports.ofsted.gov.uk](https://reports.ofsted.gov.uk).

### 🔍 What does UK Ofsted Inspections do?

**UK Ofsted Inspections** searches Ofsted's own public register and returns one clean row per provider, with the **latest rating or graded judgements**, the **full inspection history** and a **direct link to every report PDF**. The quickest way to try it is to put a postcode in the location box and press Start, which returns the schools and nurseries within three miles of that point.

It covers the whole of England in one place: primary and secondary schools, sixth forms and colleges, independent and boarding schools, nurseries and pre-schools, childminders, children's homes, fostering and adoption agencies and local authority children's services. No account, no API key and no login of any kind is needed, because everything it reads is a page Ofsted already publishes to the open web.

### 📊 What data can I extract?

Every row is one provider. Turn off **Read each provider page** for a fast listing of the first eleven fields only.

| Field | Type | What it is |
|---|---|---|
| `urn` | string | Unique reference number, the id Ofsted and the Department for Education both use |
| `providerName` | string | Name as the register prints it, null where Ofsted withholds it |
| `providerType` | string | Primary, Secondary, Independent School, Nursery, Childminder, Children's Home and so on |
| `providerTypeId` | string | Numeric type Ofsted uses in its own provider URL |
| `isRedacted` | boolean | True where Ofsted has withheld the name and the address |
| `isIndividualProvider` | boolean | True for childminders, home childcarers and nannies, which are sole traders |
| `address` | string | Single line address as published |
| `postcode` | string | Postcode pulled out of that address and normalised |
| `localAuthority` | string | English local authority the provider sits in |
| `region` | string | One of the nine English government office regions |
| `latestOverallRating` | string | Outstanding, Good, Requires Improvement or Inadequate, where one was given |
| `latestInspectionDate` | string | Date of the most recent inspection, YYYY-MM-DD |
| `latestReportDate` | string | Date that report was published, YYYY-MM-DD |
| `latestReportUrl` | string | Direct link to the most recent report PDF |
| `judgements` | array | Graded judgement areas from the latest inspection, each with `area` and `grade` |
| `reports` | array | Every published report, newest first, each with `inspectionType`, `inspectionDate`, `publishedDate`, `rating` and `reportUrl` |
| `inspectionCount` | number | How many published reports the register lists |
| `hasPublishedReport` | boolean | False for a provider registered but not yet inspected |
| `latitude` | number | Latitude Ofsted publishes for the provider |
| `longitude` | number | Longitude Ofsted publishes for the provider |
| `telephone` | string | Contact number for general enquiries |
| `website` | string | Provider website |
| `religiousCharacter` | string | Church of England, Roman Catholic and similar, where the provider has one |
| `hasBoarders` | boolean | True where the page records boarding provision |
| `ageRange` | string | Age range as printed, for example 4 - 11 |
| `minimumAge` | number | Lowest age in that range |
| `maximumAge` | number | Highest age in that range |
| `gender` | string | Mixed, Boys or Girls |
| `pupilsOnRoll` | number | Pupils on roll as published |
| `schoolCapacity` | number | Published capacity, so you can see how full a school is |
| `noticeText` | string | Any standing notice on the page, for example that another body now inspects the school |
| `ofstedUrl` | string | The provider page this row came from |
| `giasUrl` | string | The same establishment on Get Information About Schools |
| `performanceTablesUrl` | string | The school on Compare School Performance, for attainment data |
| `parentViewUrl` | string | Parent View survey results for the school |
| `retrievedAt` | string | When the row was read, as an ISO timestamp |

### 💡 Why scrape Ofsted inspection reports?

**Property listings.** Ofsted ratings are one of the strongest drivers of asking price in England, and `latitude`, `longitude` and `postcode` on every row make a school layer for a listing page or a catchment map a join rather than a project.

**Catchment and location research.** Pull every primary and secondary within ten miles of a postcode with `pupilsOnRoll`, `schoolCapacity` and `ageRange`, and you have oversubscription pressure for the area, not just a rating.

**Education market data.** `localAuthority`, `schoolCategory` and `providerType` together answer questions like how many academies in Leeds were graded below Good, or how the independent sector in London compares with the maintained sector.

**Recruitment targeting.** A school inspected recently, or graded below Good, is a school with a live staffing brief. `latestInspectionDate` and `latestOverallRating` sort the list, and `telephone` and `website` reach it.

**Childcare directories.** Every nursery, pre-school and registered childminder in a radius, with the registers they are on and the date they were last inspected.

**Watching for new reports.** Set `reportPublishedFrom` to the last run date and sort by latest report first, and the Actor returns only what Ofsted has published since.

### 🚀 How do I use UK Ofsted Inspections?

1. Click **Try for free** and sign in to Apify, which takes about half a minute.
2. Type a postcode, an outward code or a town into **Postcode, outward code or town**, or type a school name or a URN into **Name, URN or keyword**.
3. Optionally pick a **Provider type**, an **Overall rating**, one or more **Local authorities** or **Regions**.
4. Set **Maximum providers** to the number of records you want, which is also the cost cap for the run.
5. Click **Start**, then take the results from the **Overview** table, or export them as JSON, CSV or Excel.
6. To run it every week, open the **Schedules** tab and pick a time. Set **Report published from** to keep each run to new publications only.

### ⬇️ Input

Everything is optional. With no input at all the Actor searches the whole open register alphabetically, which is why you usually want at least a location, a local authority or a keyword.

| Field | Type | Default | What it does |
|---|---|---|---|
| `query` | string | empty | Name, URN or keyword |
| `location` | string | empty | Postcode, outward code or town to search around |
| `radiusMiles` | integer | `3` | Miles around that point, 1 to 25 |
| `providerType` | string | any | Primary, secondary, childminder, children's home and eighteen more |
| `schoolCategory` | string | any | Maintained, academy, independent, special, boarding, MOD or online, for schools |
| `rating` | string | any | Outstanding, Good, Requires Improvement, Inadequate, or the two combined bands |
| `localAuthority` | array | empty | One or more of the 153 English local authorities |
| `region` | array | empty | One or more of the nine English regions |
| `status` | string | `open` | Open, closed, proposed to open, or any |
| `reportPublishedFrom` | string | empty | Only reports published on or after this date, YYYY-MM-DD |
| `reportPublishedTo` | string | empty | Only reports published on or before this date, YYYY-MM-DD |
| `sortBy` | string | `name-a-z` | Name, latest report first, or best keyword match |
| `includeDetails` | boolean | `true` | Read each provider page for the history, judgements and report links |
| `excludeIndividualProviders` | boolean | `false` | Drop childminders, home childcarers and nannies |
| `maxResults` | integer | `50` | Hard cap on saved records, and the cost cap for the run |
| `detailConcurrency` | integer | `2` | Provider pages read in parallel |

```json
{
  "location": "LS1 1UR",
  "radiusMiles": 5,
  "providerType": "primary",
  "schoolCategory": "academy",
  "rating": "outstanding-or-good",
  "includeDetails": true,
  "maxResults": 100
}
```

### ⬆️ Output

#### Table view

| Provider | URN | Type | Rating | Inspected | Postcode | Pupils | Report |
|---|---|---|---|---|---|---|---|
| Abberley Parochial VC Primary School | 116780 | Primary | | 2025-03-18 | WR6 6AA | 102 | [PDF](https://files.ofsted.gov.uk/v1/file/50276206) |
| Abbey Green Nursery School | 107188 | Nursery | Outstanding | 2023-12-13 | BD8 8HT | | [PDF](https://files.ofsted.gov.uk/v1/file/50240621) |

#### JSON

```json
{
  "urn": "116780",
  "providerName": "Abberley Parochial VC Primary School",
  "providerType": "Primary",
  "providerTypeId": "21",
  "isRedacted": false,
  "isIndividualProvider": false,
  "address": "Apostles Oak, Abberley, Worcestershire, WR6 6AA",
  "postcode": "WR6 6AA",
  "localAuthority": "Worcestershire",
  "region": "West Midlands",
  "latitude": 52.3064496749,
  "longitude": -2.3738043235,
  "telephone": "01299896332",
  "website": "http://www.abberley.worcs.sch.uk/",
  "religiousCharacter": "Church of England",
  "hasBoarders": false,
  "ageRange": "4 - 11",
  "minimumAge": 4,
  "maximumAge": 11,
  "gender": "Mixed",
  "pupilsOnRoll": 102,
  "schoolCapacity": 105,
  "latestOverallRating": null,
  "latestInspectionDate": "2025-03-18",
  "latestReportDate": "2025-05-06",
  "latestReportUrl": "https://files.ofsted.gov.uk/v1/file/50276206",
  "judgements": [
    { "area": "Quality of education", "grade": "Good" },
    { "area": "Behaviour and attitudes", "grade": "Good" },
    { "area": "Personal development", "grade": "Good" },
    { "area": "Leadership and management", "grade": "Good" },
    { "area": "Early years provision", "grade": "Good" }
  ],
  "reports": [
    {
      "inspectionType": "School inspection",
      "inspectionDate": "2025-03-18",
      "publishedDate": "2025-05-06",
      "rating": null,
      "reportUrl": "https://files.ofsted.gov.uk/v1/file/50276206"
    },
    {
      "inspectionType": "Full inspection",
      "inspectionDate": "2014-02-26",
      "publishedDate": "2014-03-18",
      "rating": "Good",
      "reportUrl": "https://files.ofsted.gov.uk/v1/file/2347589"
    }
  ],
  "inspectionCount": 8,
  "hasPublishedReport": true,
  "noticeText": null,
  "ofstedUrl": "https://reports.ofsted.gov.uk/provider/21/116780",
  "giasUrl": "https://www.get-information-schools.service.gov.uk/Establishments/Establishment/Details/116780",
  "performanceTablesUrl": "https://www.compare-school-performance.service.gov.uk/school/116780",
  "parentViewUrl": "https://parentview.ofsted.gov.uk/parent-view-results/urn/116780",
  "retrievedAt": "2026-08-16T11:20:31.000Z"
}
```

### Ratings changed in September 2024, and both shapes are in the register

Ofsted stopped giving state funded schools a single overall effectiveness grade for inspections from September 2024. Those inspections publish graded areas instead, and from November 2025 they appear as report cards.

That is why `latestOverallRating` is null on a school inspected recently while `judgements` is full, and why the same field carries Outstanding or Inadequate on a nursery, an independent school or an older inspection. Both shapes are real and both are in the register today. Read `judgements` first and fall back to `latestOverallRating`, or read `reports` for the grade each individual inspection gave.

The **Overall rating** filter is Ofsted's own filter, so it only reaches inspections that were given an overall grade. A search for Good will not return a school whose most recent inspection published areas rather than a grade.

### What Ofsted withholds, and what this Actor does about it

This is a statutory public register of inspected institutions, not a directory of people. Ofsted decides what appears on it and this Actor adds nothing to that.

Two things follow, and both are visible in the output. Ofsted **withholds the name and the address** of most childminders, of every children's home and of some other providers. Those rows arrive with `isRedacted` set to true, `providerName` and `address` null, and no coordinates, and the Actor never tries to fill those gaps from anywhere else.

Where Ofsted **does publish** a childminder, the registered name is a person's name and the registered address is usually their home, because a childminder is a sole trader. The Actor returns exactly what the register prints, no more, and marks the row with `isIndividualProvider` so it is obvious. Set **Exclude childminders and other sole traders** to drop them entirely, which is the right setting for anyone building a schools product.

### Primary and secondary are registration phases, not the printed category

`providerType` uses Ofsted's own filters, and its primary and secondary options are the phase a provider is registered under rather than the category that appears in `providerType` on the row. Two things follow, and both were measured against the live register.

A secondary search can return rows labelled Independent School, Special School or 16-19 academy, because those providers are registered for secondary age pupils. And a provider registered across both phases, such as a special school taking ages 11 to 19, appears under a primary search and under a secondary search. Checked one URN at a time: a maintained primary at ages 4 to 11 appears under primary only, a secondary academy at ages 11 to 18 under secondary only, and an all through special school under both.

If you need a strict phase split, filter on `minimumAge` and `maximumAge` after the run, which are the ages Ofsted publishes on the provider page.

### How the search is paged

The register is read through the same search URL the site itself uses, 100 results at a time, and paging steps by the number of results actually returned rather than the number requested. Ofsted publishes a JSON feed behind the results map, but it stops at 100 records and ignores the paging parameters completely, so it cannot be used to walk a real result set.

Requests go out one search page at a time and two provider pages at a time, with a pause between each, and the Actor backs off and slows the whole crawl down if the register ever answers with a rate limit or a server error.

### 💰 How much does it cost?

You pay per provider record saved, so a run that saves 100 providers is 100 billable records. Nothing else is charged: opening the provider page for the inspection history and the report links costs you no extra.

Set `maxResults` to cap what a run can cost. Use `providerType`, `rating`, `localAuthority` and `excludeIndividualProviders` to avoid paying for rows you were going to throw away, because a filtered row is never saved and never billed. A search that matches nobody saves nothing and costs nothing. Paid Apify plans get a lower rate per record.

### 🔌 Integrations

Connect **UK Ofsted Inspections** to the rest of your stack with [Apify integrations](https://docs.apify.com/platform/integrations). Push new rows into Google Sheets, Airtable, Slack, Zapier or Make, or fire a [webhook](https://docs.apify.com/platform/integrations/webhooks) when a run finishes so a school changing grade lands in your own system the moment the report is published.

[Schedule](https://docs.apify.com/platform/schedules) a weekly run with `reportPublishedFrom` set to the previous week and you have a feed of new Ofsted publications for your area with nothing to maintain.

### 🔗 Using UK Ofsted Inspections with the Apify API

Start a run and wait for the results in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/spookyweb~uk-ofsted-inspections/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "location": "LS1 1UR",
    "radiusMiles": 5,
    "providerType": "primary",
    "maxResults": 100
  }'
```

Or start it asynchronously and read the dataset afterwards:

```bash
curl -X POST "https://api.apify.com/v2/acts/spookyweb~uk-ofsted-inspections/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "localAuthority": ["Leeds"], "providerType": "secondary", "maxResults": 500 }'

curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=csv"
```

The Actor also works through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), so an AI agent can call it directly and chain the output into whatever comes next.

### ❓ FAQ

#### Does it cover Scotland, Wales or Northern Ireland?

No. Ofsted inspects England only. Scotland is inspected by Education Scotland, Wales by Estyn and Northern Ireland by the Education and Training Inspectorate, and none of those are in this register.

#### Why is the rating empty on a school that was clearly inspected?

Because state funded schools inspected from September 2024 no longer receive a single overall effectiveness grade. Read the `judgements` array for that school, which carries the graded area for quality of education, behaviour and attitudes, personal development and leadership and management.

#### How do I search by URN?

Put the URN in **Name, URN or keyword** on its own, for example 116780. The register matches it and returns that one provider.

#### Can I pull a whole council area in one run?

Yes. Pick one or more entries in **Local authorities** and leave the keyword and location empty. Raise `maxResults` to cover the council, since a large authority has thousands of providers once childminders and nurseries are counted.

#### How current is the data?

It is read live from reports.ofsted.gov.uk on every run, so it is whatever the register says at that moment. Note that a report appears weeks after the inspection itself, which is why `latestInspectionDate` and `latestReportDate` are separate fields.

#### Do I need an Ofsted account or an API key?

No. The register is open to the public and this Actor reads it exactly as a visitor does. There is no login, no key, no email registration and no identity check anywhere in the run.

#### Does it download the report PDFs?

It returns the direct link to every report on `files.ofsted.gov.uk` rather than the file itself, so nothing large is stored and you can fetch only the reports you actually want.

#### What happens when nothing matches?

The run finishes successfully with zero rows and a log line telling you what to widen. An empty register search is a valid answer, not a failure, and it costs nothing.

### ⚖️ Is it legal to scrape Ofsted inspection reports?

Ofsted publishes this register so that parents, carers and the public can look up any provider it inspects, and the site sets no restriction in its `robots.txt` on the search or the provider pages. The content is Crown copyright and available under the [Open Government Licence](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/), which allows copying, publishing and adapting it with an acknowledgement of the source.

The register is about **institutions Ofsted inspects**, and the one place that overlaps with personal data is childminders and other sole traders, whose registered name is a person's name. Ofsted itself decides which of those to publish and withholds the rest. This Actor returns what the register publishes and nothing more, marks a withheld record with `isRedacted`, marks a sole trader with `isIndividualProvider`, and gives you one switch to exclude them entirely. It never combines the register with another source to reconstruct anything Ofsted chose to leave out.

You are still responsible for what you do with the data once you have it, so if you republish it, keep the acknowledgement and keep it current, because a rating that has since changed is worse than no rating at all. This is general information about a public register and not legal advice.

### 👍 Your feedback

Found something wrong, or need a field the register carries that this Actor does not return yet? Open an issue on the **Issues** tab and it gets looked at. Custom versions of this Actor, and scrapers for other UK public registers, can be built on request.

### 🔎 You might also like

| Actor | What it does |
|---|---|
| [UK Food Hygiene Ratings](https://apify.com/spookyweb/uk-food-hygiene-ratings) | Official FSA hygiene ratings for every UK food business, by council, postcode or rating |
| [UK Land Registry Sold Prices](https://apify.com/spookyweb/uk-land-registry-sold-prices) | Every recorded sale price in England and Wales, by postcode, street or date |
| [UK Planning Applications](https://apify.com/spookyweb/uk-planning-applications) | Planning applications from every UK council, tagged by the type of work proposed |

# Actor input Schema

## `query` (type: `string`):

Free text matched against the provider name and the URN. A URN on its own returns that one provider, for example 116780. Leave it empty to search only by the filters below.

## `location` (type: `string`):

Search around a point, for example BS1 4DJ, BS1 or Bristol. This is turned into a latitude and longitude before it is sent, because Ofsted accepts a place name in its own location box and then ignores it.

## `radiusMiles` (type: `integer`):

How far around the location to search, in miles. Ofsted defaults its own form to 3 miles and offers up to 10, but the register accepts a wider radius, so anything up to 25 works. Ignored when no location is given.

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

Restrict the search to one kind of provider. Primary and secondary are the phases Ofsted registers a school under, not the category it prints on the card, so a secondary search can return a special school or an independent school of secondary age, and a provider registered across both phases appears under both.

## `schoolCategory` (type: `string`):

Narrow a primary or secondary search to how the school is run, for example academies only or maintained schools only. It is ignored, with a warning in the log, for any other provider type because Ofsted numbers these ids per parent category.

## `rating` (type: `string`):

Only return providers whose latest published overall grade is this. State funded schools inspected from September 2024 no longer receive an overall grade, so a rating filter will not reach those inspections.

## `localAuthority` (type: `array`):

Restrict the search to one or more of the 153 English local authorities. This is the cleanest way to pull a whole council area in one run, for example every primary school in Leeds.

## `region` (type: `array`):

Restrict the search to one or more of the nine English regions. Useful when a council list would be long, for example every inadequate independent school in London.

## `status` (type: `string`):

Open providers are the default. Closed keeps providers Ofsted has recorded as closed, which is how a school that changed name or converted to an academy is traced back.

## `reportPublishedFrom` (type: `string`):

Only return providers whose latest report was published on or after this date, written as YYYY-MM-DD. Pair it with the sort order to watch a council area for newly published inspections.

## `reportPublishedTo` (type: `string`):

Only return providers whose latest report was published on or before this date, written as YYYY-MM-DD. Use it with the field above to take one month of publications at a time.

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

How Ofsted should order the register before it is paged. Latest report first is the order to use when you only want what has changed since the last run.

## `includeDetails` (type: `boolean`):

Open every matching provider page for the graded judgements, the full inspection history, the report PDF links, pupil numbers, age range and contact details. Turn it off for a fast name, address and latest rating listing.

## `excludeIndividualProviders` (type: `boolean`):

Drop childminders, home childcarers and nannies from the results. Ofsted publishes these on a statutory register and most of them are sole traders whose registered name is a person’s name, so turn this on when you only want institutions.

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

Hard cap on how many provider records the run saves. Each saved provider is one billable record, so this is the cost cap for the run as well as the size cap.

## `detailConcurrency` (type: `integer`):

How many provider pages to read in parallel. Kept low on purpose so the register is not hammered. Raise it only if a large run is genuinely too slow.

## Actor input object example

```json
{
  "location": "BS1 4DJ",
  "radiusMiles": 3,
  "providerType": "",
  "schoolCategory": "",
  "rating": "",
  "localAuthority": [],
  "region": [],
  "status": "open",
  "sortBy": "name-a-z",
  "includeDetails": true,
  "excludeIndividualProviders": false,
  "maxResults": 20,
  "detailConcurrency": 2
}
```

# Actor output Schema

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

One row per provider: the URN, the latest rating or graded judgements, the inspection history and the report links.

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

Counts for the run and the reason it stopped.

# 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 = {
    "location": "BS1 4DJ",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("spookyweb/uk-ofsted-inspections").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 = {
    "location": "BS1 4DJ",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("spookyweb/uk-ofsted-inspections").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 '{
  "location": "BS1 4DJ",
  "maxResults": 20
}' |
apify call spookyweb/uk-ofsted-inspections --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,spookyweb/uk-ofsted-inspections"
        }
    }
}

```

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/EergyfKeZ0S4tFFOa/builds/DKQYoq5wbOy5dsa4A/openapi.json
