Overview
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 Tables
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 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.
Rate Limits
Per IP, published so a well-behaved client can plan around them:
- Queries: 30 requests / minute
- Downloads (
/download/*): 10 requests / minute
On the limit you get a 429 with a Retry-After: 60 header and a JSON body with retry_after_seconds and a hint. For heavy pulls, use the bulk download endpoints instead of paginating - one request avoids the limit entirely.
Endpoints
Generated from the live OpenAPI spec - always in sync with the API. Try them interactively in Swagger.
/
API catalog â list all available endpoints and tables
Returns a catalog of all available endpoints, tables, and their descriptions.
curl "https://api.tigzig.com/vigil/v1/"/companies
List all companies with symbol and ISIN
Returns a unique list of all companies across all tables.
curl "https://api.tigzig.com/vigil/v1/companies"/company/{identifier}
All data for a single company
Fetch all available data for a single company across all tables.
| Param | In | Type | Description | |
|---|---|---|---|---|
identifier | path | string | required | |
tables | query | string | optional | Comma-separated table names to include (default: all) |
format | query | string | optional | Response format: json or tsv |
curl "https://api.tigzig.com/vigil/v1/company/RELIANCE"/data/{table_name}
Paginated table data
Paginated data from a single table.
| Param | In | Type | Description | |
|---|---|---|---|---|
table_name | path | string | required | |
limit | query | integer | optional | Rows per page (max 5000) |
offset | query | integer | optional | Row offset for pagination |
format | query | string | optional | Response format: json or tsv |
curl "https://api.tigzig.com/vigil/v1/data/credit_ratings?limit=5"/download/all
Download all tables as a single file
Download all tables in a single SQLite database file.
| Param | In | Type | Description | |
|---|---|---|---|---|
format | query | string | optional | File format: sqlite, sqlite.gz |
curl "https://api.tigzig.com/vigil/v1/download/all?format=parquet"/download/{table_name}
Download full table as a file
Download an entire table as a pre-generated static file.
| Param | In | Type | Description | |
|---|---|---|---|---|
table_name | path | string | required | |
format | query | string | optional | File format: csv, tsv, parquet, sqlite, csv.gz, tsv.gz, sqlite.gz |
curl "https://api.tigzig.com/vigil/v1/download/credit_ratings?format=parquet"/downloads/manifest
Download file manifest with sizes
Returns the manifest of pre-generated download files with file sizes.
curl "https://api.tigzig.com/vigil/v1/downloads/manifest"/freshness
Data freshness â last sync time per table
Returns the last sync time and record count for each table.
curl "https://api.tigzig.com/vigil/v1/freshness"/tables
List all tables with row counts and freshness
Returns all available table names with row counts and data freshness.
curl "https://api.tigzig.com/vigil/v1/tables"