Have you ever seen a stock suddenly jump 8–10% and wondered why?
Often, the answer lies in corporate announcements—news shared by companies through exchanges like NSE. These can be anything from an FDA approval, a big order win, or a stake sale.
Wouldn’t it be useful if we could track such announcements automatically?
This notebook shows you how to fetch real-time corporate announcements from NSE using Python, and how you might use them to identify potential trading or investment opportunities.
We’ll use the excellent jugaad-data library. It’s a lightweight tool that gives access to NSE data, including stock quotes, historical prices, and—you guessed it—corporate announcements.
$ python -m venv env
$ source env/bin/activate # for linux
$ env/script/activate # for windows
$ pip install jugaad-data
Once we’ve installed the jugaad-data
library, the next step is to use the NSELive
class to fetch announcements.
By default, it gives us the latest 20 announcements made by any company listed on the NSE.
from jugaad_data.nse import NSELive
from datetime import date
n = NSELive()
announcements = n.corporate_announcements()
len(announcements)
20
announcements[0]
{'symbol': 'METROPOLIS',
'desc': 'Change in Directors/ Key Managerial Personnel/ Auditor/ Compliance Officer/ Share Transfer Agent',
'dt': '19072025115226',
'attchmntFile': 'https://nsearchives.nseindia.com/corporate/xbrl/CIM_60218_1487462_19072025115225_WEB.xml',
'sm_name': 'Metropolis Healthcare Limited',
'sm_isin': 'INE112L01020',
'an_dt': '19-Jul-2025 11:52:26',
'sort_date': '2025-07-19 11:52:26',
'seq_id': '106305166',
'smIndustry': None,
'orgid': None,
'attchmntText': 'METROPOLIS HEALTHCARE LIMITED has informed the Exchange about Change in Directors/ Key Managerial Personnel/ Auditor/ Compliance Officer/ Share Transfer Agent',
'bflag': None,
'old_new': None,
'csvName': None,
'exchdisstime': '19-Jul-2025 11:52:27',
'difference': '00:00:01',
'fileSize': '3 KB'}
To filter the announcements, you can pass from_date
, to_date
and symbol
ola_announcements = n.corporate_announcements(from_date=date(2025,7,1),
to_date=date(2025,7,19),
symbol="OLAELEC")
announcements[-1]
{'symbol': 'LMW',
'desc': 'Press Release',
'dt': '19072025101809',
'attchmntFile': 'https://nsearchives.nseindia.com/corporate/LAXMIMACH_19072025101722_FILINGMEDIARELEASE19072025.pdf',
'sm_name': 'LMW Limited',
'sm_isin': 'INE269B01029',
'an_dt': '19-Jul-2025 10:18:09',
'sort_date': '2025-07-19 10:18:09',
'seq_id': '106305143',
'smIndustry': None,
'orgid': None,
'attchmntText': 'LMW Limited has informed the exchange regarding the Media Release under Regulation 30 of SEBI (Listing Obligations and Disclosure Requirements) Regulations, 2015',
'bflag': None,
'old_new': None,
'csvName': None,
'exchdisstime': '19-Jul-2025 10:18:10',
'difference': '00:00:01',
'fileSize': '1.05 MB'}
There are a lot of announcements which dont move the share price, so let’s build a simple keyword based filter for eliminating spam.
def filter_spam(row):
"""
Filter out spam announcements based on specific keywords in the 'desc' field.
"""
spam_keywords = [
'trading window', 'trading window-xbrl', 'disclosure under sebi takeover regulations',
'shareholders meeting', 'copy of newspaper publication', 'clarification - financial results',
'change in directors', 'key managerial personnel', 'compliance officer',
'share transfer agent', 'press release', 'outcome of board meeting', 'board meeting intimation',
'notice of shareholders meetings-xbrl', 'alteration of capital and fund raising-xbrl',
'record date', 'appointment', 'esop', 'esos', 'esps', 'acquisition-xbrl', 'change in management',
'change in director', 'spurt in volume', 'allotment of securities', 'action(s) taken or orders passed',
'update-acquisition/scheme/sale/disposal-xbrl', 'action(s) initiated or orders passed',
'reply to clarification- financial results', 'amendment to aoa/moa', 'incorporation-xbrl',
'change in company secretary', 'sale or disposal-xbrl', 'resignation of independent director',
'sale or disposal', 'committee meeting updates', 'loss/duplicate-share certificate-xbrl',
'outcome of board meeting-xbrl', 'scheme of arrangement', 'issue of securities',
'loss of share certificates', 'news verification', 'options to purchase securities', 'others',
'demise', 'retirement', 'dividend', 'incorporation', 'price movement', 'slump sale-xbrl',
'reasons for delayed/non-submission of financial results', 'other restructuring-xbrl', 'bonus',
'certificate under sebi (depositories and participants) regulations, 2018', 'press release (revised)',
'isd for buyback-tender offer', 'forfeiture', 'post buyback public announcement',
'appointment', 'esop', 'esos', 'esps', 'bonus', 'dividend', 'incorporation', 'retirement',
'demise', 'others', 'committee meeting updates', 'price movement', 'spurt in volume',
'news verification', 'options to purchase securities', 'loss of share certificates',
'loss/duplicate-share certificate-xbrl', 'certificate under sebi', 'board meeting',
'board meeting scheduled', 'meeting of the board', 'meeting of board of directors',
'meeting of board of directors scheduled', 'board meeting scheduled', 'board meeting to be held on',
'schedule of meet', 'press release', 'clarification', 'outcome of board meeting',
'appointment', 'change in management', 'change in director', 'change in directors',
'change in company secretary', 'change in compliance officer', 'change in auditor',
'change in key managerial personnel', 'change in share transfer agent', 'change in director(s)'
]
desc = str(row.get('desc', '')).lower()
return not any(keyword in desc for keyword in spam_keywords)
Below are some of the announcements like investor meet, credit rating update, Litigation, Order win etc are important for companies future and share price
filtered_list = filter(filter_spam, announcements)
list(filtered_list)
[{'symbol': 'IXIGO',
'desc': 'Analysts/Institutional Investor Meet/Con. Call Updates',
'dt': '19072025114527',
'attchmntFile': 'https://nsearchives.nseindia.com/corporate/IXIGO_19072025114506_Announcement_Reg_30_Schedule_of_Analyst_Investor_Meeting_23072025.pdf',
'sm_name': 'Le Travenues Technology Limited',
'sm_isin': 'INE0HV901016',
'an_dt': '19-Jul-2025 11:45:27',
'sort_date': '2025-07-19 11:45:27',
'seq_id': '106305164',
'smIndustry': None,
'orgid': None,
'attchmntText': 'Le Travenues Technology Limited has informed the Exchange about Schedule of Analyst / Investor Meeting to be held on July 23, 2025',
'bflag': None,
'old_new': None,
'csvName': None,
'exchdisstime': '19-Jul-2025 11:45:29',
'difference': '00:00:02',
'fileSize': '208 KB'},
{'symbol': 'LINC',
'desc': 'Credit Rating',
'dt': '19072025114207',
'attchmntFile': 'https://nsearchives.nseindia.com/corporate/DIPANKARDE_19072025114128_Credit_Rating_S.pdf',
'sm_name': 'Linc Limited',
'sm_isin': 'INE802B01019',
'an_dt': '19-Jul-2025 11:42:07',
'sort_date': '2025-07-19 11:42:07',
'seq_id': '106305161',
'smIndustry': None,
'orgid': None,
'attchmntText': 'Linc Limited has informed the Exchange about Credit Rating',
'bflag': None,
'old_new': None,
'csvName': None,
'exchdisstime': '19-Jul-2025 11:42:08',
'difference': '00:00:01',
'fileSize': '203 KB'},
{'symbol': 'BAJEL',
'desc': 'General Updates',
'dt': '19072025113032',
'attchmntFile': 'https://nsearchives.nseindia.com/corporate/BAJEL_19072025112841_IntimationofNewspaperAdv_Sd.pdf',
'sm_name': 'Bajel Projects Limited',
'sm_isin': 'INE0KQN01018',
'an_dt': '19-Jul-2025 11:30:32',
'sort_date': '2025-07-19 11:30:32',
'seq_id': '106305154',
'smIndustry': None,
'orgid': None,
'attchmntText': 'Bajel Projects Limited has informed the Exchange about the Newspaper publication under Regulation 30 of the SEBI Listing Regulations.',
'bflag': None,
'old_new': None,
'csvName': None,
'exchdisstime': '19-Jul-2025 11:30:33',
'difference': '00:00:01',
'fileSize': '8.25 MB'},
{'symbol': 'SMARTWORKS',
'desc': 'Pendency of Litigation(s)/dispute(s) or the outcome impacting the Company',
'dt': '19072025102634',
'attchmntFile': 'https://nsearchives.nseindia.com/corporate/SMARTWORKS_19072025102615_Disclosure_Reg_30_ScheduleIII.pdf',
'sm_name': 'Smartworks Coworking Spaces Limited',
'sm_isin': 'INE0NAZ01010',
'an_dt': '19-Jul-2025 10:26:34',
'sort_date': '2025-07-19 10:26:34',
'seq_id': '106305144',
'smIndustry': None,
'orgid': None,
'attchmntText': 'Smartworks Coworking Spaces Limited has informed the Exchange about Pendency of Litigation(s)/dispute(s) or the outcome impacting the Company',
'bflag': None,
'old_new': None,
'csvName': None,
'exchdisstime': '19-Jul-2025 10:26:35',
'difference': '00:00:01',
'fileSize': '1.18 MB'}]