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.
Guides
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.
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 limits
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.
Other 4xx responses are a JSON envelope: { error, status, path, message, help: { catalog, docs } } where error is a snake_case slug (not_found, bad_request, unprocessable_entity, ...) and 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.
API Endpoints (REST / HTTP)
https://api.tigzig.com/vigil/v1Prepend this to every path listed below (e.g. /series becomes https://api.tigzig.com/vigil/v1/series). The curl example on each card shows the full URL.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?format=json"/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?format=json"/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=sqlite"/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=csv"/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"