# BSE Corporate Announcements API – Filings, Actions & Bulk Deals (`data_daemon/bse-corporate-announcements`) Actor

BSE India corporate filings as JSON: announcements with category, subject, summary and PDF link, corporate actions (dividend, bonus, split ex-dates), board meetings, results calendar, bulk and block deals. Scrip code, symbol and ISIN (equities) per row. Category filters, only-new feed. $3 per 1,000.

- **URL**: https://apify.com/data_daemon/bse-corporate-announcements.md
- **Developed by:** [Daemon Data](https://apify.com/data_daemon) (community)
- **Categories:** Developer tools, Agents
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 1,000 filing rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## BSE Corporate Announcements API – Filings, Actions & Bulk Deals

**BSE India corporate filings as a JSON feed: announcements, corporate actions, board meetings, the results calendar, and bulk and block deals.** Every filing listed companies submit to [BSE (Bombay Stock Exchange)](https://www.bseindia.com/corporates/ann.html), with scrip code, symbol, company, BSE's category and subcategory, the ISIN where BSE lists one, the subject line, the summary text, the attached PDF link and the broadcast time in India time. Built for brokers' apps, fintech dashboards, alert and newsletter builders, analysts and AI agents that need the filings as rows instead of a web page. Filter by company, category or keyword, pull a date range, or schedule it with `onlyNew` and receive each filing once.

```bash
curl -X POST "https://api.apify.com/v2/acts/data_daemon~bse-corporate-announcements/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"reports": ["announcements"], "daysBack": 0, "maxItems": 0}'
```

Checked on 10 November 2026: BSE carried **13,616 equity announcements for 2-9 November** (1,733 to 3,114 on each weekday of 2-6 November) and 26,652 for October; 2,456 corporate actions with a 2026 ex-date; 1,745 forthcoming result dates; 11,195 board meetings for January-June; 14,279 bulk-deal rows for 1 January-10 November; announcements go back to at least 2005. Read live from BSE on every run.

$3 per 1,000 rows ($0.003 per row). No start fee, no subscription.

### What teams run, and what it costs

| You are | You run | Cost |
|---|---|---|
| Alert or newsletter builder | Daily: `reports: ["announcements"]`, `categories: ["Dividend", "Bonus", "Award of Order", "Acquisition"]`, `onlyNew: true` | cents a day (a few dozen rows) |
| Portfolio or watchlist app | `symbols: ["RELIANCE", "TCS", "500180"]`, `reports: ["announcements", "corporateActions", "boardMeetings"]`, `onlyNew: true` | a large company files about 15 announcements a month: 20 companies, about $1 per month |
| Fintech dashboard / broker app | The whole market every day: `daysBack: 2`, `onlyNew: true`, `maxItems: 0` | October 2026 had 26,652 announcements: $79.96 |
| Dividend and ex-date calendar | `reports: ["corporateActions"]`, `daysAhead: 30` | 88 rows on 10 November 2026: $0.26 per pull |
| Results-season tracker | `reports: ["resultsCalendar", "boardMeetings"]`, `onlyNew: true` | 1,745 result dates on 10 November 2026: $5.24 once, then only new dates |
| Deal tracker (who bought, who sold) | `reports: ["deals"]`, `onlyNew: true` | October 2026: 1,113 bulk and 46 block rows, $3.48 |
| Analyst backfill | `fromDate` / `toDate`, `maxItems: 0` | one busy day (5 November 2026, 3,114 rows): $9.34 |
| Developer / AI agent | A sample: the default input returns the 50 newest announcements | $0.15 |

Export JSON, CSV or Excel, connect by API, webhook, Google Sheets, Make or n8n, or ask an AI agent through the Apify MCP server.

### What does the BSE announcements API return?

Five reports, chosen with `reports`. Each row carries its `reportType`.

| Report | What it is | Window |
|---|---|---|
| `announcements` (default) | Every corporate announcement: financial results, board meeting intimations and outcomes, press releases, investor presentations, earnings-call transcripts, order wins, dividends and record dates, management changes, credit ratings, insider-trading and takeover disclosures. Category, subcategory, subject, summary, PDF link and size, broadcast time, BSE's "critical" flag. | last `daysBack` days, newest first |
| `corporateActions` | Dividends, bonus issues, splits, rights, buybacks and InvIT/REIT distributions with ex-date, record date and no-delivery period. The purpose text is also parsed into `actionType`, `amountPerShare`, `ratio`, `faceValueFrom` / `faceValueTo`. | next `daysAhead` days by ex-date, soonest first |
| `boardMeetings` | Meeting date, purpose (quarterly results, dividend, preferential issue, buyback), industry and when the meeting was announced. | next `daysAhead` days, soonest first |
| `resultsCalendar` | BSE's list of forthcoming financial results: company and result date. | from today, next `daysAhead` days |
| `deals` | Bulk deals and block deals: client, buy or sell, quantity, price, value. | last `daysBack` days, newest first |

`fromDate` and `toDate` replace the windows for every report.

### Why use this instead of the BSE website

- **Rows, not pages.** BSE shows filings in browser tables, 50 to a page, and the whole market only one day at a time. This Actor walks the pages and returns the same public data as clean JSON with ISO dates in India time, numbers as numbers and stable field names.
- **Symbol and ISIN on the row.** BSE's filing tables identify a company by scrip code. Each row here also carries the BSE symbol and, for securities in BSE's list of active equity securities, the ISIN and the BSE group (A, B, X, T, M for SME ...), so the feed joins to prices, holdings or an NSE feed without a mapping table. Of the 3,114 equity announcements of 5 November 2026, all carried a symbol and 3,035 an ISIN.
- **A feed that delivers each filing once.** With `onlyNew` the Actor remembers what it delivered. Schedule it with `daysBack: 2`: a filing broadcast late at night is still picked up next morning, and nothing is delivered or charged twice.
- **Filter before you pay.** `symbols`, `categories` and `keywords` are applied before rows are saved, so a watchlist or a "dividends only" feed costs cents.
- **Parsed corporate actions.** "Interim Dividend - Rs. - 24.0000" becomes `actionType: "dividend"`, `amountPerShare: 24`; "Bonus issue 1:1" becomes `ratio: "1:1"`; a split carries the old and new face value.

### NSE and BSE: which one?

Most large Indian companies are listed on both exchanges and file the same announcement with each, so for a large-cap watchlist either feed works. They differ at the edges:

- **Coverage.** BSE lists more companies. On 10 November 2026 its list of securities had 5,269 active equity scrips, and on 5 November BSE carried 3,114 equity announcements against 1,530 on NSE (13,616 against 6,933 for 2-9 November). Small caps listed only on BSE and the companies of the BSE SME platform appear only here.
- **Reports.** This Actor has announcements, corporate actions, board meetings, the results calendar and bulk/block deals. The [NSE Corporate Announcements API](https://apify.com/data_daemon/nse-corporate-announcements) also has credit ratings, shareholding patterns, IPO offer documents and short-selling quantities, which this one does not.
- **Detail per row.** BSE files each announcement under a category and a subcategory and gives a subject line; NSE gives one subject and, for some filings, a longer summary and an XBRL flag.
- **Speed of a backfill.** NSE returns a date range of the whole market in one request (6,933 rows for 2-9 November 2026). BSE serves the whole market one day per query and 50 rows per request, so the same backfill takes longer here (a single company's year is quick on both).

Both Actors take the same input names (`reports`, `symbols`, `categories`, `keywords`, `daysBack`, `daysAhead`, `fromDate`, `toDate`, `maxItems`, `onlyNew`, `stateName`) and share output field names where the meaning is the same, so one saved input can drive both and the two datasets stack. Join them on `isin`; a company's BSE and NSE symbols are usually, not always, the same.

### How to use it

1. Click **Try for free**. The default input returns the 50 newest BSE announcements (about $0.15).
2. Pick the **Reports** you need and, if you follow specific companies, add their BSE **scrip codes, symbols or ISINs**.
3. Narrow announcements with **Categories** (BSE's category or subcategory, for example `Result`, `Board Meeting`, `Dividend`, `Credit Rating`, `Press Release`) or **Keywords** found in the subject and summary text.
4. Choose the dates: **Days back** for announcements and deals, **Days ahead** for ex-dates, meetings and result dates, or **From date** / **To date** for a backfill. Set **Maximum rows per report** to `0` for everything.
5. For a daily feed, schedule the run with **Only new rows** on. The first run delivers the window, later runs only what is new.

### Input

```json
{
    "reports": ["announcements", "corporateActions"],
    "symbols": ["RELIANCE", "TCS", "500180"],
    "categories": [],
    "keywords": [],
    "daysBack": 2,
    "daysAhead": 30,
    "maxItems": 0,
    "onlyNew": true,
    "stateName": "watchlist-1"
}
```

| Field | What it does |
|---|---|
| `reports` | One or more of `announcements`, `corporateActions`, `boardMeetings`, `resultsCalendar`, `deals`. Default `["announcements"]`. `eventCalendar` is accepted as another name for `resultsCalendar`. |
| `symbols` | BSE scrip codes (`500325`), BSE symbols (`RELIANCE`) or ISINs to keep. Empty = the whole market. With up to 25 companies, announcements and corporate actions are read per company, so a long history for a watchlist is a small run. |
| `categories` | Keep rows whose category, subcategory or purpose contains one of these words (case-insensitive). |
| `keywords` | Keep rows whose company, symbol, scrip code, category, subject or summary text contains one of these words. |
| `daysBack` | Announcements and deals: days before today (India time) to read, today included. Default 2. |
| `daysAhead` | Corporate actions, board meetings, results calendar: days after today to read. Default 30. |
| `fromDate`, `toDate` | `YYYY-MM-DD` range for every selected report. |
| `segments` | For announcements: `equities` (default; includes the SME platform and InvITs/REITs), `debt`, `mf` (mutual funds and ETFs). |
| `dealTypes` | `bulk`, `block` (default: both). |
| `maxItems` | Maximum rows per report. Default 50; `0` = no limit. |
| `onlyNew`, `stateName` | Deliver only rows not delivered before under this state name. |
| `proxyConfiguration` | Optional; BSE answers Apify datacenter IPs without a proxy. |

Unknown values never fail a run: they are skipped and listed in the run's status message.

### Output

An announcement:

```json
{
    "reportType": "announcements",
    "exchange": "BSE",
    "id": "72b7099e-aceb-4bdf-a0e9-7ebd882429c7",
    "segment": "equities",
    "scripCode": "544336",
    "symbol": "QUADFUTURE",
    "company": "Quadrant Future Tek Ltd",
    "isin": "INE0LRY01011",
    "group": "B",
    "category": "Board Meeting",
    "subcategory": "Outcome of Board Meeting",
    "subject": "Board Meeting Outcome for Outcome Of The Board Meeting Held On November 10, 2026",
    "summary": "Outcome of the Board meeting held on November 10, 2026 for consideration and approval of unaudited financial results for the Quarter and Half year ended September 30, 2026",
    "attachmentUrl": "https://www.bseindia.com/xml-data/corpfiling/AttachLive/0fcd380f-0940-4734-9a4c-5943b741b4d3.pdf",
    "attachmentSize": "3.36 MB",
    "attachmentSizeKb": 3440.55,
    "date": "2026-11-10",
    "broadcastAt": "2026-11-10T17:33:01+05:30",
    "submittedAt": "2026-11-10T17:32:59+05:30",
    "disseminatedAt": "2026-11-10T17:33:01+05:30",
    "companyUrl": "https://www.bseindia.com/stock-share-price/quadrant-future-tek-ltd/quadfuture/544336/",
    "source": "BSE Ltd (bseindia.com corporate filings)",
    "scrapedAt": "2026-11-10T12:04:07.367Z"
}
```

A corporate action and a block deal:

```json
[
    {
        "reportType": "corporateActions",
        "exchange": "BSE",
        "scripCode": "519183",
        "symbol": "ADFFOODS",
        "company": "Adf Foods Ltd",
        "isin": "INE982B01027",
        "group": "B",
        "purpose": "Interim Dividend - Rs. - 0.6000",
        "actionType": "dividend",
        "amountPerShare": 0.6,
        "exDate": "2026-11-11",
        "recordDate": "2026-11-11",
        "noDeliveryStart": "2026-11-11",
        "noDeliveryEnd": "2026-11-11",
        "daysToExDate": 1,
        "companyUrl": "https://www.bseindia.com/stock-share-price/adf-foods-ltd/adffoods/519183/"
    },
    {
        "reportType": "deals",
        "exchange": "BSE",
        "dealType": "block",
        "date": "2026-11-06",
        "scripCode": "544600",
        "symbol": "LENSKART",
        "company": "Lenskart Solutions Ltd",
        "isin": "INE956O01016",
        "group": "B",
        "clientName": "SVF II LIGHTBULB (CAYMAN) LIMITED",
        "side": "SELL",
        "quantity": 4744000,
        "price": 697.15,
        "valueInr": 3307279600
    }
]
```

Main fields by report:

| Report | Fields |
|---|---|
| `announcements` | `id`, `segment`, `scripCode`, `symbol`, `company`, `isin`, `group`, `category`, `subcategory`, `subject`, `summary`, `detailedSummary`, `attachmentUrl`, `attachmentSize`, `attachmentSizeKb`, `audioVideoUrl`, `isCritical`, `date`, `broadcastAt`, `submittedAt`, `disseminatedAt`, `companyUrl` |
| `corporateActions` | `scripCode`, `symbol`, `company`, `isin`, `group`, `purpose`, `actionType`, `amountPerShare`, `ratio`, `faceValueFrom`, `faceValueTo`, `exDate`, `recordDate`, `bookClosureStart`, `bookClosureEnd`, `noDeliveryStart`, `noDeliveryEnd`, `paymentDate`, `daysToExDate`, `companyUrl` |
| `boardMeetings` | `scripCode`, `symbol`, `company`, `isin`, `group`, `industry`, `meetingDate`, `purpose`, `broadcastAt`, `daysToMeeting`, `companyUrl` |
| `resultsCalendar` | `scripCode`, `symbol`, `company`, `isin`, `group`, `eventDate`, `purpose`, `daysToEvent`, `companyUrl` |
| `deals` | `dealType`, `date`, `scripCode`, `symbol`, `company`, `isin`, `group`, `clientName`, `side`, `quantity`, `price`, `valueInr`, `remarks`, `companyUrl` |

Every row also has `exchange` (`BSE`), `source` and `scrapedAt`; only-new runs add `changeType` (`new`). Times are India Standard Time with the `+05:30` offset. A field BSE leaves empty is omitted. You can download the dataset as JSON, CSV, Excel, XML or HTML.

### How much does it cost to get BSE announcements and filings?

$0.003 per row, for every report. There is no start fee and no monthly fee, and a run that finds nothing new costs nothing.

- The default run (50 newest announcements): $0.15.
- A watchlist of 20 large companies, announcements plus corporate actions, daily with `onlyNew`: about 300 rows a month, around $1.
- Every equity announcement, daily: October 2026 had 26,652 rows, $79.96; the results-season week of 2-9 November had 13,616, $40.85.
- All corporate actions with an ex-date in 2026 (2,456 rows): $7.37.
- Bulk and block deals for October 2026 (1,159 rows): $3.48.

Set a maximum cost per run in the run options and the Actor stops cleanly at that amount.

### Tips

- **Daily feed:** `daysBack: 2`, `onlyNew: true`, `maxItems: 0`, scheduled once or several times a day. The overlap catches late filings; delivered rows are skipped for free.
- **Intraday alerts:** schedule every 15-30 minutes with `daysBack: 0` and `onlyNew: true`; each run returns only the filings broadcast since the previous one.
- **One feed per use:** give each schedule its own `stateName` (for example `dividends`, `watchlist-a`) so their memories stay separate.
- **Categories are BSE's own.** The nine categories are `AGM/EGM`, `Board Meeting`, `Company Update`, `Corp. Action`, `Insider Trading / SAST`, `New Listing`, `Result`, `Integrated Filing`, `Others`. Common subcategories: `Financial Results`, `Outcome of Board Meeting`, `Analyst / Investor Meet`, `Earnings Call Transcript`, `Press Release / Media Release`, `Investor Presentation`, `Credit Rating`, `Dividend`, `Record Date`, `Acquisition`, `Award of Order / Receipt of Order`, `Change in Management`. A filter word matches any category or subcategory that contains it.
- **SME companies** are in the `equities` segment; their rows carry `group` `M` or `MT`.
- **Backfills** of the whole market read one day at a time, 50 rows per request: the 3,114 announcements of 5 November 2026 took 80 seconds. Raise the run timeout for multi-month pulls, or pass `symbols` to read companies directly (up to 12 months per request; three companies since 1 July, 203 rows, took 22 seconds).
- **Deals** are published by BSE after the trading day, so a run during market hours returns deals up to the previous trading day.
- **The results calendar** lists forthcoming dates only; for past meetings use `boardMeetings` with `fromDate` / `toDate`.

### FAQ

**Is there an official BSE API for corporate announcements?** BSE does not offer a free developer API for these filings. It shows them on its website and sells licensed data products. This Actor reads the public filing pages' data and returns it as JSON, CSV or Excel through the Apify API.

**How fresh is the data?** Each run reads BSE at that moment, so a filing is available as soon as BSE lists it. `broadcastAt`, `submittedAt` and `disseminatedAt` are BSE's own timestamps.

**Does it include NSE?** No. Rows come from BSE only. For NSE use the [NSE Corporate Announcements API](https://apify.com/data_daemon/nse-corporate-announcements); the two share input and output names.

**Can I use NSE symbols?** `symbols` takes BSE scrip codes, BSE symbols and ISINs. For companies listed on both exchanges the symbols are usually the same (`RELIANCE`, `TCS`, `HDFCBANK`); the ISIN always is. A value BSE does not know is skipped and named in the run's status message.

**Does it download the PDF?** It returns the link (`attachmentUrl`) and the file size. The text BSE publishes with each filing is in `subject` and `summary`; for some filings BSE also publishes a longer text, returned as `detailedSummary`.

**Why are some fields missing on a row?** BSE leaves them empty, or the security is not in BSE's list of active equity securities (debt and mutual-fund scrips, some newly listed or suspended companies), in which case `isin` and `group` are absent. E-mail addresses and phone numbers typed into a summary are masked.

**How far back can I go?** Announcements are served back to at least 2005 (checked for 15 June 2005, 2012 and 2020), one day per query for the whole market or 12 months per request for a company.

**What does `onlyNew` remember?** The ids of delivered rows, per report and month, in a named key-value store in your account (`bse-filings-only-new`). Delete a state record or use a new `stateName` to start over.

**Is it legal?** These are regulatory disclosures that listed companies publish for investors on the exchange's public website. The data is provided for information only and is not investment advice; you are responsible for how you use it and for BSE's terms of use.

**Something wrong or missing?** Open an issue on the Issues tab with the input you used.

### Related Actors by Daemon Data

- [NSE Corporate Announcements API](https://apify.com/data_daemon/nse-corporate-announcements) – the same feeds from the National Stock Exchange, plus credit ratings, shareholding patterns and offer documents
- [India IPO Tracker API](https://apify.com/data_daemon/india-ipo-tracker) – live GMP, subscription status, IPO calendar and listing performance, mainboard and SME
- [Indian Stock Market API (Tickertape)](https://apify.com/data_daemon/tickertape-stocks-scraper) – NSE/BSE fundamentals, shareholding and screener
- [India New Company Registrations](https://apify.com/data_daemon/india-new-company-registrations) – companies incorporated in India each day (MCA register)
- [Dubai DLD Property Transactions API](https://apify.com/data_daemon/dubai-property-transactions) – Dubai Land Department sales, mortgages and gifts
- All Actors by [Daemon Data](https://apify.com/data_daemon)

# Actor input Schema

## `reports` (type: `array`):

Which BSE filing feeds to read. Each row carries its `reportType`. `announcements` (default): every corporate announcement with category, subcategory, subject, summary text and PDF link (1,700-3,100 on a weekday in results season). `corporateActions`: dividends, bonus, splits, rights and buybacks by ex-date. `boardMeetings`: meeting date and purpose. `resultsCalendar`: forthcoming financial-result dates. `deals`: bulk and block deals with client, side, quantity and price.

## `symbols` (type: `array`):

Companies to keep: BSE scrip codes (`500325`), BSE symbols (`RELIANCE`, `TCS`, `HDFCBANK`) or ISINs (`INE002A01018`), mixed freely. Empty = the whole market. With up to 25 companies the announcements and corporate actions are read per company, so a year of history for a watchlist is a small run.

## `categories` (type: `array`):

Keep rows whose category contains one of these words (case-insensitive). For announcements this matches BSE's category and subcategory, for example `Result`, `Board Meeting`, `Corp. Action`, `Dividend`, `Credit Rating`, `Press Release`, `Investor Presentation`, `Acquisition`, `Award of Order`, `Insider Trading`, `AGM`. For corporate actions and board meetings it is the purpose (`Dividend`, `Bonus`, `Split`, `Quarterly Results`, `Preferential Issue`). Empty = all.

## `keywords` (type: `array`):

Keep rows whose company name, symbol, scrip code, category, subject or summary text contains one of these words (case-insensitive), for example `order`, `preferential`, `QIP`, `demerger`. Empty = all.

## `daysBack` (type: `integer`):

For announcements and deals: how many days before today (India time) to read, today included. `0` = today only, `2` (default) = today and the two days before. Ignored when From date is set.

## `daysAhead` (type: `integer`):

For corporate actions (ex-dates), board meetings and the results calendar: how many days after today to read, soonest first. Default 30. Ignored when To date is set.

## `fromDate` (type: `string`):

First day (YYYY-MM-DD, India time) for every selected report. Use with To date for a backfill. BSE serves whole-market announcements one day at a time, 50 per request: a day of 3,114 rows took 80 seconds (checked 10 Nov 2026), so allow about half a minute per 1,000 rows.

## `toDate` (type: `string`):

Last day (YYYY-MM-DD, India time). Empty = today for announcements and deals, today + Days ahead for calendars.

## `segments` (type: `array`):

For the `announcements` report. `equities` (default) covers listed companies, including the BSE SME platform (those rows carry `group` M or MT) and InvITs/REITs. `debt` is filings by issuers of listed debt, `mf` is mutual funds and ETFs; both are large daily lists.

## `dealTypes` (type: `array`):

For the `deals` report: bulk deals and block deals (client, buy or sell, quantity, price). Default: both.

## `maxItems` (type: `integer`):

Stop each report after this many rows (newest first for announcements and deals, soonest first for calendars). `0` = no limit. Each row costs $0.003, so the default 50 rows cost $0.15.

## `onlyNew` (type: `boolean`):

Remember what was delivered and return only rows that are new since the last run with the same state name. Rows already delivered are skipped and not charged again, so a scheduled run with Days back 2 never misses a late filing and never bills one twice.

## `stateName` (type: `string`):

Name of the only-new memory. Use a different name for each independent feed (for example one per watchlist). Letters, digits, dash and underscore.

## `proxyConfiguration` (type: `object`):

Optional. BSE answers Apify datacenter IPs without a proxy (checked 10 Nov 2026), so none is used by default.

## Actor input object example

```json
{
  "reports": [
    "announcements"
  ],
  "symbols": [],
  "categories": [],
  "keywords": [],
  "daysBack": 2,
  "daysAhead": 30,
  "segments": [
    "equities"
  ],
  "dealTypes": [
    "bulk",
    "block"
  ],
  "maxItems": 50,
  "onlyNew": false,
  "stateName": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Announcements, corporate actions, board meetings, result dates and bulk/block deals as JSON items in the default dataset (also downloadable as CSV, Excel, XML). Each item carries its reportType.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "reports": [
        "announcements"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_daemon/bse-corporate-announcements").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "reports": ["announcements"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_daemon/bse-corporate-announcements").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "reports": [
    "announcements"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_daemon/bse-corporate-announcements --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data_daemon/bse-corporate-announcements"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/86mVYH25XQi6IcJn7/builds/paztOEmHpiOPfWhRK/openapi.json
