# UK Company Insolvency Notices (The Gazette) (`onibaku/uk-gazette-insolvency`) Actor

Daily alerts for UK company liquidations, administrations and winding-up petitions from The Gazette, with company number, court, case number, insolvency practitioners and address. Filter by notice type, company and location. Built for overnight schedules. Company notices only.

- **URL**: https://apify.com/onibaku/uk-gazette-insolvency.md
- **Developed by:** [Onibaku](https://apify.com/onibaku) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 notices

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

## UK Company Insolvency Notices (The Gazette)

**Built for scheduled overnight runs and daily insolvency alerts.** Every night, get the UK companies that went into
**liquidation** or **administration**, or had a **winding-up petition** or **winding-up order**, as published in The
Gazette, the UK's official public record. Each notice comes as one clean, flat row: company name, **company number**,
notice type, publication date, the date of the resolution, order or petition, **court and case number**, who
presented a petition, the **insolvency practitioners and their firms**, the company's address, postcode and local
authority area, and a link to the official notice.

Filter by notice type, company name, company number or location. Schedule it for 10pm, turn on `onlyNewNotices`,
and you'll have each day's new insolvencies in your inbox, Slack or CRM before the working day starts.

Company notices only. Personal insolvency (bankruptcies, IVAs, debt relief orders) is never fetched.

### What it's for

- **Credit control and trade credit:** hear the morning after a customer goes into liquidation or administration,
  or has a winding-up petition presented against it, so you can stop supply and file your claim with the
  practitioner in time.
- **Supplier and counterparty risk:** watch a list of company numbers and get a row only when one of them appears in
  The Gazette.
- **Insolvency practitioners, lawyers and asset buyers:** a daily feed of new appointments, petitions and orders in
  your region, with the court, case number and appointed practitioners in every row.
- **Debt recovery, lenders and factoring:** spot distress early. A winding-up petition usually comes weeks before the
  order.
- **Journalists and researchers:** local business failures, or every administration in a month, with the official
  notice link for each.
- **AI agents:** one call answers "which companies near Leeds went into liquidation this week?" (see MCP below).

### Why it runs overnight

The Gazette's [fair-use policy](https://www.thegazette.co.uk/fair-use-policy) says automated tools must "carry out
crawling in non-business hours between 9pm and 7am UK" and comply with its robots.txt and "any crawl delay
instructions" (one request every 10 seconds). This actor follows that to the letter:

- **Schedule it.** In Apify Console go to Schedules → Create, set it to run daily at 22:00 with the timezone
  Europe/London (cron `0 22 * * *`), and pick this actor with your input. A run started during the day doesn't
  contact The Gazette, charges for no notices, and finishes straight away with a single row (`message`,
  `nextWindowOpensAt`) saying so.
- **A nightly run is small.** With the default window (today and yesterday) and `onlyNewNotices`, each night only
  fetches the notices you haven't had yet.
- **Long runs stop safely before 7am**, keeping everything they've returned so far.

### Input

| Field | What it does |
| --- | --- |
| `publishedWithinDays` | Notices published in the last N days, counting today (default 2: today and yesterday; up to 31). |
| `publishedFrom`, `publishedTo` | Or a date range (YYYY-MM-DD), up to 31 days per run. |
| `noticeGroups` | `winding-up-petition`, `winding-up-order`, `resolution`, `liquidator-appointment`, `administration`, `receivership`, `final-account`, `meeting-or-decision`, `notice-to-creditors`, `dividend`, `arrangement-or-moratorium`, `other`. Empty for all. |
| `noticeCodes` | The Gazette's 4-digit notice codes, e.g. `2450` (petitions to wind up), `2452` (winding-up orders). |
| `companyNames` | Company name contains any of these words or phrases. |
| `companyNumbers` | Companies House numbers to watch, e.g. `01234567`, `SC123456`. |
| `locations`, `radiusMiles` | Up to 10 postcodes, postcode districts (`LS1`) or towns, and a radius in miles (default 5). |
| `includeDetails` | Read each full notice for the company number, court, case number, practitioners, address and event date (on by default). |
| `includeNoticeText` | Add the notice as plain text, up to 4,000 characters. |
| `onlyNewNotices` | Skip notices this search returned on earlier runs. Pair it with a schedule. |
| `maxResults` | Cap (default 500). |

**Nightly alert: new liquidations, administrations and petitions (schedule it daily at 22:00 UK time):**

```json
{
    "noticeGroups": ["winding-up-petition", "winding-up-order", "resolution", "liquidator-appointment", "administration"],
    "publishedWithinDays": 2,
    "onlyNewNotices": true
}
```

**Watch your customers by company number:**

```json
{
    "companyNumbers": ["01234567", "SC123456", "09876543"],
    "publishedWithinDays": 3,
    "onlyNewNotices": true
}
```

**Every winding-up petition within 10 miles of Manchester in the last week:**

```json
{
    "noticeGroups": ["winding-up-petition"],
    "locations": ["Manchester"],
    "radiusMiles": 10,
    "publishedWithinDays": 7
}
```

Send the results where you want them with an integration: email, Slack, Google Sheets, or a webhook into your CRM.

### Output

One row per notice:

```json
{
    "noticeId": "5230001",
    "noticeCode": "2454",
    "noticeType": "Appointment of Liquidators",
    "noticeGroup": "liquidator-appointment",
    "companyName": "EXAMPLE TRADING LIMITED",
    "companyNumber": "12345678",
    "otherCompanyNames": [],
    "publishedAt": "2026-10-26T11:05:09.000Z",
    "publicationDate": "2026-10-26",
    "eventDate": "2026-10-15",
    "court": "High Court of Justice, Business and Property Courts in Leeds",
    "caseNumber": "000898 of 2026",
    "petitioner": null,
    "practitioners": [
        { "name": "Jane Example", "firm": "Example Recovery LLP", "ipNumber": "12345" },
        { "name": "John Sample", "firm": "Example Recovery LLP", "ipNumber": "23456" }
    ],
    "practitionerNames": ["Jane Example", "John Sample"],
    "practitionerFirms": ["Example Recovery LLP"],
    "address": "Unit 4, Example Park, Leeds, LS1 4AP",
    "postcode": "LS1 4AP",
    "area": "Leeds",
    "latitude": 53.79,
    "longitude": -1.54,
    "summary": "In the High Court of Justice, Business and Property Courts in Leeds No 000898 of 2026 EXAMPLE TRADING LIMITED (Company Number 12345678) ...",
    "noticeText": null,
    "noticeUrl": "https://www.thegazette.co.uk/notice/5230001",
    "source": "Contains public sector information licensed under the Open Government Licence v3.0. Source: The Gazette (thegazette.co.uk)."
}
```

Fields a notice doesn't publish are `null`. With `includeDetails` off, you get the company name, notice type,
dates, location and link only, and a run is much faster (100 notices per request instead of one).

### Pricing

**$0.003 per notice returned**, plus a token $0.00005 per run. 1,000 notices cost about $3. A nightly alert that
finds 30 new notices costs about $2.70 a month. Notices your filters drop cost nothing, and a run started outside
the overnight window charges for no notices.

### Good to know

- **Speed.** The Gazette allows one request every 10 seconds. A feed request lists 100 notices, and reading a full
  notice takes one request, so `includeDetails` returns about 360 notices an hour. Filter by notice type, company or
  location to keep nightly runs short, or turn `includeDetails` off for a quick list.
- **Company notices only.** The actor requests only The Gazette's Corporate Insolvency category, and drops the notice
  types in it that are about individuals (insolvent partnerships, re-use of a prohibited name). Personal insolvency
  notices are personal data, which the Open Government Licence doesn't cover.
- Insolvency practitioners appear in their professional role. Use the data lawfully: UK GDPR and PECR still apply to
  any marketing you do with it.
- `petitioner` is filled in for winding-up petitions when the petitioner is an organisation (HMRC, a supplier, a
  landlord company). A petitioner who is a private individual is left out.
- Insolvency practitioners are the office-holders the notice tags with an IP number. Some notices only name them in
  the text; turn on `includeNoticeText` to see it.
- The Gazette's location search takes full postcodes, so a town or postcode district is first turned into the
  postcode nearest its centre with [postcodes.io](https://postcodes.io/), and the radius is measured from there.
- `companyNumbers` runs a full-text search on The Gazette for each number, then checks the number on each full
  notice.
- `onlyNewNotices` remembers results in a named key-value store in your Apify account (`uk-gazette-insolvency-seen`),
  separately for each set of filters. Delete the store to start afresh.
- Notices The Gazette asks crawlers to leave alone (in its robots.txt) are skipped.
- The Gazette covers England and Wales (London Gazette), Scotland (Edinburgh Gazette) and Northern Ireland (Belfast
  Gazette).

### Use it from Claude, ChatGPT or Cursor (MCP)

AI assistants can call this actor as a tool through Apify's MCP server. Add this server URL to your MCP client and
sign in with your Apify account when prompted:

```
https://mcp.apify.com?tools=onibaku/uk-gazette-insolvency
```

AI agents should run it between 9pm and 7am UK time; at other times it returns nothing.

### Data source

[The Gazette](https://www.thegazette.co.uk/) notice feed and notice pages, fetched under The Gazette's
[fair-use policy](https://www.thegazette.co.uk/fair-use-policy). Contains public sector information licensed under
the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/).
Every row's `noticeUrl` links to the official notice.

This actor isn't affiliated with or endorsed by The Gazette, The National Archives or The Stationery Office (TSO).

Questions or feature requests? Open an issue on the actor's Issues tab or email admin@onibaku.co.uk.

# Actor input Schema

## `publishedWithinDays` (type: `integer`):

Counting today (UK time) as day 1, so 2 means today and yesterday. Ignored when "Published from" is set. Up to 31.

## `publishedFrom` (type: `string`):

A start date (YYYY-MM-DD). Overrides "Published in the last N days". One run covers at most 31 days.

## `publishedTo` (type: `string`):

An end date (YYYY-MM-DD). Leave empty for today.

## `noticeGroups` (type: `array`):

Leave empty for every corporate insolvency notice. Grouped from the Gazette's notice types; each row's noticeType has the exact one.

## `noticeCodes` (type: `array`):

The Gazette's own 4-digit notice codes, e.g. 2450 (petitions to wind up), 2452 (winding-up orders). Only codes starting 24 (Corporate Insolvency) can match.

## `companyNames` (type: `array`):

Words or phrases matched against the company name, case-insensitive, at the start of a word: "construction", "holdings", "Acme Trading".

## `companyNumbers` (type: `array`):

Companies House numbers to watch, e.g. 01234567 or SC123456. Each number is one extra search on the Gazette, so keep the list short (up to about 50).

## `locations` (type: `array`):

Up to 10 UK postcodes, postcode districts or towns, e.g. "LS1 4AP", "LS1", "Bristol". The Gazette matches notices whose address is within the radius below. Towns and districts are measured from the postcode nearest their centre.

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

How far from each place to search, when you give places.

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

Adds the company number, court, case number, insolvency practitioners, address and event date. Each notice is one extra request at the Gazette's pace of one every 10 seconds. Turn off for a fast list with company name, notice type and date only.

## `includeNoticeText` (type: `boolean`):

The full notice as plain text, up to 4,000 characters. Needs "Read each full notice".

## `onlyNewNotices` (type: `boolean`):

Remembers the notices each run of this search returned and skips them next time. Use with a nightly schedule for alerts.

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

Stop after this many notices. With full notices, 360 take about an hour.

## Actor input object example

```json
{
  "publishedWithinDays": 1,
  "radiusMiles": 5,
  "includeDetails": true,
  "includeNoticeText": false,
  "onlyNewNotices": false,
  "maxResults": 3
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (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 = {
    "publishedWithinDays": 1,
    "maxResults": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("onibaku/uk-gazette-insolvency").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 = {
    "publishedWithinDays": 1,
    "maxResults": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("onibaku/uk-gazette-insolvency").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 '{
  "publishedWithinDays": 1,
  "maxResults": 3
}' |
apify call onibaku/uk-gazette-insolvency --silent --output-dataset

```

## MCP server setup

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

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/MWH4iM02M5jIWhZov/builds/6YHJKAy7Gg8NVzHh5/openapi.json
