# Taiwan Corporate Action Prices — 減資分割參考價 API (`chamarix/taiwan-corporate-action-prices`) Actor

Every point at which a Taiwan share price legitimately jumps without the company changing: capital reductions, par value changes and ETF splits, back to 2011. Fourteen official tables joined into one adjustment factor per event, every price re-derived and checked.

- **URL**: https://apify.com/chamarix/taiwan-corporate-action-prices.md
- **Developed by:** [chris](https://apify.com/chamarix) (community)
- **Categories:** AI, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Taiwan Corporate Action Prices (減資／面額變更／ETF分割參考價) API

**Every point at which a Taiwan share price legitimately jumps** without the company being worth a dollar more or less — as structured JSON, both boards, back to **2011**.

On 2025-06-18 元大台灣50 (0050) closed at **188.65** and reopened at **47.16**. Nothing happened to the fund. It split four for one, and any price series that does not know that has a 75% crash in it.

This Actor is the official list of those moments, and the **adjustment factor** for each one.

### The four events, and why they are one dataset

| Event | What changes | Typical effect on the price |
|---|---|---|
| **減資 Capital reduction** | Share count falls; sometimes cash comes back | Usually up — but *down* when the cash returned outweighs it |
| **變更股票面額 Par value change** | Par value changes, share count moves inversely | Down when par is cut (the usual direction since 2014) |
| **ETF分割 ETF split** | Units multiply | Down |
| **ETF反分割 ETF reverse split** | Units contract | Up |

Taiwan publishes these in **fourteen separate tables** across two exchanges, under four different column vocabularies, with no shared key and no joined view anywhere. This Actor reads all fourteen and emits one row per event, in one shape.

### Why this data matters

- **It is the missing piece of every Taiwan price history.** Daily quote feeds — including [taiwan-stock-daily-quotes](https://apify.com/chamarix/taiwan-stock-daily-quotes) — publish raw closes. Splice them naively across one of these events and your return series is wrong by the whole ratio. `price_adjustment_factor` is the one number that fixes it.
- **The direction is not guessable.** A capital reduction usually raises the price, and everyone assumes it always does. 無敵 (8201) closed at 8.69 on 2016-07-06, kept 700 shares of every 1,000 and handed back **NT$3.00 a share** — and reopened at **8.12**. Seven of the 700 reductions on record moved the price down. A sign convention inferred from the event type is wrong seven times.
- **Nor is the magnitude.** 國泰臺灣加權正2 (00663L) split **seven** for one on 2025-06-11; 0050 split four for one a week later. Both are "an ETF split".
- **Leveraged funds have a different limit.** 00663L's first session ran ±20%, not ±10% — and no column on any of the fourteen tables says so. It is recovered here from the printed limits and published as `price_limit_pct`.
- **The forward view is free money for a scheduler.** The announcement tables carry events that have not happened yet: the ratio, the halt date and the resumption date are set weeks ahead. Know that 富邦NASDAQ (00662) splits five for one on 2026-11-17 before it does.

### Output

One record per event. A real row — 中環 (2323), a reduction that returned capital *and* paid a dividend on the old shares:

```json
{
  "resume_date": "2022-10-24",
  "halt_date": "2022-10-14",
  "announcement_date": "2022-10-13",
  "market": "twse",
  "action_type": "CAPITAL_REDUCTION",
  "record_type": "RESUMED",
  "stock_code": "2323",
  "stock_name": "中環",
  "last_close_before_halt": 6.53,
  "reference_price": 6.2,
  "limit_up": 6.82,
  "limit_down": 5.58,
  "opening_base_price": 6.2,
  "price_adjustment_factor": 0.94946401,
  "implied_share_multiplier": 1.05322581,
  "share_multiplier": 0.94,
  "official_ratio_label": "每壹仟股換發新股票 ÷ 1000",
  "reason": "退還股款",
  "cash_returned_per_share": 0.6,
  "cash_dividend_per_share": 0.1,
  "price_limit_pct": 0.1,
  "limits_match_reference": true,
  "opening_base_matches_reference": true,
  "reference_price_matches_ratio": true,
  "source_market_report": "twse:TWTAUU",
  "quality_flags": []
}
```

A thousand shares became 940, each old share got NT$0.60 of capital and NT$0.10 of dividend back, and the price went from 6.53 to 6.20. `(6.53 − 0.60 − 0.10) ÷ 0.94 = 6.202` — which is the exchange's own 6.20, and the Actor checked that before publishing the row.

#### The two multipliers are not the same number

| Field | Means | For 中環 |
|---|---|---|
| `share_multiplier` | Shares you hold after ÷ shares before, **as the exchange filed it** | 0.94 |
| `implied_share_multiplier` | Pre-halt close ÷ reference price — the multiplier **read back out of the prices** | 1.0532 |
| `price_adjustment_factor` | Reference price ÷ pre-halt close — **multiply old prices by this** | 0.9495 |

They agree exactly for a pure split or par change. They part company whenever cash leaves the company, because part of the value did not turn into shares. Use `price_adjustment_factor` to splice prices; use `share_multiplier` to track a position size.

### What you can ask for

| Input | Effect |
|---|---|
| `startDate` / `endDate` | Empty for the whole archive. The floor is **2011-01-01** — TWSE rejects anything earlier outright |
| `market` | `both`, `twse` or `tpex` |
| `actionTypes` | Any of `CAPITAL_REDUCTION`, `PAR_VALUE_CHANGE`, `ETF_SPLIT`, `ETF_REVERSE_SPLIT` |
| `records` | `resumed` for the historical record, `announced` for pending events, `both` by default |
| `stockCodes` | Keep only these securities, e.g. `2323`, `0050` |
| `fetchReductionDetails` | Fetch the exchange ratio for listed reductions. On by default — see below |
| `maxDetailRequests` | Safety cap on those lookups, default 500. `0` lifts it |

The whole archive is **fourteen requests**, because every historical table takes a date range of any length in one call. It is a small dataset: about **740 events in sixteen years**, roughly 700 of them capital reductions.

**The one place requests go.** TPEx ships each reduction's exchange ratio, cash returned and par values *inside the row*, free. TWSE keeps them behind one request per reduction — about 400 for a full backfill — and throttles them, with a 307 carrying no `Location` header. The Actor adapts its pace to whatever the exchange is tolerating rather than retrying into a wall, but the throttle is the binding constraint: a full listed backfill measures **around ten minutes**. Turn `fetchReductionDetails` off and listed reductions still carry the reference price, the limits and the adjustment factor; they just lose `share_multiplier` and the ratio cross-check, and are flagged `NO_OFFICIAL_RATIO`.

### Verification

These tables have no totals row to reconcile against, so the exchanges' own arithmetic is reproduced instead — three independent identities, all measured against the live archive before release.

**1. The limits must fall out of the reference price.** Taiwan's up-limit is the reference price times the limit width, pulled *down* to a legal tick; the down-limit is the same pulled *up*. Reproducing that needs three things the tables do not state: the tick ladder (six bands for shares, two for ETFs, chosen by the resulting price rather than the starting one), the limit width in force that day (**7% before 2015-06-01, 10% after**), and the multiple a leveraged fund carries. Result: **716 of 717** archived rows reproduce exactly.

The one that does not is a superseded filing, and it is interesting. When a reduction and an ex-rights date land on the same resumption, the exchange strikes the **down-limit off the ex-rights price and the up-limit off the reference price** — an asymmetry that is documented nowhere and that four rows in the archive depend on. Three of those four verify. The fourth is an earlier filing of the same event that omits the ex-rights price its own sibling row carries, and it is flagged `SUPERSEDED_ANNOUNCEMENT` and `LIMIT_MISMATCH` rather than quietly corrected.

**2. The opening auction base must be the reference price at the nearest tick.** **721 of 721**, exactly.

**3. The reference price must fall out of the exchange ratio.** `(close − cash returned − cash dividend) ÷ share multiplier`, against the published figure. This one needs a tolerance, and a fixed one would be wrong in both directions — so it is derived from where the rounding actually comes from. The published price is the exchange's arithmetic taken to the cent (TWSE truncates, TPEx rounds half up), worth 0.01; and the close the recomputation starts from is *itself* only published to the cent, a half-cent that division by the ratio magnifies. For a reduction to 90% that is 0.0056; for 台南-KY at 31.1% it is 0.0161. Widest gap among rows that reconcile: **0.0113**, inside its own bound of 0.0262.

**One row in the entire archive does not reconcile, and it is published saying so.** 中興電 (1513), resumed 2014-12-10: the exchange's price table says 19.60 became 20.05, and the exchange's own detail record for the same event says 875 shares per 1,000 with NT$1.25 returned — which gives 20.97. Those two official records disagree, no combination of the published fields closes the gap, and nothing here invents a number to make it go away. It carries `REFERENCE_PRICE_RATIO_MISMATCH`.

**Drift fails the run rather than corrupting the output.** Every column read by position is checked against its expected header first; if a report is republished with different columns, the Actor fails instead of publishing figures read out of the wrong place. And if more than a twentieth of resumption rows stop reproducing their own limits, that is columns having moved — the run fails rather than shipping a dataset where the checks quietly went false.

### Units and conventions, stated once

| Field | Unit |
|---|---|
| All prices | NT$ per share, as published |
| `price_adjustment_factor`, `share_multiplier`, `implied_share_multiplier` | Dimensionless ratios, 8 decimal places |
| `price_limit_pct` | Fraction — `0.1` is ±10% |
| `cash_returned_per_share`, `cash_dividend_per_share` | NT$ per **pre**-reduction share |
| All dates | ISO `YYYY-MM-DD`; the exchanges publish Republic-of-China years and they are normalised here |

### Limitations, stated plainly

- **The archive starts 2011-01-01.** TWSE refuses an earlier start date outright rather than returning an empty table. Events before that are not available from these reports at any price.
- **ETF splits carry no `share_multiplier`.** The exchanges publish a column called 分割(反分割)比率 for splits and reverse splits without stating which way it points, and a reverse split's row would be ambiguous. The raw figure is in `official_ratio` with the exchange's own column name beside it in `official_ratio_label`, and `implied_share_multiplier` — read out of the prices, which are unambiguous — is exact for these events. Nothing is guessed.
- **Listed par value changes carry no official ratio either.** TWSE's detail report for them just echoes the row. `implied_share_multiplier` is exact; the OTC board publishes the ratio and the par values properly.
- **Announcements carry no prices.** They cannot: the pre-halt close has not happened. They carry the ratio, the reason and both dates, which is what a scheduler needs.
- **The forward tables are snapshots.** They hold whatever is pending right now and ignore any date range sent to them, so a historical query returns nothing from them by design. The record of what *did* happen is the resumption tables, which do take a range.
- **One event can appear more than once.** TWSE publishes one row per filing, so an amended announcement leaves both on the record. The older ones are flagged `SUPERSEDED_ANNOUNCEMENT` rather than dropped — they are part of the public record.
- **The OTC board has never split an ETF.** Both TPEx ETF tables exist, are read, and have been empty for the whole archive. That is the market, not a bug.
- **A few securities trade with no price limit at all.** Futures-based ETFs after a reverse split print 9,999.95 against 0.01; those rows are flagged `NO_PRICE_LIMIT` and their limit identity is skipped rather than failed.
- **This is not a dividend feed.** Ordinary ex-dividend and ex-rights adjustments are a different report — see [taiwan-dividend-calendar](https://apify.com/chamarix/taiwan-dividend-calendar). The two together are the complete set of price discontinuities. Where an ex-rights date shares a resumption with one of these events, the row carries `ex_rights_reference_price` and the flag `BUNDLED_EX_RIGHTS`.
- **The security name is not stable.** 台南-KY was F-台南 within the same event's two filings. Key a time series on `stock_code`.

### Taiwan Market Data Suite

This Actor is part of a suite of 36 Taiwan market data APIs by [chamarix](https://apify.com/chamarix) — official sources only, cross-validated against independent official endpoints, clean JSON out. Code samples for the whole suite: [GitHub](https://github.com/cc77556/taiwan-market-data-actors).

**Market data:**

- [taiwan-corporate-action-prices](https://apify.com/chamarix/taiwan-corporate-action-prices) — Capital reductions, par value changes & ETF splits — the official reopening price & adjustment factor for every price discontinuity since 2011
- [taiwan-ipo-subscription](https://apify.com/chamarix/taiwan-ipo-subscription) — Every IPO ballot since 2006 & every competitive auction since 2016 — odds, ticket cost, reserve & bid-to-cover
- [taiwan-intraday-5sec-stats](https://apify.com/chamarix/taiwan-intraday-5sec-stats) — Market-wide order book & all sector indices every 5 seconds since 2004, 3,241 rows a session
- [taiwan-stock-daily-quotes](https://apify.com/chamarix/taiwan-stock-daily-quotes) — Daily OHLCV, VWAP, P/E, price-to-book & dividend yield for every listed/OTC stock since 2004
- [taiwan-index-history](https://apify.com/chamarix/taiwan-index-history) — Daily TAIEX & TPEx index history since 1990 with market turnover, the total-return index & all 273 TWSE indices
- [twse-institutional-trades](https://apify.com/chamarix/twse-institutional-trades) — Daily institutional buy/sell (foreign, investment trust, dealer) per stock — TWSE listed
- [tpex-institutional-trades](https://apify.com/chamarix/tpex-institutional-trades) — Daily institutional buy/sell per stock — TPEx OTC market
- [taiwan-monthly-revenue](https://apify.com/chamarix/taiwan-monthly-revenue) — Monthly revenue of 1,900+ listed & OTC companies, MoM/YoY
- [taiwan-financial-statements](https://apify.com/chamarix/taiwan-financial-statements) — Quarterly income statement, balance sheet & cash flow back to 2013
- [taiwan-director-compensation](https://apify.com/chamarix/taiwan-director-compensation) — Board pay for 1,950+ companies, parent vs consolidated scope, with EPS, ROE & profit on the same row
- [taiwan-esg-disclosures](https://apify.com/chamarix/taiwan-esg-disclosures) — 21 ESG topics for 1,950+ companies — Scope 1/2/3 emissions, energy, water, waste, pay, board & climate risk
- [taiwan-dividend-calendar](https://apify.com/chamarix/taiwan-dividend-calendar) — Ex-dividend / ex-rights dates, reference prices & payouts back to 2003
- [taiwan-margin-trading](https://apify.com/chamarix/taiwan-margin-trading) — Daily margin trading & short sale balances per stock
- [taiwan-sbl-short-sale-balance](https://apify.com/chamarix/taiwan-sbl-short-sale-balance) — Securities-lending short sale balances per stock
- [taiwan-short-sale-volume](https://apify.com/chamarix/taiwan-short-sale-volume) — Daily short sale turnover per stock — margin & borrowed lots, value and implied price, since 2008
- [taiwan-day-trading-stats](https://apify.com/chamarix/taiwan-day-trading-stats) — Day-trading volume, value & ratio per stock since 2014
- [taiwan-odd-lot-trading](https://apify.com/chamarix/taiwan-odd-lot-trading) — Both odd-lot sessions per stock — intraday & after-hours, shares, turnover, OHLC & quotes since 2004
- [taiwan-broker-rankings](https://apify.com/chamarix/taiwan-broker-rankings) — Securities-firm turnover, market share & the top firms in each hot stock on the OTC board since 2007
- [tdcc-shareholding-dispersion](https://apify.com/chamarix/tdcc-shareholding-dispersion) — Weekly TDCC shareholding dispersion (retail vs whale structure)
- [taiwan-foreign-shareholding](https://apify.com/chamarix/taiwan-foreign-shareholding) — Foreign ownership percentage & remaining quota per stock
- [taiwan-futures-daily](https://apify.com/chamarix/taiwan-futures-daily) — Daily bars, settlement price & open interest for all 384 TAIFEX futures contracts since 1998, with the large-trader report
- [taifex-institutional-derivatives](https://apify.com/chamarix/taifex-institutional-derivatives) — Institutional futures & options positions (TAIFEX), incl. put/call ratio
- [taifex-options-chain](https://apify.com/chamarix/taifex-options-chain) — Full options chain by strike & expiry, both sessions, with the exchange's own Delta, since 2001
- [taiwan-warrants-daily](https://apify.com/chamarix/taiwan-warrants-daily) — Daily quotes, strike, expiry & moneyness for every listed/OTC warrant since 2004
- [taiwan-government-bonds](https://apify.com/chamarix/taiwan-government-bonds) — Central government bond benchmark yields, the full yield curve & issuance master, with staleness stated
- [taiwan-stock-alerts](https://apify.com/chamarix/taiwan-stock-alerts) — Watch-list, disposition & short-sale suspension alerts
- [taiwan-insider-share-transfers](https://apify.com/chamarix/taiwan-insider-share-transfers) — Insider share-transfer filings (directors, officers, 10% holders) since 2002
- [taiwan-director-shareholdings](https://apify.com/chamarix/taiwan-director-shareholdings) — Monthly director/officer shareholdings & share-pledge ratio since 1999
- [taiwan-block-trades](https://apify.com/chamarix/taiwan-block-trades) — Every block trade (鉅額交易) with price, size & basket constituents since 2005
- [taiwan-shareholder-meetings](https://apify.com/chamarix/taiwan-shareholder-meetings) — Shareholder meeting dates, book closure periods & e-voting since 2005
- [taiwan-emerging-stock-quotes](https://apify.com/chamarix/taiwan-emerging-stock-quotes) — Emerging (興櫃) board quotes, pre-IPO register & history since 2003
- [taiwan-etf-regular-investment](https://apify.com/chamarix/taiwan-etf-regular-investment) — Monthly regular savings plan (定期定額) rankings for stocks & ETFs since 2020
- [taiwan-treasury-stock-buybacks](https://apify.com/chamarix/taiwan-treasury-stock-buybacks) — Every treasury-stock buyback (庫藏股) filing, plan vs execution, since 2000

**Property market:**

- [taiwan-real-estate-transactions](https://apify.com/chamarix/taiwan-real-estate-transactions) — Actual registered sale, presale & lease prices (實價登錄) for all 22 cities since 2012

**Government & civic data:**

- [taiwan-legislator-monitor](https://apify.com/chamarix/taiwan-legislator-monitor) — Legislative Yuan bills, legislators & meetings
- [taiwan-tender-monitor](https://apify.com/chamarix/taiwan-tender-monitor) — Government e-procurement tenders (open calls, awards, failures)

# Actor input Schema

## `startDate` (type: `string`):

First resumption date to cover. Leave empty for the whole archive — TWSE rejects anything before 2011-01-01, so that is the floor. The archive is only about 740 events in all, and every historical table takes a date range of any length in a single request, so the events themselves cost fourteen requests and under a minute. The time goes on the per-reduction detail lookups below.

## `endDate` (type: `string`):

Last resumption date to cover, inclusive. Leave empty to run 400 days past today, because announcements point into the future — an ETF split announced in September can resume in November.

## `market` (type: `string`):

Both boards, or one of them. The listed board carries every ETF split Taiwan has ever had; the OTC board ships its exchange ratios inside the row, so it costs no detail requests.

## `actionTypes` (type: `array`):

Which kinds of price discontinuity to collect. Leave empty for all four. Capital reductions are by far the most common — about 700 of the 740 events on record.

## `records` (type: `string`):

RESUMED is the historical record — the price the share actually reopened at, with the pre-halt close beside it, so the adjustment factor is known. ANNOUNCED is what the exchanges have pending: the ratio and the dates are published, but no price yet, because the pre-halt close has not happened.

## `stockCodes` (type: `array`):

Keep only these securities, e.g. 2323, 0050. Leave empty for every event. Filtering happens after the fetch, so it cuts the output rather than the request count — but it does cut the per-row detail lookups, which is where the requests actually go.

## `fetchReductionDetails` (type: `boolean`):

TPEx ships the exchange ratio, the cash returned per share and the par values inside every row at no cost. TWSE keeps them behind one request per reduction and throttles those requests, so the Actor paces itself to whatever the exchange is tolerating. With this on, a listed reduction carries its official ratio and its reference price is checked against it; with it off, the row still carries the reference price and the adjustment factor derived from the prices themselves. A full listed backfill is about 400 extra requests and measures around ten minutes — narrow the date range or turn this off if that matters.

## `maxDetailRequests` (type: `integer`):

A safety cap on the per-row lookups above, so an accidental full backfill does not become a surprise bill. When a run exceeds it the most recent events are looked up. Set 0 to lift it.

## Actor input object example

```json
{
  "startDate": "",
  "endDate": "",
  "market": "both",
  "actionTypes": [
    "CAPITAL_REDUCTION",
    "PAR_VALUE_CHANGE",
    "ETF_SPLIT",
    "ETF_REVERSE_SPLIT"
  ],
  "records": "both",
  "stockCodes": [],
  "fetchReductionDetails": true,
  "maxDetailRequests": 500
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

One record per corporate action — the close before the halt, the price the exchange reopened it at, the adjustment factor between them, and the official ratio the two were derived from.

# 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 = {
    "startDate": "",
    "endDate": "",
    "market": "both",
    "actionTypes": [
        "CAPITAL_REDUCTION",
        "PAR_VALUE_CHANGE",
        "ETF_SPLIT",
        "ETF_REVERSE_SPLIT"
    ],
    "records": "both",
    "stockCodes": [],
    "fetchReductionDetails": true,
    "maxDetailRequests": 500
};

// Run the Actor and wait for it to finish
const run = await client.actor("chamarix/taiwan-corporate-action-prices").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 = {
    "startDate": "",
    "endDate": "",
    "market": "both",
    "actionTypes": [
        "CAPITAL_REDUCTION",
        "PAR_VALUE_CHANGE",
        "ETF_SPLIT",
        "ETF_REVERSE_SPLIT",
    ],
    "records": "both",
    "stockCodes": [],
    "fetchReductionDetails": True,
    "maxDetailRequests": 500,
}

# Run the Actor and wait for it to finish
run = client.actor("chamarix/taiwan-corporate-action-prices").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 '{
  "startDate": "",
  "endDate": "",
  "market": "both",
  "actionTypes": [
    "CAPITAL_REDUCTION",
    "PAR_VALUE_CHANGE",
    "ETF_SPLIT",
    "ETF_REVERSE_SPLIT"
  ],
  "records": "both",
  "stockCodes": [],
  "fetchReductionDetails": true,
  "maxDetailRequests": 500
}' |
apify call chamarix/taiwan-corporate-action-prices --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,chamarix/taiwan-corporate-action-prices"
        }
    }
}
```

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/zCclPokaYZyZbWb64/builds/rXA6Re1ggHIeXGQ91/openapi.json
