# AuctionRadar IN – IBBI Liquidation Auction Feed (`leons0016/india-bank-auction-feed`) Actor

Daily feed of IBBI liquidation auction notices in India. Filter by city, asset type and reserve price. Alerts for new and rescheduled auctions. Individual names are always hidden; masking is heuristic. Data from public notices; verify with the original notice. Not affiliated with IBBI.

- **URL**: https://apify.com/leons0016/india-bank-auction-feed.md
- **Developed by:** [Leon s](https://apify.com/leons0016) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 new auction delivereds

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/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

## AuctionRadar IN – IBBI Liquidation Auction Feed

**India's IBBI liquidation auction notices as a daily feed.** AuctionRadar IN reads the public liquidation auction notices published by the Insolvency and Bankruptcy Board of India (IBBI), converts lakh and crore amounts to rupees, normalises dates, removes duplicates and tells you when an auction is new, rescheduled, re-priced, cancelled or corrected. Filter by state, city, pincode prefix, asset type, reserve price, auction date and keywords. Individual names are always hidden.

It is made for real-estate and distressed-asset investors, auction brokers, valuers and consultants, asset reconstruction companies, and prop-tech sites or newsletters that want structured auction data on a schedule.

> **Data from public notices; verify with the original notice.** Not legal or investment advice. Always check every detail with the insolvency professional and the official notice before you bid. AuctionRadar IN is an independent tool and is not affiliated with, endorsed by or sponsored by IBBI, any insolvency professional, any bank or any auction platform. Source: notices published at ibbi.gov.in.

### Why use it

- **One feed instead of many pages.** IBBI publishes a table of liquidation auction notices (504 pages of 20 rows when this was written, 24 October 2026) with a "Details" PDF for each. AuctionRadar reads the table and the PDFs and gives you rows you can filter.
- **Only what is new.** The Actor remembers what it already delivered in your own Apify account. Run it twice on the same data and the second run delivers nothing and charges only the small run fee.
- **Reschedule and price-change alerts.** A new auction date gives `changeType: "rescheduled"`, a new reserve price gives `"price-revised"`, a cancellation notice gives `"cancelled"`, an IBBI addendum gives `"corrigendum"`, each with the `previous` values.
- **Money and dates done for you.** `Rs. 42,88,14,431`, `₹ 1.25 Cr` and `45 Lacs` become rupees; `24.11.2026 11.00 A.M.` becomes `2026-11-24T11:00:00+05:30`; areas in sq m, acres or sq yd become square feet.
- **Privacy first.** Individual names are always replaced with `[Individual borrower]`; this cannot be switched off. Street-level property descriptions and addresses are withheld unless the debtor is recognised as a company or firm and the asset is not residential (details under "Limitations and disclaimers"). Guarantor names, residence phrases ("R/o ...") and mobile numbers are removed where recognised. Name and address masking is **heuristic pattern matching and can miss items**, so check the output before you share it.
- **Polite to the sources.** One request per second per host, `robots.txt` honoured, no login, no CAPTCHA, no browser.

### Exactly which sources are monitored

| Source | What is read | Status in this version |
|---|---|---|
| IBBI liquidation auction notices – https://ibbi.gov.in/en/liquidation-auction-notices/lists | The notice table and the "Details" PDF of each notice | **Read** |
| Bank websites, including State Bank of India | – | **Not read and cannot be selected.** The State Bank of India website disclaimer requires its prior written approval before its content is displayed or printed, and this Actor has no such approval. Other banks have no usable public list or restrict automated access. |
| Baanknet (PSB Alliance e-auction portal) | – | **Not read.** Its terms do not allow copying or reuse of its information in another computer system without written consent. |

The checks behind this table (URLs, `robots.txt`, format) are written down in the repository file `docs/SOURCES_CHECK.md`. If a site changes its layout, the run still succeeds, the summary item shows the failed source with a code such as `LAYOUT_CHANGED`, and the other sources are processed.

### How to use it

1. Open the Actor and click **Try for free**. The prefilled input reads IBBI notices for Maharashtra from the last 7 days.
2. Choose the **States / UTs**, optional **Cities**, **Pincode prefixes**, **Asset types** and a **Maximum reserve price** (in rupees, for example `10000000` for ₹1 crore).
3. Click **Save as a Task** (for example "Pune residential under 1 Cr"). A run must succeed once before the task can be scheduled.
4. Open **Schedules**, create a schedule for the task, use the cron `30 8 * * *` with the time zone `Asia/Kolkata` for 08:30 every day, and **enable** it (new schedules start disabled).
5. In the task's **Integrations** tab add Slack, email (Gmail), Google Drive, Zapier, Make, n8n or a webhook on `ACTOR.RUN.SUCCEEDED`, and one on `ACTOR.RUN.FAILED` so you notice a failed run.

### Input

| Field | What it does | Example |
|---|---|---|
| `sources` | Only `IBBI` is available. Bank websites (including State Bank of India) and Baanknet are not read; selecting them stops the run with an input error before anything is charged. | `["IBBI"]` |
| `states` | States / UTs to keep. Empty means all of India. | `["Maharashtra"]` |
| `cities` | Matched against city and district; old names work (Bombay finds Mumbai). | `["Pune", "Thane"]` |
| `pincodePrefixes` | 2 to 6 digits; no radius search. | `["411", "400001"]` |
| `assetTypes` | `RESIDENTIAL`, `COMMERCIAL`, `INDUSTRIAL`, `LAND`, `AGRICULTURAL`, `PLANT_MACHINERY`, `VEHICLE`, `GOLD`, `SHARES_SECURITIES`, `BUSINESS_AS_GOING_CONCERN`, `OTHER`. Empty means all. | `["RESIDENTIAL"]` |
| `minReservePrice`, `maxReservePrice` | Rupees; 0 means no limit. Auctions without a readable reserve price are kept only when both are 0. | `10000000` |
| `auctionFrom`, `auctionTo` | Auction date window (`YYYY-MM-DD`). `auctionFrom` defaults to today. | `2026-12-31` |
| `includePast` | Also deliver auctions dated before today. Off by default. | `false` |
| `keywords` | Keep an auction if its (published) description contains any of these words. Withheld descriptions cannot match. | `["flat", "shop"]` |
| `lookbackDays` | First run only: how far back to read notices (1–90). Prefill 7, default 14. | `14` |
| `includeUpdates` | Also deliver reschedules, price changes, cancellations and corrections. | `true` |
| `maxResultsPerRun` | Cap of delivered items per run (1–20,000, default 300). The rest follows in the next run. | `300` |
| `webhookUrl`, `slackWebhookUrl` | Optional `https://` URLs. The Slack URL is stored encrypted. | |
| `useSharedCache` | Off by default. Read pre-parsed notices from a shared cache when one exists. | `false` |
| `stateKey` | Name of the "already delivered" memory, to share or separate it between tasks. | `pune-residential` |

Sample input:

```json
{
  "sources": ["IBBI"],
  "states": ["Maharashtra"],
  "cities": ["Pune"],
  "assetTypes": ["INDUSTRIAL", "COMMERCIAL"],
  "maxReservePrice": 10000000,
  "lookbackDays": 30,
  "maxResultsPerRun": 300
}
```

Invalid input (for example the pincode prefix `4`) stops the run before anything is charged, with a message such as `Pincode prefix '4' must be 2–6 digits.`

### Output

Each run adds new or changed auctions to the dataset and one uncharged `run-summary` item at the end. Example item (synthetic data):

```json
{
  "recordType": "auction",
  "key": "ibbi:sunrise-agro-foods-llp:3c9a41",
  "changeType": "rescheduled",
  "previous": {"auctionDate": "2026-11-13T11:00:00+05:30"},
  "sources": ["IBBI"],
  "sourceIds": {"IBBI_LOT": "sunrise-agro-foods-llp:3c9a41", "IBBI_DEBTOR": "sunrise-agro-foods-llp", "IBBI_CIN": "AAB0001"},
  "noticeType": "LIQUIDATION",
  "borrower": "Sunrise Agro Foods LLP",
  "borrowerIsEntity": true,
  "insolvencyProfessional": "Rohit Deshmukh",
  "assetDescription": "Factory shed with godown, built-up area 12,500 sq ft on 0.75 acre land",
  "assetType": "INDUSTRIAL",
  "city": "Pune",
  "district": "Pune",
  "state": "Maharashtra",
  "pincode": "412207",
  "areaSqFt": 12500.0,
  "reservePrice": 18500000.0,
  "emd": 1850000.0,
  "auctionDateTime": "2026-12-03T11:00:00+05:30",
  "auctionTimeAssumed": true,
  "emdDeadline": "2026-11-11T23:59:00+05:30",
  "possession": "UNKNOWN",
  "noticeUrl": "https://ibbi.gov.in/uploads/auction_notice_liquidation/example-notice.pdf",
  "detailUrl": "https://ibbi.gov.in/uploads/auction_notice_liquidation/digital_pdf/LiqAN0000000000_00000.pdf",
  "daysToAuction": 40,
  "status": "active",
  "parseQuality": "full",
  "detectedAt": "2026-10-24T08:30:00+05:30"
}
```

- `auctionTimeAssumed: true` means the notice did not state a time and 11:00 IST was filled in. IBBI's table gives dates only.
- `reserveRaw` holds the printed text when an amount could not be trusted (for example a truncated `Rs. 1,23`); `reservePrice` is then `null` rather than a guess.
- `parseQuality: "partial"` means only the listing fields were available (for example a scanned notice PDF); the `noticeUrl` always points to the original.
- `previous` shows the old auction date and/or reserve price for changes.

**Dataset views:** *Auctions* (default table), *Changes* (reschedules, price revisions, cancellations, corrections) and *Run summary* (counts per source, warnings, `stoppedReason`).

**Key-value store records:** `OUTPUT` (JSON summary plus the delivered items), `REPORT` (HTML, grouped by state and city, with reserve prices such as "₹ 42.88 Cr", a countdown and "Rescheduled" / "Price revised" badges) and `AUCTIONS.csv` (UTF-8 with byte-order mark, opens in Excel).

### Pricing

Pay per event. No monthly fee, no rental. The prices below are for the Starter (Bronze) plan and the free plan; Silver is 10 % lower and Gold 20 % lower.

| Event | When it is charged | Starter / Free | Silver | Gold |
|---|---|---|---|---|
| `apify-actor-start` | Once at the start of a run (set by Apify) | Apify default | Apify default | Apify default |
| `watch-check` | Once per run, after your input was checked | $0.05 | $0.045 | $0.04 |
| `auction-listing` | Per new auction delivered | $0.015 | $0.0135 | $0.012 |
| `auction-update` | Per rescheduled, re-priced, cancelled or corrected auction delivered | $0.01 | $0.009 | $0.008 |

Nothing is charged twice and nothing is charged for an item that was not delivered. An auction is charged only the first time it is delivered; a later change is charged once as an update. If your per-run spending limit is reached, the run stops, saves its memory and the next run delivers the rest.

**Monthly estimate**

```
Monthly = runs × watch-check + new auctions × auction-listing + changes × auction-update
runs per month: daily = 30, weekdays = 22, weekly = 4.33
```

Worked examples (the volumes are assumptions for the arithmetic, not measured counts):

| Setup | Runs | New auctions | Changes | Cost |
|---|---|---|---|---|
| Pune residential, daily | 30 | 20 | 5 | 30 × 0.05 + 20 × 0.015 + 5 × 0.01 = **$1.85** |
| Maharashtra, all types, daily | 30 | 150 | 30 | 1.50 + 2.25 + 0.30 = **$4.05** |
| All India, all types, daily | 30 | 600 | 120 | 1.50 + 9.00 + 1.20 = **$11.70** |
| Weekly check, narrow filters | 4.33 | 8 | 2 | 0.2165 + 0.12 + 0.02 = **about $0.36** |

Use `maxResultsPerRun` to cap the cost of a run with wide filters.

**Free plan.** On the Apify free plan the Actor reads IBBI only, keeps one state (if you choose none, all of India is allowed), and delivers at most 10 auctions per run. The summary item says which cap applied and the run still succeeds.

### Notifications

- **Slack:** add the Slack integration on `ACTOR.RUN.SUCCEEDED` with this message: `AuctionRadar IN run {{resource.status}}. Results: https://console.apify.com/storage/datasets/{{resource.defaultDatasetId}}?view=auctions`
- **Email:** the Gmail integration sends the run link; attach the `REPORT` or `AUCTIONS.csv` record URL from the run's Output tab.
- **Webhook:** set `webhookUrl` and the `OUTPUT` summary with the delivered items is posted after each run (15 s timeout, 2 retries; a failing webhook never fails the run). `slackWebhookUrl` posts up to 10 results.

### Limitations and disclaimers

- Screening signal only: **not legal or investment advice.** Verify every detail with the bank or insolvency professional and the official notice before bidding.
- Possible duplicates: if a bank rewrites a property description heavily, the auction can look new. Notices are matched by location and description, and IBBI lots by debtor and asset text.
- Some Details PDFs cannot be read (for example scanned images): those items arrive as `parseQuality: "partial"` with the table fields only, and the `noticeUrl` points to the original.
- Location comes from a pincode (when printed), the postal-zone prefix of the pincode, or a built-in list of 179 well-known cities; it can be missing. A state filter never keeps an item whose state is unknown.
- Per run the Actor opens at most 150 notice PDFs; larger backlogs continue in the next runs (summary warning `PDF_BUDGET_REACHED`).
- **Privacy.** Individual names are always hidden and cannot be shown. Masking of names, guarantors, residence phrases and mobile numbers is heuristic pattern matching on free text: it reduces but cannot exclude personal data in the output, and the insolvency professional's name (a public professional role) is output. Street-level property detail (the `address` field and the property description) is delivered only when the debtor is recognised as a company or firm and the asset is not residential; otherwise the description reads "\[Property description withheld for privacy. See the official notice.]" and only city, district, state, pincode, asset type, area and the notice link remain. This is the conservative choice: the mortgaged property of an individual can identify that person even when the name is hidden.
- **Source and attribution.** Data source: liquidation auction notices published by the Insolvency and Bankruptcy Board of India at ibbi.gov.in. **Data from public notices; verify with the original notice.** This Actor is not affiliated with, endorsed by or sponsored by IBBI or any other body. The IBBI website policy publishes no copyright or reuse clause; the Actor reads public notices politely and links every item to its source, but you are responsible for how you reuse the data.
- Bank websites, including State Bank of India, are not read. The SBI website disclaimer requires its prior written approval for displaying its content.
- Privacy policy: https://raw.githubusercontent.com/leons0016/ADApps/main/privacy/P5-AuctionRadarIN.txt

### FAQ

**Which banks are covered?** None. The Actor reads the IBBI liquidation notices only. Bank websites, including State Bank of India, are not read because their website terms require prior written approval for displaying their content.

**Why is Baanknet not included?** Its terms forbid copying and reuse of its information in other computer systems without written consent. The Actor does not contact it.

**Does it give IBBI auction properties for my city?** Use `cities`, `states` or `pincodePrefixes`. Items whose location cannot be read are left out when you filter by place.

**Why did I get an item twice?** A rescheduled or re-priced auction is delivered again as an update (`changeType`), once per change. If a bank re-publishes an auction with a very different description it may be seen as new.

**Where are individual borrowers?** Always hidden as `[Individual borrower]`; there is no option to show them. Masking is heuristic, so a name written in an unusual form could still appear; tell us and we will remove it.

**Why is the property description missing on some items?** It is withheld when the debtor is not recognised as a company or firm, or the asset is residential, to avoid identifying a person through the property address. Open the `noticeUrl` for the full official notice.

**Can I ask to remove an auction?** Yes: write to atulhritik@hotmail.com with the notice link.

**What happens when I hit my spending limit?** The run stops after the last affordable item, saves its memory and reports `stoppedReason: "SPENDING_LIMIT"`. The next run delivers the rest.

**Does it need a proxy?** No. It uses plain HTTP requests from Apify's servers; if a source cannot be reached the summary shows `SOURCE_UNREACHABLE` and the other sources are still processed.

**Why is the auction time 11:00?** When a notice gives no time the Actor assumes 11:00 IST and sets `auctionTimeAssumed: true`.

### Changelog and support

The changelog is in the Information tab. For questions or problems use the Issues tab of this Actor or write to atulhritik@hotmail.com.

Publisher: LeonS.

Third-party licences and attributions: see `docs/THIRD_PARTY_NOTICES.txt` in the Actor source.

# Changelog

This Actor's version history is a separate document: https://apify.com/leons0016/india-bank-auction-feed/changelog.md

# Actor input Schema

## `sources` (type: `array`):

IBBI liquidation auction notices are the only source. Bank websites (including State Bank of India) and Baanknet are not read because their terms do not allow it without approval (see README). Example: \["IBBI"].

## `states` (type: `array`):

Only auctions in these states or union territories. Empty means all of India. Example: \["Maharashtra", "Gujarat"].

## `cities` (type: `array`):

Matched against the city and the district. Old names work (Bombay finds Mumbai). Example: \["Pune", "Thane"].

## `pincodePrefixes` (type: `array`):

Start of a pincode, 2 to 6 digits, no radius search. Example: \["411", "400001"].

## `assetTypes` (type: `array`):

Kinds of assets to keep. Empty means all types. Example: \["RESIDENTIAL", "COMMERCIAL"].

## `minReservePrice` (type: `integer`):

Lowest reserve price in rupees. 0 means no minimum. Example: 2500000 for 25 lakh rupees.

## `maxReservePrice` (type: `integer`):

Highest reserve price in rupees. 0 means no limit. Example: 10000000 for 1 crore rupees. Auctions without a stated reserve price are kept only when both limits are 0.

## `auctionFrom` (type: `string`):

Optional. Only auctions on or after this date (YYYY-MM-DD). Empty means today. Example: 2026-12-01.

## `auctionTo` (type: `string`):

Optional. Only auctions on or before this date (YYYY-MM-DD). Example: 2026-12-31.

## `keywords` (type: `array`):

Keep an auction if its published description contains any of these words (withheld descriptions cannot match). Example: \["flat", "shop", "godown"].

## `lookbackDays` (type: `integer`):

How far back the first run reads notices, 1 to 90 days. Later runs deliver only new or changed auctions. Example: 14.

## `includeUpdates` (type: `boolean`):

Also deliver auctions that were rescheduled, re-priced, cancelled or corrected. Each one is charged as an auction-update event.

## `includePast` (type: `boolean`):

Off by default: auctions dated before today (or before 'Auction date from') are skipped.

## `maxResultsPerRun` (type: `integer`):

Upper limit of delivered items (new plus changed) per run; the rest follows in the next run. Protects your budget. Example: 300.

## `webhookUrl` (type: `string`):

Optional. The OUTPUT summary is posted here as JSON after each run. Must start with https://. Example: https://example.com/hooks/auctions.

## `slackWebhookUrl` (type: `string`):

Optional. Slack incoming-webhook URL for a short message with up to 10 results. Stored encrypted. Example: https://hooks.slack.com/services/...

## `useSharedCache` (type: `boolean`):

Off by default. Read pre-parsed IBBI notices from a shared cache when a fresh one exists, otherwise falls back to the live source.

## `stateKey` (type: `string`):

Optional name that keeps the 'already delivered' memory separate or shared between tasks. Letters, digits, '\_' and '-' only. Example: pune-residential.

## `indexerMode` (type: `boolean`):

Publisher only.

## Actor input object example

```json
{
  "sources": [
    "IBBI"
  ],
  "states": [
    "Maharashtra"
  ],
  "cities": [],
  "pincodePrefixes": [],
  "assetTypes": [],
  "minReservePrice": 0,
  "maxReservePrice": 0,
  "keywords": [],
  "lookbackDays": 7,
  "includeUpdates": true,
  "includePast": false,
  "maxResultsPerRun": 300,
  "useSharedCache": false,
  "indexerMode": false
}
```

# Actor output Schema

## `auctions` (type: `string`):

New and changed auctions as a table (dataset view 'auctions').

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

Rescheduled, re-priced, cancelled and corrected auctions (dataset view 'updates').

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

Counts per source, warnings and the stopped reason (dataset view 'summary').

## `report` (type: `string`):

Auctions grouped by state and city.

## `csv` (type: `string`):

All delivered items as UTF-8 CSV for Excel.

# 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 = {
    "sources": [
        "IBBI"
    ],
    "states": [
        "Maharashtra"
    ],
    "lookbackDays": 7
};

// Run the Actor and wait for it to finish
const run = await client.actor("leons0016/india-bank-auction-feed").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 = {
    "sources": ["IBBI"],
    "states": ["Maharashtra"],
    "lookbackDays": 7,
}

# Run the Actor and wait for it to finish
run = client.actor("leons0016/india-bank-auction-feed").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 '{
  "sources": [
    "IBBI"
  ],
  "states": [
    "Maharashtra"
  ],
  "lookbackDays": 7
}' |
apify call leons0016/india-bank-auction-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leons0016/india-bank-auction-feed"
        }
    }
}
```

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/v2BdRToRYMp65nlqJ/builds/SF542Qc76sLaUuuKn/openapi.json
