# UK Gazette Insolvency Scraper: Winding Up & Liquidations (`seaf999ield/uk-gazette-insolvency-notices`) Actor

UK Gazette insolvency notices: winding up petitions and orders, administrations and liquidations with company number and postcode. Honest notice: The Gazette currently refuses Apify cloud access (HTTP 403), so runs stop cleanly with no charge. By RawTrader | UK Industry & Bills

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

## Pricing

Pay per event

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 Gazette Insolvency Scraper: Winding Up & Liquidations

**A feed of UK company insolvency notices from The Gazette: winding up petitions and orders, administrations and liquidations (see the availability note below).**

### What it does

This actor is built to read The Gazette's official public notice feed for winding up petitions and orders, administrations and liquidations, adding company numbers and postcodes. Right now The Gazette refuses requests from the Apify cloud (HTTP 403), so runs stop cleanly, output nothing and charge nothing; it does not try to get around the block.

### Who it's for

- Credit controllers checking whether customers or suppliers are in insolvency
- Insolvency practitioners, asset buyers and lawyers looking for new cases
- Journalists and analysts tracking UK business failures by area or sector

### Sample output

| noticeTypeLabel | companyName | companyNumber | publishedDate | postcode |
|---|---|---|---|---|
| Creditors' voluntary liquidation | HIMALAYAN RESTAURANT LTD | 12484472 | 2026-10-20 | GU15 2QN |
| Creditors' voluntary liquidation | HIMALAYAN RESTAURANT LTD | 12484472 | 2026-10-20 | GU15 2QN |
| Creditors' voluntary liquidation | CORNWALL HOTELS LTD | 15119977 | 2026-10-20 | TR10 9EP |

*Real rows from a test run (shortened; the full output has more fields).*

### Price per 1,000 results

Main event: **`notice-row` at $0.003 each**, so **1,000 results = $3.00**. Other events: `new-notice` $0.01 each (only charged when that row type is output). See the Pricing tab for the current prices.

### Input example

```json
{
  "mode": "search",
  "noticeTypes": [
    "winding_up_petitions",
    "winding_up_orders",
    "administrations",
    "liquidations_cvl"
  ],
  "daysBack": 7,
  "maxResults": 30
}
```

**A daily feed of UK company insolvency notices from The Gazette, the official public record.** Covers **winding up petitions**, **winding up orders**, **administrations**, **creditors' voluntary liquidations (CVL)**, members' voluntary liquidations, receiverships and dismissed petitions. Each notice comes with the **company name and number**, the **insolvency practitioner**, the **postcode**, the court case number, the hearing date and the notice URL. Run **new_notices** on a schedule to get only the notices published since your last run. No key, no login.

| Mode | What you get |
|---|---|
| 🔎 **search** | Notices in a date range, filtered by type, keyword, company name and postcode area |
| 🔔 **new_notices** | Only notices not seen in previous runs. Ideal as a daily distress alert feed |

**Free weekly newsletter**, UK Industry & Bills: https://ukindustryandbills.substack.com

### ⚠️ Availability: The Gazette may refuse cloud access

The Gazette (thegazette.co.uk) currently answers **HTTP 403 (access refused)** to requests from the Apify cloud. When that happens the run stops with a clear error, **outputs nothing and charges nothing** for results. This is an access restriction on The Gazette's side. Its [fair use policy](https://www.thegazette.co.uk/fair-use-policy) forbids attempts to bypass access restrictions, so this actor deliberately does **not** use proxies, disguised headers or any other workaround. It uses only The Gazette's official public notice feed (`/all-notices/notice/data.json`, allowed by robots.txt) with a 10 second crawl delay and an identifiable User Agent. If runs keep failing with this message, the data is not currently available to cloud tools. The Gazette's [official data services](https://www.thegazette.co.uk/data) are the supported route for bulk or commercial access.

### What you get

- One row per Gazette insolvency notice: notice type, company name and **company number**, publication date, court case number, hearing date, postcode and notice URL
- Winding up petitions and orders, administrations, CVLs, MVLs, receiverships and dismissed petitions
- Optional full notice text parsing for **insolvency practitioner** names, registered office postcode and hearing date
- A direct Companies House link for every company
- A **new_notices** monitor that returns only notices published since your last run

### Use cases

- **Credit controllers and trade credit insurers:** spot customers facing a winding up petition before an order is made.
- **Insolvency practitioners, turnaround advisers and asset buyers:** a daily list of new administrations and liquidations by region.
- **Lenders, factoring and invoice finance firms:** monitor portfolio and debtor risk.
- **Journalists and analysts:** track insolvencies by sector and area.

### Input

| Field | Example | Notes |
|---|---|---|
| Mode | `search` | or `new_notices` |
| Notice types | `["winding_up_petitions","administrations"]` | Defaults: petitions, orders, administrations, CVLs |
| Days back / From / To | `7` | Publication date |
| Keyword | `construction` | Gazette full text search |
| Company name contains | `["limited"]` | |
| Postcode areas | `["M","LS","EC1V"]` | |
| Fetch full notice text | `false` | Adds IP names, registered office postcode and hearing date (10 s per notice) |
| Look up missing company numbers | `true` | When the feed excerpt has no (or a cut off) company number, reads it from the notice page. 10 s each, max 20 per run by default |
| Max results | `30` | |

#### Example output (real sample)

| noticeTypeLabel | companyName | companyNumber | publishedDate | postcode |
|---|---|---|---|---|
| Creditors' voluntary liquidation | HIMALAYAN RESTAURANT LTD | 12484472 | 2026-10-20 | GU15 2QN |
| Winding-up petition | MY BUILDER GROUP LTD | 13059359 | 2026-10-20 | HA9 6PL |
| Winding-up order | COURIER SOLUTIONS EDINBURGH LIMITED | SC660367 | 2026-10-20 | DD1 4QB |

### Output

```json
{
  "noticeId": "5234170",
  "noticeTypeLabel": "Creditors' voluntary liquidation",
  "companyName": "HIMALAYAN RESTAURANT LTD",
  "companyNumber": "12484472",
  "publishedDate": "2026-10-20",
  "courtCaseNumber": null,
  "hearingDate": null,
  "postcode": "GU15 2QN",
  "insolvencyPractitionerName": "Zain Iqbal",
  "noticeUrl": "https://www.thegazette.co.uk/notice/5234170",
  "companiesHouseUrl": "https://find-and-update.company-information.service.gov.uk/company/12484472"
}
```

### Pricing explained (pay per event)

**In plain words:** **$3 per 1,000 notices** in search mode, and **$10 per 1,000 new notices** in monitor mode. A daily UK wide winding up feed typically costs well under $1 a day.

| Event | Price |
|---|---|
| `notice-row`: each notice in search mode | $0.003 |
| `new-notice`: each new notice in new_notices mode | $0.01 |

### Notes

- **Polite by design:** The Gazette's robots.txt asks for a 10 second crawl delay. We honour it, fetch 100 notices per request, respect any `429 Retry-After`, and send an identifiable User Agent. If The Gazette refuses access (HTTP 403) the run stops; no workaround is attempted.
- **Strike off notices are not included.** The Gazette publishes them only as bulk supplement lists, not as data notices. Use our UK Companies House feed for dissolutions.
- **Personal bankruptcies are off by default** because they are personal data. When enabled, only the name, date and URL are output.
- Petitioners' personal details are never output.

### FAQ

**Where does the data come from?** The Gazette (thegazette.co.uk), the UK's official public record for insolvency notices.

**How quickly do notices appear?** As soon as The Gazette publishes them. Schedule **new_notices** daily to catch petitions before winding up orders are made.

**Can I filter by region?** Yes. Use postcode areas (e.g. `M`, `LS`, `EC1V`), or a keyword search.

**Are personal bankruptcies included?** Not by default. When enabled, only the name, date and URL are output.

**Is it legal to use?** Yes. Gazette notices are public and published under the Open Government Licence v3.0. The actor honours the site's crawl delay and fair use policy, and never works around an access block.

*Contains public sector information from The Gazette, licensed under the Open Government Licence v3.0.*

### Related UK data actors

- [UK Companies House Scraper: New Companies & Insolvency Alerts](https://apify.com/seaf999ield/uk-companies-house-feed)
- [UK Short Interest Scraper: FCA Net Short Positions Tracker](https://apify.com/seaf999ield/uk-fca-short-positions)
- [UK Government Tenders Scraper: Find a Tender & Contracts Finder](https://apify.com/seaf999ield/uk-public-tenders-feed)

### About RawTrader | UK Industry & Bills

RawTrader | UK Industry & Bills is a UK newsletter and open data project tracking energy bills, fuel prices, public tenders, company closures and FCA short positions, using official data from Ofgem, DESNZ, ONS, Companies House, Find a Tender and the FCA.

- [RawTrader Data: every UK data tool in one place](https://imrawtrader.beehiiv.com/p/data)
- [UK Industry & Bills newsletter](https://imrawtrader.beehiiv.com)
- [Follow @ImRawTrader on X](https://x.com/ImRawTrader)

# Actor input Schema

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

new_notices keeps seen notice IDs in a named key-value store per monitor; the first run saves a baseline.

## `noticeTypes` (type: `array`):

Corporate insolvency notice groups (Gazette notice codes in brackets). Strike-off notices are not available: The Gazette publishes them only as bulk supplement lists, not as data notices.

## `includeBankruptcies` (type: `boolean`):

Off by default. Bankruptcy notices concern private individuals; when on, only the name, date and notice URL are output (no address, birth details or excerpt). Use only with a lawful basis under UK GDPR.

## `daysBack` (type: `integer`):

Used when From date is empty.

## `fromDate` (type: `string`):

First publication date.

## `toDate` (type: `string`):

Last publication date (default today).

## `keyword` (type: `string`):

Full-text search done by The Gazette, e.g. 'construction' or a company name.

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

Client-side text match on the company name / notice excerpt.

## `postcodeAreas` (type: `array`):

e.g. 'M', 'LS', 'EC1V'. Postcodes come from the notice location (reverse-geocoded with postcodes.io) or the registered office in the full notice.

## `fetchFullNotice` (type: `boolean`):

Reads each notice page to add the insolvency practitioner name(s), registered office postcode, hearing date and a company number missing from the excerpt. Slow: The Gazette asks for 10 s between requests.

## `maxFullNotices` (type: `integer`):

Cap on full-notice fetches per run (10 s each).

## `fetchMissingCompanyNumbers` (type: `boolean`):

When the feed excerpt has no company number (or it is cut off), read the notice page to get it. Only used when 'Fetch full notice text' is off. Adds 10 s per lookup (The Gazette crawl delay).

## `maxNumberLookups` (type: `integer`):

Cap on notice pages read for missing company numbers per run (10 s each). 0 disables lookups.

## `addPostcodes` (type: `boolean`):

Reverse-geocode the notice's map point with postcodes.io.

## `monitorName` (type: `string`):

new_notices: separate saved state per name.

## `maxPages` (type: `integer`):

100 notices per page, 10 s per page.

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

Maximum notices per run. 0 = no limit.

## Actor input object example

```json
{
  "mode": "search",
  "noticeTypes": [
    "winding_up_petitions",
    "winding_up_orders",
    "administrations",
    "liquidations_cvl"
  ],
  "includeBankruptcies": false,
  "daysBack": 7,
  "fetchFullNotice": false,
  "maxFullNotices": 30,
  "fetchMissingCompanyNumbers": true,
  "maxNumberLookups": 20,
  "addPostcodes": true,
  "monitorName": "default",
  "maxPages": 30,
  "maxResults": 30
}
```

# Actor output Schema

## `notices` (type: `string`):

Insolvency notices.

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

Counts and requests.

# 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 = {
    "mode": "search",
    "noticeTypes": [
        "winding_up_petitions",
        "winding_up_orders",
        "administrations",
        "liquidations_cvl"
    ],
    "daysBack": 7,
    "maxResults": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("seaf999ield/uk-gazette-insolvency-notices").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 = {
    "mode": "search",
    "noticeTypes": [
        "winding_up_petitions",
        "winding_up_orders",
        "administrations",
        "liquidations_cvl",
    ],
    "daysBack": 7,
    "maxResults": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("seaf999ield/uk-gazette-insolvency-notices").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 '{
  "mode": "search",
  "noticeTypes": [
    "winding_up_petitions",
    "winding_up_orders",
    "administrations",
    "liquidations_cvl"
  ],
  "daysBack": 7,
  "maxResults": 30
}' |
apify call seaf999ield/uk-gazette-insolvency-notices --silent --output-dataset

```

## MCP server setup

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

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/wNtlb8axzObagD7ng/builds/FfLa7wpdkw7FDhcRb/openapi.json
