Quick start
https://api.tigzig.com/vigil/v1Documentation
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.
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/companies | List 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/all | Download all tables as a single file |
| GET | /vigil/v1/downloads/manifest | Download file manifest with sizes |
| GET | /vigil/v1/freshness | Data freshness - last sync time per table |
| GET | /vigil/v1/tables | List all tables with row counts and freshness |
Live tool
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.
| Table | What it is | ~Rows |
|---|---|---|
credit_ratings | NSE Centralised Rating Database - instrument-level credit ratings from all agencies (CRISIL, ICRA, CARE, India Ratings, Acuite, Brickwork, Infomerics). | 12,562 |
insider_trading | NSE PIT disclosures - promoter, director and KMP buy/sell/pledge transactions. | 34,357 |
pledge_data | NSE promoter pledge / encumbrance snapshot - current pledge levels (latest quarter). | 1,529 |
sast_disclosures | NSE SAST Reg 29 - substantial acquisition / sale of shares and takeover filings. | 11,751 |
encumbrance_events | NSE SAST Reg 31/32 - promoter share pledge creation, release and invocation events. | 1,735 |
surveillance_flags | NSE surveillance flags - ASM, GSM, ESM, IRP, ICA and other regulatory flags (snapshot). | 680 |
rpt_transactions | Related 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 get | Content-Type |
|---|---|---|
csv | CSV inside a .zip archive (PK header) | application/zip |
tsv | TSV inside a .zip archive | application/zip |
sqlite | SQLite DB inside a .zip archive | application/zip |
csv.gz | gzip-compressed CSV | application/gzip |
tsv.gz | gzip-compressed TSV | application/gzip |
sqlite.gz | gzip-compressed SQLite | application/gzip |
parquet | Parquet (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
- 30 Oct 2026 VIGIL signals file now has 13 curated flags, one column each, most with the latest filing date
- 11 Oct 2026 Download hub: every Tigzig dataset on one page and in one index, 46 datasets and 172 files, with an agent promptAll APIs
- 2 Oct 2026 FY 2025-26 BRSR data is live for 663 of the 750 Nifty Total Market companies: workforce, pay and complaints
- 14 Sep 2026 VIGIL Flags: filter companies by one or more red-flag conditions, with any or all
- 2 Sep 2026 The whole VIGIL database published for download, one call takes the lot
Everything that changed, newest first - the full log across every API and app.
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:
- Demystifying the API errors - what each error actually means and what to do about it, instead of guessing from a status code. Covers every TigZig API, not just this one.
- Your agents and scripts have been talking to me - what real callers actually do, read out of the server logs: the common mistakes, what works, and the patterns worth copying.
- Is it you, or is it me? - the public status page for every TigZig API, so you can check whether a failure is at your end or ours before you start debugging.
- Take the whole VIGIL database in one call - the bulk download covering every red-flag dataset here, and the single API call that pulls the lot.
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.
https://api.tigzig.com/vigil/v1/company/RELIANCE?tables=credit_ratings%2Cinsider_trading
{"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
...https://api.tigzig.com/vigil/v1/data/credit_ratings?limit=100
{"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
...