India NSE Filings — Announcements, Results & Corporate Actions avatar

India NSE Filings — Announcements, Results & Corporate Actions

Pricing

$4.00 / 1,000 filing records

Go to Apify Store
India NSE Filings — Announcements, Results & Corporate Actions

India NSE Filings — Announcements, Results & Corporate Actions

NSE India listed-company filings from official public JSON endpoints: corporate announcements with PDF links, quarterly financial results with XBRL key figures (revenue, profit, EPS), dividend/split/bonus corporate actions and the 2,500+ company equity list. Filter by symbol, date and keyword.

Pricing

$4.00 / 1,000 filing records

Rating

0.0

(0)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

4 days ago

Last modified

Categories

Share

India NSE Filings — Announcements, Results & Corporate Actions 🇮🇳

foXLabs India series: Company registry · Government tenders · Tech hiring signals · IndiaMART suppliers

🎉 Turn the National Stock Exchange of India's public filing feeds into clean, structured rows — no login, no API key: corporate announcements with the filed PDF, quarterly results with official XBRL figures (revenue, profit, EPS), dividends, splits and bonus issues, and NSE's list of 2,568 listed companies with ISINs. Built for KYC / due-diligence analysts, equity research, compliance monitoring and B2B intelligence on Indian listed companies.

🔍 What is India NSE Filings — and when should you use it?

Pick a feed, optionally name companies by their NSE symbol, choose a date range, and this actor returns the matching filings from NSE's own public JSON endpoints and archive files — as clean, flat rows you can filter, export or feed to an AI agent. Every run reads NSE live, on the default automatic Apify Proxy: no residential proxy, cookies or API key needed.

Use it when you need: what an Indian listed company has just disclosed (board outcomes, auditor changes, resignations, credit ratings, press releases); a company's quarterly revenue, profit and EPS straight from its XBRL filing; a dividend, split and bonus calendar; or NSE symbol ↔ ISIN master data.

Use something else when: you need BSE-only companies (BSE is not covered), live prices or trades (not included — NSE licenses market data separately), or unlisted companies — for those, use Indian Company Data (MCA registry: CIN, directors, financials).

🤖 Use with AI agents

Already on the Apify MCP server? Ask for this Actor by name: foxlabs/india-listed-company-filings.

Your agent can pay for its own runs. This Actor is pay-per-event with agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — no Apify account or API token of its own. Billing is the same either way: one filing-record event per delivered data row.

Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want to pull NSE India company filings using the Apify Actor `foxlabs/india-listed-company-filings`.
Input: `mode` is announcements, financial_results, corporate_actions or equity_list. `symbols` is an optional list of NSE trading symbols (INFY, TCS, HDFCBANK). `datePreset` is last_24_hours, last_7_days, last_30_days or custom (then `dateFrom` / `dateTo` as YYYY-MM-DD). `keyword` filters subject and description. `includeXbrl` adds revenue, profit and EPS to financial results. `maxResults` caps rows (0 = no limit).
Start with: {"mode":"announcements","datePreset":"last_7_days","maxResults":20}
Ask me which companies or events I care about, run the Actor, then summarise the rows as a table.

Things you can ask your agent for:

  • "Show Infosys, TCS and HDFC Bank revenue and net profit for every quarter since January 2025."
  • "List every dividend with an ex-date in the last 30 days, with the amount per share."
  • "Which NSE companies disclosed a change in auditors this week? Link the filings."

The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/india-listed-company-filings.md.

📋 Overview

Everything you need to turn NSE India's public disclosures into clean, structured data — in one actor, with no login, cookies or API key.

Why teams pick this actor:

  • ✅ Four NSE feeds, one actor — announcements, quarterly results, corporate actions and the equity list.
  • 📊 Filings as numbers — revenue, total income, expenses, profit before and after tax, EPS and paid-up capital read from each result's official XBRL document; total assets and equity on March and September filings.
  • 🔗 Current identifiers — the NSE symbol plus the current ISIN from NSE's official equity list (NSE's filing feeds still carry a pre-split ISIN for about one company in five; this actor replaces it), and isinSource on every row says where the ISIN came from.
  • 🧾 Evidence attached — announcements link the filed document on NSE's archive (text-only disclosures have none), results their XBRL file (and, for integrated filings, the inline-XBRL page).
  • 🚦 No silent failures — an unknown symbol returns an error row with a "Did you mean …" hint; an empty, blocked, degraded or invalid run explains itself in a source_report row.
  • 💰 Pay only for data rows — one filing-record event per row; error and summary rows don't fire it.
  • 🤖 Agent-ready — MCP + x402 agentic payments.

✨ Features

  • 📰 Corporate announcements — subject, full disclosure text, company, ISIN, IST timestamps, industry where NSE gives it, and the filed PDF with its size — market-wide or for chosen symbols.
  • 📊 Quarterly results + XBRL figures — standalone and consolidated, audited flag, original vs revised, filing time; with includeXbrl the key P&L lines as four-field money sets (revenue, revenueCurrency, revenueFormatted, revenueExact …).
  • 🏦 Bank-aware parsing — banks report interest earned instead of revenue from operations; revenueTag tells you which XBRL element fed revenue.
  • 💸 Corporate actions, parsed — purpose (dividend, interim_dividend, split, bonus, rights, buyback …), ex-date, record date, cash per share (a regular plus a special dividend is added up) and bonus / rights ratios.
  • 🏷️ Equity master data — all 2,568 companies on NSE's equity list (main board) with ISIN, series, listing date, face value, paid-up value and market lot.
  • 🔎 Filters — symbols, date presets or a custom range, keyword, maxResults.
  • 🧹 Clean values — ISO dates, timestamps with an explicit +05:30 offset, null for anything NSE doesn't publish, HTML entities decoded.

🎬 Quick Start

curl -X POST "https://api.apify.com/v2/acts/foxlabs~india-listed-company-filings/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"announcements","datePreset":"last_7_days","maxResults":20}'

🚀 Getting Started (3 steps)

  1. Pick a feed — announcements, financial_results, corporate_actions or equity_list.
  2. Narrow it — optional NSE symbols, a date preset or custom range, a keyword, maxResults.
  3. Run and export — JSON, CSV or Excel from the dataset, or straight into your pipeline through the API.

📥 Input

{"mode":"financial_results","symbols":["INFY","TCS","HDFCBANK"],"includeXbrl":true,"datePreset":"custom","dateFrom":"2025-01-01"}
FieldTypeDescription
modestringannouncements (default), financial_results, corporate_actions or equity_list.
symbolsarrayOptional NSE trading symbols (INFY, TCS, RELIANCE). Checked against NSE's equity list (if the list can't be loaded in a run, they are used as given and the degraded summary row says so); for results and corporate actions a symbol returns the company's full history unless you pick a custom range.
datePresetstringlast_24_hours, last_7_days (default), last_30_days or custom. Dates are Indian Standard Time: announcements filter on announcement time, corporate actions on ex-date, results on filing date.
dateFrom / dateTostringYYYY-MM-DD, used with custom. An empty dateTo means today; a future dateTo lists upcoming ex-dates.
keywordstringCase-insensitive match on subject, description, company name or purpose (dividend, resignation, buyback …).
includeXbrlbooleanFinancial results only: parse each result's XBRL document into key figures (one extra download per result).
maxResultsintegerStop after this many data rows (default 500; 0 = no limit). Rows come in NSE's order — announcements newest first.
requestDelayMsintegerPause between requests; minimum and default 700 ms.
proxyConfigurationobjectAutomatic Apify Proxy by default — keep it (see the FAQ).

📤 Output

One flat row per filing; recordType tells you which of the four shapes you are looking at (announcement, financial_result, corporate_action, company). Every row carries symbol, companyName, isin, isinSource (equity_list = the current ISIN from NSE's official list; feed = the filing feed's own value, checksum-checked but possibly pre-split; null when no ISIN is known), nseUrl (link to the company's NSE quote page, built only for symbols on the equity list), sourceEndpoint (the NSE URL the row came from) and scrapedAt (UTC).

announcements

FieldDescription
announcementIdNSE's sequence id — unique per announcement
subjectNSE category, e.g. Credit Rating, Change in Auditors, Outcome of Board Meeting
descriptionThe disclosure text as broadcast
industryNSE industry label — NSE fills it for roughly 4 announcements in 10
announcementAt / disseminatedAtISO 8601 in IST (+05:30)
attachmentUrl / attachmentType / attachmentSizeBytesThe filed document on nsearchives.nseindia.com (PDF, sometimes ZIP); null for text-only disclosures
hasXbrlNSE's flag for an XBRL version of the announcement

financial_results

FieldDescription
filingId / filingSourceFinancial results only: unique id (integrated-… / legacy-…) and its feed, nse-integrated-filing (quarters from March 2025) or nse-financial-results (older quarters)
periodStart / periodEnd / quarterLabel / financialYearReporting period; financialYear only on the older feed
consolidated / auditedFlag / filingStatus / revisionRemarkConsolidated vs standalone, audited or not, original or revised, the company's revision note
filingFormat / filedAtIntegrated Filing (SEBI), Ind-AS New, Non-Ind-AS …; filing time (IST)
xbrlUrl / ixbrlUrl / pdfUrlXBRL instance document; inline-XBRL page (integrated filings); results PDF when NSE links one
xbrlStatus / xbrlTaxonomy / xbrlFactCount / xbrlPeriodStart / xbrlPeriodEnd / xbrlCurrencynot_requested, parsed, missing, fetch_failed, parse_failed or blocked; taxonomy (INTEGRATED_FILING_INDAS, INTEGRATED_FILING_BANKING, INDAS, BANKING …); facts found; period and currency of the figures
revenue, totalIncome, totalExpenses, profitBeforeTax, taxExpense, netProfit, paidUpEquityCapital, totalAssets, totalEquityEach as a set of four: the INR number, …Currency, …Formatted (₹482.11B) and …Exact (₹482,110,000,000)
revenueTag / epsBasic / epsDilutedThe XBRL element behind revenue; earnings per share in INR

corporate_actions

FieldDescription
seriesEQ for shares; IV / RR for InvIT / REIT units; GS for government securities
purposedividend, interim_dividend, special_dividend, split, bonus, rights, buyback, demerger, scheme_of_arrangement, merger, interest_payment, distribution, redemption, consolidation, agm, egm or other
subjectNSE's wording, e.g. Dividend - Rs 1.50 Per Share, Bonus 2:1
exDate / recordDateISO dates
amountPerShareINR per share or unit for dividends, distributions and interest (a regular plus a special dividend is added up)
ratio2:1, 3:19 … when the subject states one (bonus, rights, schemes); splits show the old → new face value in subject
faceValueFace value of the share

equity_list — series (EQ, BE, BZ), listingDate, faceValue, paidUpValue and marketLot, straight from NSE's EQUITY_L.csv.

Error and summary rows — an unknown symbol gives {"recordType": "error", "symbol": …, "error": …} and no request is spent on it; a run that ends empty, blocked, degraded or with invalid input writes one {"recordType": "source_report", "status": …, "message": …} row, where status is empty, empty_suspicious, blocked, invalid_symbols, invalid_input or degraded. degraded means NSE's equity list could not be loaded after three attempts: the rows still arrive, but their ISINs come from the filing feeds (isinSource: "feed"), nseUrl is empty and symbols were not validated. A blocked run still delivers the rows collected before the refusal.

Real rows from test runs on 10 September 2026 (the result row is abridged — the other money sets have the same four fields; it was captured before the isinSource field existed, which is equity_list for Infosys):

{
"recordType": "announcement",
"announcementId": "106778079",
"symbol": "PSB",
"companyName": "Punjab & Sind Bank",
"isin": "INE608A01012",
"isinSource": "equity_list",
"industry": "Banks",
"subject": "Credit Rating",
"description": "Punjab & Sind Bank has informed the Exchange about Credit Rating",
"announcementAt": "2026-09-10T19:28:29+05:30",
"disseminatedAt": "2026-09-10T19:28:30+05:30",
"attachmentUrl": "https://nsearchives.nseindia.com/corporate/PSB_10092026192755_bsense10092026rating.pdf",
"attachmentType": "pdf",
"attachmentSizeBytes": 697303,
"hasXbrl": true,
"nseUrl": "https://www.nseindia.com/get-quotes/equity?symbol=PSB"
}
{
"recordType": "financial_result",
"filingId": "integrated-177385",
"filingSource": "nse-integrated-filing",
"symbol": "INFY",
"companyName": "Infosys Limited",
"isin": "INE009A01021",
"periodStart": "2026-04-01",
"periodEnd": "2026-06-30",
"quarterLabel": "First quarter",
"consolidated": true,
"auditedFlag": true,
"filingStatus": "original",
"filedAt": "2026-07-23T17:44:46+05:30",
"xbrlUrl": "https://nsearchives.nseindia.com/corporate/xbrl/INTEGRATED_FILING_INDAS_1700136_23072026054446_WEB.xml",
"xbrlStatus": "parsed",
"xbrlTaxonomy": "INTEGRATED_FILING_INDAS",
"revenueTag": "RevenueFromOperations",
"revenue": 482110000000,
"revenueCurrency": "INR",
"revenueFormatted": "₹482.11B",
"revenueExact": "₹482,110,000,000",
"profitBeforeTax": 110280000000,
"netProfit": 77750000000,
"netProfitFormatted": "₹77.75B",
"epsBasic": 19.19,
"epsDiluted": 19.17,
"totalAssets": null,
"totalEquity": null
}
{
"recordType": "corporate_action",
"symbol": "DVL",
"companyName": "Dhunseri Ventures Limited",
"isin": "INE477B01010",
"isinSource": "equity_list",
"series": "EQ",
"purpose": "dividend",
"subject": "Dividend - Rs 1.50 Per Share",
"exDate": "2026-08-11",
"recordDate": "2026-08-11",
"amountPerShare": 1.5,
"ratio": null,
"faceValue": 10
}

(₹482.11B = ₹48,211 crore. totalAssets and totalEquity are null on this first-quarter filing because it carries no balance sheet; on Infosys's 31-March-2026 consolidated filing they are ₹1.56T and ₹932.97B.)

Fill rates (test runs of 10 September 2026; a value NSE does not publish stays null, it is never estimated):

Mode · fieldsFilledMeasured on
Announcements · symbol, company, ISIN, subject, description, announcement time100%200 newest rows of the last 7 days + 577 "dividend" rows of the last 30 days
Announcements · attached document94.5%200 newest rows — text-only disclosures have none
Announcements · industry39% / 36%same two samples — NSE fills it for some companies only
Results · revenue, total income, PBT, tax, net profit, EPS, paid-up capital100%42 filings of INFY, TCS and HDFC Bank since January 2025 — 42 of 42 XBRL files parsed
Results · total expenses67%bank filings have no such element
Results · total assets / total equity100% / 67% of March and September filingsfirst- and third-quarter filings carry no balance sheet; bank filings have no equity element
Corporate actions · identity, purpose, subject, ex-date, record date, face value100%359 actions with an ex-date in the last 30 days
Corporate actions · amount per share338 of 340 cash actionstwo Interest Payment rows state no amount
Equity list · all fields100%2,568 companies
All modes · ISIN verified against the equity list (isinSource: "equity_list")199/200 announcements · 344/359 corporate actions · 6/6 results · 2,568/2,568 companiesthe others are feed: one symbol that is not on the equity list and 15 InvIT / REIT / G-sec units

Volume and speed (default settings, 10 September 2026):

InputRowsNSE requestsRun time
Announcements, last 7 days, maxResults 20 (the prefilled input; 28 September 2026)20 (of 4,421 in the window)29 s
Announcements, last 7 days, maxResults 200200 (of 4,640 in the window)231 s
Announcements, last 30 days, keyword dividend, no limit577 (of 19,929 in the window)217 s
Financial results + XBRL for INFY, TCS, HDFCBANK since 2025-01-01424974 s
Corporate actions, last 30 days359211 s
Equity list, no limit2,56815 s

A market-wide announcements window is a single request however many rows it holds; ranges longer than 31 days are split into monthly windows. XBRL figures cost one archive download per result.

💼 Use cases

1. KYC and counterparty due diligence — check a listed counterparty's numbers and recent disclosures. Input: its NSE symbol with financial_results + includeXbrl, then announcements over the last 30 days. Output: quarterly revenue, profit and EPS with the XBRL files, plus auditor changes, resignations and credit-rating updates with the filed PDFs. Use: a documented file on the company.

2. Event monitoring — catch disclosures the day they are filed. Input: announcements with last_24_hours and a keyword such as resignation or credit rating, on a daily schedule. Output: the matching disclosures with their PDFs. Use: a Slack or email alert.

3. Dividend and corporate-action calendar — track payouts and share changes. Input: corporate_actions with last_30_days, or a custom range that ends in the future. Output: ex-dates, record dates, amount per share, bonus and rights ratios. Use: income tracking and portfolio accounting.

4. Fundamentals from the filings — quarterly P&L time series straight from the source. Input: a list of symbols with financial_results + includeXbrl. Output: one row per filing with the figures as numbers. Use: screening, research and model features.

5. Master data — map symbols to ISINs and listing dates. Input: equity_list with maxResults 0. Output: all 2,568 companies. Use: enrich or de-duplicate your own company lists.

🔗 Integration

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('foxlabs/india-listed-company-filings').call({"mode":"financial_results","symbols":["INFY","TCS"],"includeXbrl":true,"datePreset":"custom","dateFrom":"2025-01-01"});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('foxlabs/india-listed-company-filings').call(run_input={"mode":"corporate_actions","datePreset":"last_30_days"})
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item)

Written for apify-client 3 for Python, where call() returns a run object; with version 1 or 2 it returns a dict — write run['defaultDatasetId'] there.

Automation (n8n / Zapier / Make): schedule or webhook → HTTP request to the actor API with your input → handle the JSON dataset → push to a sheet, CRM or alerting channel.

📊 Pricing

Pay-per-event: one filing-record event per delivered data row (announcement, result, corporate action or company). The Actor fires this event only for data rows — error rows and the source_report summary row don't trigger it — and the XBRL download is included in the result row. View current pricing.

❓ FAQ

Do I need an NSE account, login or API key? No. The actor reads NSE's public JSON endpoints and archive files — no login, cookies or key.

Do I need a residential proxy? No — keep the default automatic Apify Proxy. In a test on 10 September 2026 NSE accepted the automatic proxy pool 10 times out of 10 but residential IPs only 5 times out of 10 (NSE's edge network refuses some IP addresses). If a run reports "NSE blocked this IP", simply start it again: every run uses a new proxy session, and the actor already retries from a fresh session before giving up (up to three attempts for NSE's equity list).

Which exchange is covered? NSE only. BSE is not covered — its site refuses non-browser access — but many large Indian companies are listed on both.

Why two rows per quarter for a company? Companies file standalone and consolidated results separately; consolidated tells them apart.

Why do older quarters come from a different feed? NSE moved to SEBI's integrated filing with the quarter ended 31 March 2025. Later quarters come from nse-integrated-filing, earlier ones from nse-financial-results; both are merged per company.

Market-wide financial results look short. NSE's integrated-filing list answers a market-wide query with its latest 20 filings only (the actor says so in the log). Pass symbols to get each company's complete history.

What units are the figures in? Absolute INR as filed (₹482,110,000,000 = ₹48,211 crore). revenue is revenue from operations for companies and interest earned for banks (revenueTag says which). Total assets and equity appear on March and September filings, which carry a balance sheet; bank filings have no equity or total-expenses element, so those stay null.

Why can the ISIN differ from the one in NSE's announcement feed? After a share split NSE issues a new ISIN, but its filing feeds keep the old one for about one company in five (measured on 10 September 2026). The actor returns the current ISIN from NSE's official equity list and marks it isinSource: "equity_list". If that list can't be loaded in a run (it is tried three times), the rows keep the feed's ISIN, marked isinSource: "feed", and the run adds a degraded summary row.

How many announcements should I expect? 4,640 were filed in the 7 days to 10 September 2026 and 19,929 in the 30 days to that date. On full weekdays from 1 to 9 September 2026 NSE carried 583–877 announcements a day; Saturday 5 September had 553 and Sunday 6 September 96. A market-wide window is a single request however many rows it holds.

Can I search by company name? Use the NSE symbol. If you type a name, the error row suggests the symbol — INFOSYS gets "Did you mean INFY (Infosys Limited)?" — and equity_list with a keyword finds it too.

Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.

🐛 Troubleshooting

  • 0 rows — widen the date range, drop the keyword or check the symbol; the source_report row states the reason.
  • Error row "Symbol … is not on NSE's official equity list" — you passed a company name, a BSE code or an SME / debt-only symbol; use the NSE equity symbol (the row suggests one when it can).
  • xbrlStatus is missing, fetch_failed or parse_failed — NSE lists the result without a usable XBRL file; the result row is still delivered.
  • "NSE blocked this IP" — run again on the default proxy (see the FAQ); rows collected before the refusal are still in the dataset.
  • A degraded summary row — NSE refused its equity list three times in that run: the rows are there, but their ISINs are the feeds' own (isinSource: "feed", possibly pre-split) and symbols were not validated. Run again for verified ISINs.
  • The prefilled input returns only the 20 newest announcements — announcements come newest first and the prefill stops at 20 rows; raise maxResults or set it to 0 for the whole window.

⚠️ Trademark

Independent tool built on disclosures published by the National Stock Exchange of India. Not affiliated with or endorsed by NSE, BSE, SEBI or any listed company. Company names and "NSE" belong to their owners and are used for identification only.

This actor reads corporate disclosures that listed companies file publicly with NSE — from NSE's public, cookie-less JSON endpoints and its archive of the filed documents, at a polite rate (at least 700 ms between requests, no HTML pages, no cookie or fingerprint tricks). NSE's website terms restrict systematic automated data collection, so you are responsible for how you use the data and for your own compliance; market data (prices, trades, indices) is deliberately not included — NSE licenses it separately. Results can contain personal data (e.g. a director's name in a disclosure); personal data is protected by the GDPR, India's DPDP Act and similar laws, so only process it with a legitimate basis. See Apify's blog post on the legality of web scraping.

🤝 Support & contact

Changelog

0.1.6 — 2026-10-08 — README: the Python example works with the current Apify client

  • The README's Python example read the results with run['defaultDatasetId']. With the current Apify client for Python (version 3) call() returns a run object, not a dict, and that line raised TypeError: 'Run' object is not subscriptable — after the run itself had finished. The example now reads run.default_dataset_id; with client version 1 or 2, keep run['defaultDatasetId']. Checked with apify-client 3.2.1, 2.5.1 and 1.12.2.
  • No code, output field or pricing change.

0.1.5 — 2026-09-28

  • The input form starts at 20 announcements (was 200), so a first run costs about $0.08 instead of $0.80; an API call without maxResults still gets 500. The filingId and filingSource descriptions now say they belong to financial results.

0.1 — 2026-09-10

  • Initial release: announcements, financial_results (integrated and legacy feeds, optional XBRL key figures), corporate_actions and equity_list from NSE's public JSON endpoints and archive files. Current ISIN from NSE's equity list with isinSource on every row, three attempts at the equity list and a degraded summary row when it still fails, symbol validation with suggestions, explicit empty / blocked / invalid-input summary rows, default automatic Apify Proxy, one filing-record event per data row.