Monitor IBBI CIRP Cases for Legal Compliance and Alerts
Automate IBBI CIRP case monitoring for NBFC and bank compliance teams. Track claim deadlines, status alerts, and counterparty screening via structured API.

Thirdwatch's IBBI Scraper returns structured CIRP case records from the IBBI registry — company name, CIN, case status, announcement date, claim submission deadline, assigned insolvency professional, and notice URL. Schedule daily runs to screen your loan portfolio against the registry and catch new CIRP admissions before the 14-day claim deadline expires. Built for compliance teams at NBFCs, banks, and legal firms who need automated monitoring of insolvency proceedings against counterparties, borrowers, and portfolio companies.
Why monitor IBBI CIRP cases for compliance
Missing an IBC claim-filing deadline is one of the most expensive compliance failures in Indian financial services. Under the Insolvency and Bankruptcy Code, financial creditors who miss the claim submission deadline forfeit their right to vote in the Committee of Creditors — and in many cases, forfeit recovery entirely. According to IBBI's annual report data, the average recovery rate for financial creditors who file claims on time is 32% of admitted claims, while late or missed claims recover near zero on unsecured portions. For an NBFC with INR 500 crore in corporate loan exposure, a single missed CIRP deadline can mean INR 50-160 crore in foregone recovery.
The job-to-be-done is operational. A compliance team at an NBFC screens their entire loan portfolio (500-2,000 CINs) against the IBBI registry daily to catch new CIRP admissions before the 14-day claim deadline expires. A bank's legal department monitors status transitions on active CIRP cases to track resolution plan approvals and liquidation orders. A law firm managing IBC matters for multiple clients needs a unified dashboard of all active cases with upcoming deadlines. A trade-credit insurer screens counterparty CINs to trigger policy reviews when insolvency proceedings are filed. All reduce to automated CIN-based monitoring with deadline alerting and status-change detection.
How does this compare to the alternatives?
Three options for IBBI compliance monitoring:
| Approach | Detection latency | Coverage | Setup time | Maintenance |
|---|---|---|---|---|
| Manual IBBI website checks | 1-7 days (staff-dependent) | Partial (human error) | Ongoing | Full-time staff cost |
| Commercial compliance platforms (Probe42, KYC Hub) | 1-3 days (batch processing) | Full (vendor-curated) | Weeks (contract) | Annual subscription |
| Thirdwatch IBBI Scraper + automated alerts | Same-day (scheduled runs) | Full registry | 30 minutes | Thirdwatch tracks IBBI changes |
Commercial compliance platforms bundle IBBI monitoring with KYC and AML checks but at enterprise pricing and with 1-3 day batch latency. The IBBI Scraper actor page gives you same-day detection with full control over alerting logic.
How to set up CIRP monitoring in 5 steps
Step 1: How do I authenticate against Apify?
Sign in at apify.com (free tier, no credit card), open Settings and Integrations, and copy your personal API token:
export APIFY_TOKEN="apify_api_xxxxxxxxxxxxxxxx"
pip install apify-client pandasStep 2: How do I screen my loan portfolio against IBBI?
Pass your portfolio CINs to the actor with searchType set to corporate_debtor.
import os, json
from apify_client import ApifyClient
from datetime import datetime, timedelta
client = ApifyClient(os.environ["APIFY_TOKEN"])
# Load portfolio CINs from your loan management system
PORTFOLIO_CINS = [
"U72200DL2007PTC165970",
"L24231GJ1966PLC001543",
"U45200MH2007PTC170862",
"L27100GJ1976PLC002883",
"L17110MH1986PLC038463",
# ... up to 2000 CINs from your portfolio
]
# Batch in groups of 50 to stay within per-run limits
BATCH_SIZE = 50
all_hits = []
for i in range(0, len(PORTFOLIO_CINS), BATCH_SIZE):
batch = PORTFOLIO_CINS[i:i + BATCH_SIZE]
run = client.actor("thirdwatch/ibbi-scraper").call(
run_input={
"queries": batch,
"searchType": "corporate_debtor",
"maxResults": 50
}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
all_hits.extend(items)
print(f"Portfolio screening complete: {len(all_hits)} IBBI records found")For a 500-CIN portfolio, this runs 10 batches and returns every IBBI record matching your borrowers. Any hit means an active or historical insolvency proceeding against a portfolio company.
Step 3: How do I detect new CIRP admissions?
Filter results to admissions within the last 30 days — these have actionable claim deadlines.
import pandas as pd
df = pd.DataFrame(all_hits)
df["announcement_date"] = pd.to_datetime(df.announcement_date, errors="coerce")
df["claim_submission_deadline"] = pd.to_datetime(
df.claim_submission_deadline, errors="coerce"
)
cutoff = datetime.now() - timedelta(days=30)
recent_admissions = df[
(df.announcement_date >= cutoff) &
(df.status == "Admitted")
].copy()
recent_admissions["days_until_deadline"] = (
recent_admissions.claim_submission_deadline - datetime.now()
).dt.days
urgent = recent_admissions[recent_admissions.days_until_deadline <= 14]
print(f"\nURGENT: {len(urgent)} cases with claim deadline within 14 days:")
for _, row in urgent.iterrows():
print(f" {row.company_name} (CIN: {row.cin})")
print(f" Deadline: {row.claim_submission_deadline.date()}")
print(f" Days remaining: {row.days_until_deadline}")
print(f" IP: {row.insolvency_professional_name}")
print(f" Notice: {row.notice_url}")Cases with fewer than 14 days until claim deadline require immediate escalation to legal — this is the critical compliance window.
Step 4: How do I build status-change alerts?
Compare current IBBI data against your last snapshot to detect status transitions.
import json
from pathlib import Path
SNAPSHOT_FILE = Path("ibbi_last_snapshot.json")
def load_last_snapshot():
if SNAPSHOT_FILE.exists():
return json.loads(SNAPSHOT_FILE.read_text())
return {}
def save_snapshot(records):
snapshot = {}
for record in records:
key = f"{record.get('cin', '')}|{record.get('case_type', '')}"
snapshot[key] = record.get("status", "")
SNAPSHOT_FILE.write_text(json.dumps(snapshot))
last_snapshot = load_last_snapshot()
status_changes = []
for item in all_hits:
key = f"{item.get('cin', '')}|{item.get('case_type', '')}"
old_status = last_snapshot.get(key)
new_status = item.get("status")
if old_status and old_status != new_status:
status_changes.append({
"company_name": item.get("company_name"),
"cin": item.get("cin"),
"old_status": old_status,
"new_status": new_status,
"case_type": item.get("case_type"),
})
save_snapshot(all_hits)
if status_changes:
print(f"\nSTATUS CHANGES DETECTED: {len(status_changes)}")
for change in status_changes:
print(f" {change['company_name']} ({change['cin']})")
print(f" {change['old_status']} -> {change['new_status']}")The highest-signal status transitions for compliance are: Admitted to Liquidation (trigger provisioning review), Admitted to Resolved (trigger recovery assessment), and any status to Withdrawn (remove from monitoring).
Step 5: How do I automate daily monitoring with Apify triggers?
Set up a scheduled trigger to run the screening automatically and post results to your compliance dashboard.
# Create a scheduled trigger via Apify API
import requests
TOKEN = os.environ["APIFY_TOKEN"]
trigger_config = {
"name": "IBBI Daily Portfolio Screen",
"actId": "thirdwatch/ibbi-scraper",
"schedule": "0 6 * * 1-5", # 6 AM UTC, weekdays only
"runInput": {
"queries": PORTFOLIO_CINS[:50], # First batch
"searchType": "corporate_debtor",
"maxResults": 100
},
"webhooks": [
{
"eventTypes": ["ACTOR.RUN.SUCCEEDED"],
"requestUrl": "https://your-compliance-dashboard.com/api/ibbi-webhook",
}
]
}
print("Schedule via Apify Console: Actors > IBBI Scraper > Triggers")
print("Or use the Apify API to create programmatic triggers")
print(f"Monitoring {len(PORTFOLIO_CINS)} CINs on weekday schedule")The webhook fires on run completion, pushing fresh IBBI data to your compliance system. Your downstream handler runs the deadline-check and status-change logic from Steps 3 and 4.
Sample output
A CIRP case record with compliance-critical fields highlighted.
[
{
"entity_type": "corporate_debtor",
"company_name": "Videocon Industries Limited",
"cin": "L99999MH1986PLC040895",
"case_type": "CIRP",
"announcement_type_full": "Public Announcement inviting claims under Section 15",
"status": "Admitted",
"announcement_date": "2025-11-15",
"claim_submission_deadline": "2025-12-15",
"applicant_name": "IDBI Bank",
"insolvency_professional_name": "Abhijit Guhathakurta",
"remarks": "NCLT Mumbai Bench",
"notice_url": "https://ibbi.gov.in/uploads/notice/videocon_2025.pdf",
"source_url": "https://ibbi.gov.in/corporate-debtor",
"data_source": "IBBI"
},
{
"entity_type": "corporate_debtor",
"company_name": "DHFL (Dewan Housing Finance)",
"cin": "L65910MH1984PLC032639",
"case_type": "CIRP",
"announcement_type_full": "Revised Public Announcement extending deadline",
"status": "Resolved",
"announcement_date": "2024-06-10",
"claim_submission_deadline": "2024-07-10",
"applicant_name": "Union Bank of India",
"insolvency_professional_name": "R Subramaniakumar",
"remarks": "Resolution plan by Piramal Group approved by NCLT",
"notice_url": "https://ibbi.gov.in/uploads/notice/dhfl_resolved.pdf",
"source_url": "https://ibbi.gov.in/corporate-debtor",
"data_source": "IBBI"
}
]claim_submission_deadline is the single most compliance-critical field — this is the hard deadline for creditors to file claims. status transitions drive provisioning and recovery-assessment workflows.
Common pitfalls
Six compliance-specific pitfalls in IBBI monitoring. Deadline calculation errors — claim submission deadlines are calendar days, not business days. A 14-day deadline that spans a long weekend still expires on the calendar date. Always compute days-remaining against calendar dates, not working days. Multiple announcements per CIN — a single CIRP case generates 2-5 public announcements (initial admission, revised deadlines, form-A invitation, resolution approval). Track the LATEST announcement per CIN to get the current deadline and status. Voluntary liquidation false positives — voluntary liquidation (Section 59) is initiated by solvent companies. Screening your portfolio against IBBI without filtering on case_type will flag healthy companies winding up subsidiaries. Always distinguish CIRP (distressed) from voluntary liquidation (solvent wind-down).
NCLT bench jurisdiction gaps — IBBI publishes records from all 15 NCLT benches, but bench-level publication timing varies. Mumbai and Delhi benches publish within 1-2 weeks; smaller benches (Jaipur, Chandigarh, Guwahati) can lag 3-4 weeks. For portfolios with exposure to companies in smaller NCLT jurisdictions, supplement IBBI data with direct NCLT cause-list monitoring. IP reassignment gaps — when an insolvency professional is replaced mid-CIRP (resignation, removal by CoC), the IBBI record may show the original IP until the replacement order is published. For accurate IP tracking, cross-reference with NCLT orders. Group company cascading — insolvency of one group company often triggers proceedings against related entities within 6-12 months. When a CIRP admission hits your portfolio, immediately screen all CINs in the same corporate group.
Operational best practices for production compliance
Build a three-priority alerting system. Priority 1 (immediate): new CIRP admission against a portfolio CIN with claim deadline within 14 days — triggers email to legal team lead. Priority 2 (same-day): status transition on any monitored CIN (Admitted to Liquidation, Admitted to Resolved) — triggers compliance officer review. Priority 3 (weekly digest): new CIRP admissions matching your industry watchlist — surfaces emerging sector-level distress.
Document every IBBI alert and the compliance action taken. RBI audits of NBFC IBC compliance increasingly ask for evidence of systematic monitoring. A timestamped log showing (alert received, action taken, claim filed/not filed, reason) provides audit-ready documentation.
Related use cases
Frequently asked questions
What compliance obligations do NBFCs have for IBBI CIRP cases?
Under the IBC and RBI's Master Direction on NBFC regulation, financial creditors must file claims within the deadline published in the CIRP public announcement. Missing the claim deadline can result in forfeiture of the right to vote in the Committee of Creditors (CoC) and reduced recovery. RBI's 2024 circular on resolution framework compliance requires NBFCs to maintain real-time visibility into IBC proceedings affecting their loan portfolios. The claim submission deadline is typically 14-90 days from the public announcement date.
How often should compliance teams check for new CIRP filings?
Daily for financial creditors with active loan portfolios — new CIRP admissions directly affect claim-filing obligations with tight deadlines (14-90 days). Weekly for trade creditors and operational creditors — operational claims have the same deadline but lower recovery priority. Monthly for compliance audit and reporting — sufficient for regulatory reporting cycles (quarterly RBI returns). The actor supports automated scheduling via Apify triggers for hands-off monitoring.
Related
100 free credits, no credit card.
About 30 real searches. Add the MCP to Claude or Cursor in two minutes.