VIGIL API - India Red Flag Tracker

TigZig API & MCP Hub

Free India corporate red-flag data from NSE and SEBI filings: credit ratings, insider trades, promoter pledges, takeovers and more. No key needed.

7data tables
~750NSE companies
455K+total rows
No authfully open
7 formatsbulk download

Quick start

AI agents: this API is open (no auth). Start with the OpenAPI spec for this API: https://api.tigzig.com/vigil/v1/openapi.json. The RFC 9727 catalog at api.tigzig.com/.well-known/api-catalog is a site-level directory of all TigZig APIs - go there only if you want a different API, not for more detail on this one.
REST API base URL
https://api.tigzig.com/vigil/v1

Documentation

For people
api.tigzig.com/vigil/v1/redoc

The full reference. Every endpoint, every field, and every enforced limit with the message you get when you cross it. Rendered from the running service, so it is never a copy that can fall behind.

For AI agents
api.tigzig.com/vigil/v1/openapi.json

The machine contract for this API. The site-wide directory of every TigZig API is the RFC 9727 catalog at api.tigzig.com/.well-known/api-catalog.

What you can call

9 endpoints. Request bodies, every field and every enforced limit are in the full reference.

GET/vigil/v1/API catalog - list all available endpoints and tables
GET/vigil/v1/companiesList all companies with symbol and ISIN
GET/vigil/v1/company/{identifier}All data for a single company
GET/vigil/v1/data/{table_name}Paginated table data
GET/vigil/v1/download/{table_name}Download full table as a file
GET/vigil/v1/download/allDownload all tables as a single file
GET/vigil/v1/downloads/manifestDownload file manifest with sizes
GET/vigil/v1/freshnessData freshness - last sync time per table
GET/vigil/v1/tablesList all tables with row counts and freshness

Live tool

VIGILOpen

Search Indian companies and their red flags without writing a query.

Overviewwhat this API covers

VIGIL exposes seven datasets of Indian corporate "red-flag" signals, all read-only and free, no API key. The data is extracted from NSE corporate filings and SEBI BRSR XBRL filings and refreshed on a regular cadence (see the freshness endpoint).

Two ways to use it:

  • Targeted queries - hit /data/{table} (paginated), /company/{symbol} (everything for one company), /companies, or /tables.
  • Bulk download - grab a whole table or all seven tables in one file via /download/{table} and /download/all. For full-dataset work, prefer the bulk download over paginating.

Agents: the machine-readable catalog is at the base URL, the full spec at /openapi.json, and this API is listed in the site API catalog (RFC 9727).

The Seven Tableswhat each of the seven holds

Use these names anywhere a {table_name} is required.

TableWhat it is~Rows
credit_ratingsNSE Centralised Rating Database - instrument-level credit ratings from all agencies (CRISIL, ICRA, CARE, India Ratings, Acuite, Brickwork, Infomerics).12,562
insider_tradingNSE PIT disclosures - promoter, director and KMP buy/sell/pledge transactions.34,357
pledge_dataNSE promoter pledge / encumbrance snapshot - current pledge levels (latest quarter).1,529
sast_disclosuresNSE SAST Reg 29 - substantial acquisition / sale of shares and takeover filings.11,751
encumbrance_eventsNSE SAST Reg 31/32 - promoter share pledge creation, release and invocation events.1,735
surveillance_flagsNSE surveillance flags - ASM, GSM, ESM, IRP, ICA and other regulatory flags (snapshot).680
rpt_transactionsRelated Party Transactions from XBRL filings - half-yearly RPT data for Nifty Total Market companies.393,272

Row counts are approximate and grow over time - call /tables or /freshness for current numbers.

Download Formatsthe download formats

The /download/{table_name} endpoint accepts a format query parameter. Seven formats, and the compression matters - read this before you parse the bytes:

format=You getContent-Type
csvCSV inside a .zip archive (PK header)application/zip
tsvTSV inside a .zip archiveapplication/zip
sqliteSQLite DB inside a .zip archiveapplication/zip
csv.gzgzip-compressed CSVapplication/gzip
tsv.gzgzip-compressed TSVapplication/gzip
sqlite.gzgzip-compressed SQLiteapplication/gzip
parquetParquet (internally compressed, no outer wrapper)application/octet-stream

Gotcha: bare csv / tsv / sqlite are ZIP archives (PK), NOT gzip - use the .gz variants if you want gzip. The authoritative per-file list (sizes, row counts) is at /downloads/manifest. /download/all returns a single combined SQLite of all seven tables.

File-name addresses. Every file also has an address that ends in its own file name, for example https://api.tigzig.com/vigil/v1/download/credit_ratings.parquet. curl -O and wget save it under the right name. The ?format= form keeps working. Every file's address: https://api.tigzig.com/downloads/vigil.

Query a parquet file in place. Parquet files support HTTP range requests, so DuckDB, pyarrow, polars or a browser can query them in place and read only the parts a query needs. For browsers, responses expose Content-Range, Content-Length and ETag to cross-origin JavaScript.

SELECT count(*) FROM read_parquet('https://api.tigzig.com/vigil/v1/download/credit_ratings.parquet');

What is new

Guidesthe written walkthroughs

This page is the reference - what the endpoints are and how to call them. The guides below are the long-form versions, with worked examples and the edges you only meet in real use:

Each is a plain page with a Markdown twin, so you can hand a URL straight to an agent. Come back to this page when you want parameter-level detail.

Rate limitsthe per-IP limits in full

Published so a well-behaved client can plan around them. These are per-IP limits:

  • Per IP: 30 requests / minute.
  • Downloads (/vigil/v1/download/*): 10 requests / minute.

You get a 429. Back off and retry after the window.

Avoiding 429s: Pulling a whole table? Use the bulk download rather than paging the query endpoints.

The current numbers are also published as machine-readable JSON at https://api.tigzig.com/vigil/v1/, derived from live config. Read those at runtime rather than hard-coding the figures above - limits change, and these channels change with them.

The shared replies for an unknown path (404), a wrong method (405) and the rate limit (429) are a JSON envelope: { code, error, status, path, message, help: { catalog, docs } }. code is an UPPERCASE string such as NOT_FOUND and is the field to switch on; error is a short lowercase label (not_found, method_not_allowed, ...). help points at the machine catalog (https://api.tigzig.com/vigil/v1/) plus this docs page, so a client that hits an error can self-recover.

Sourceterms in full

Source: the public filings each dataset is built from, named per dataset on the downloads page. Provided as is, with no guarantee of accuracy, completeness or availability and no support commitment.

Try it2 examples, paste into a browser

No key, no signup.

NSE symbol, the preferred form
Paste into a browser address bar.
https://api.tigzig.com/vigil/v1/company/RELIANCE?tables=credit_ratings%2Cinsider_trading
Response first lines of 20 KB
{"identifier":"RELIANCE","summary":{"credit_ratings":55,"insider_trading":8},"total_records":63,"sections":{"credit_ratings":{"count":55,"data":[{"record_id":"e14289583f953abf87d21856d94b42c5","app_id":"6267","company_name":"Reliance Industries Limited","isin":"INE002A08542","equity_isin":"INE002A01018","nse_symbol":"RELIANCE","instrument_type":"DEBENTURE","instrument_name":"RELIANCE INDUSTRIES LIMITED SERIES H 8.95 NCD 09NV28 FVRS10LAC","rating_agency":"ICRA Limited","credit_rating":"[ICRA] AAA","rating_action":"Reaffirm","date_of_rating":"2024-02-02","outlook":"Stable","credit_rating_earlier":"[ICRA] AAA","rating_action_earlier":"Reaffirm","outlook_earlier":"Stable","date_of_rating_earlier":"2023-02-10","broadcast_datetime":"02-FEB-2024 17:51:30","signatory_name":"Savithri Parekh","designation":"Company Secretary and Compliance Officer","place":"Mumbai","verify_status":"Verified","matc
...
Credit rating actions, with the derived red flag reason
Paste into a browser address bar.
https://api.tigzig.com/vigil/v1/data/credit_ratings?limit=100
Response first lines of 20 KB
{"total":13312,"limit":100,"offset":0,"has_more":true,"next_offset":100,"count":100,"data":[{"record_id":"bd0f6d4583d98de335db205ab6dd2988","app_id":"6246","company_name":"Muthoot Finance Limited","isin":"INE414G01012","equity_isin":"INE414G01012","nse_symbol":"MUTHOOTFIN","instrument_type":"EQUITY SHARES","instrument_name":"MUTHOOT FINANCE LIMITED EQ","rating_agency":"CRISIL Ratings Limited","credit_rating":"AA+","rating_action":"New","date_of_rating":"2024-01-26","outlook":"Stable","credit_rating_earlier":null,"rating_action_earlier":null,"outlook_earlier":null,"date_of_rating_earlier":null,"broadcast_datetime":"27-JAN-2024 11:06:43","signatory_name":"Rajesh A","designation":"Company Secretary","place":"Kochi","verify_status":"Not Verified","match_method":"prefix_lookup","listing_status":"listed","source_month":"2024-01","xbrl_url":"https://nsearchives.nseindia.com/corporate/xbrl/CDC_C
...