Taiwan IPO Subscription & Auction — 公開申購抽籤與競價拍賣 API avatar

Taiwan IPO Subscription & Auction — 公開申購抽籤與競價拍賣 API

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Taiwan IPO Subscription & Auction — 公開申購抽籤與競價拍賣 API

Taiwan IPO Subscription & Auction — 公開申購抽籤與競價拍賣 API

Every Taiwan IPO ballot since 2006 and every competitive auction since 2016, as JSON. Draw date, subscription window, offer price, lot size, valid applications and the resulting allocation odds, beside the auction that set the price — reserve, bids, and the weighted average award.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

chris

chris

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Taiwan IPO Subscription & Auction (公開申購抽籤與競價拍賣) API

Every Taiwan IPO ballot back to 2006-10-12 and every competitive auction back to 2016-01-13, as structured JSON. 4,093 subscription lotteries and 863 auctions — draw date, subscription window, offer price, lot size, what one application costs, how many valid applications arrived and the odds that produced, beside the institutional auction that set the price in the first place.

Taiwan's IPO ballot is the single most-participated retail event in the market: 星宇航空's 2024 listing drew 1,607,558 valid applications. The exchange publishes it as a web table with no API. This is that table, both halves of it, normalised and cross-checked.

Why this data matters

  • The whole retail side of an offering, on one row. ticket_cost_ntd is what has to be on deposit to enter once. allocation_rate_pct is the chance it gets allotted. oversubscription_x is the same fact the readable way round — 晉弘's 2023 seasoned offering was 1,998× oversubscribed, or one application in 1,999. listing_date is when the allotment can actually be sold. Nothing here needs to be assembled from three sources.
  • The auction that set the price, joined to the ballot it priced. Taiwan prices most IPOs by sealed-bid auction first, then sells a retail tranche at a fixed price. Both are here, on the same security code. 星宇航空's auction cleared at a weighted average of NT$23.28 against a NT$17.39 reserve; the retail tranche was then struck at NT$20. Across all 852 settled auctions the retail price has come in a median 1.8% below the auction's own weighted average — the discount that makes the ballot worth entering, measurable rather than assumed.
  • Bid-to-cover and premium over reserve, for every auction since 2016. The median auction is covered 3.55× and clears 21.6% above the underwriter's floor; 31 of 852 went undersubscribed. This is the cleanest public read on how the market priced an issue against the bank that brought it, and the exchange publishes none of the three figures directly.
  • One request per year, not per day. The exchange's date parameter selects a whole calendar year — the same 202 rows come back for 1 January and 31 December. The complete twenty-one-year archive is 32 requests, which is why the full backfill is an option rather than a project.
  • Both reports reconcile against their own inputs before anything is written. The total offer value is recomputed from shares × price, and the allocation rate from lots and applications — on all 4,080 and 2,532 rows that carry them. Every auction's weighted average is verified to sit inside its own accepted-bid range and above its reserve, and the lots sold implied by the money raised is checked against the lots that were available. A run that cannot reconcile them publishes nothing.
  • Covers what the ballot actually covers. TWSE and TPEx, the Innovation Board, foreign primary listings, seasoned offerings, convertible bonds on the auction side, and central government bond tranches sold over post office counters — one table, 15 issue types, each with an English label.

Output

One record per ballot, and one per auction. An upcoming draw:

{
"record_type": "IPO_SUBSCRIPTION",
"draw_date": "2026-09-30",
"code": "6604",
"name": "儒億",
"issue_type": "初上櫃",
"issue_type_en": "TPEx IPO",
"subscribe_start": "2026-09-22",
"subscribe_end": "2026-09-24",
"listing_date": "2026-10-06",
"underwriter": "永豐金",
"offered_shares": 1360000,
"lot_shares": 1000,
"offered_lots": 1360,
"planned_price_ntd": 24,
"offer_price_ntd": null,
"offer_value_ntd": null,
"ticket_cost_ntd": null,
"qualified_applications": null,
"allocation_rate_pct": null,
"oversubscription_x": null,
"is_priced": false,
"is_drawn": false,
"is_upcoming": true,
"is_cancelled": false
}

The auction that will price it, opening a week earlier:

{
"record_type": "IPO_AUCTION",
"open_date": "2026-09-23",
"code": "6604",
"name": "儒億",
"market": "櫃檯買賣",
"market_en": "TPEx",
"issue_type_en": "TPEx IPO",
"auction_method_en": "Discriminatory (American) auction",
"bid_start": "2026-09-17",
"bid_end": "2026-09-21",
"auction_lots": 5040,
"min_bid_price_ntd": 20,
"min_lots_per_bid": 1,
"max_lots_per_bidder": 640,
"margin_pct": 50,
"bid_processing_fee_ntd": 400,
"avg_award_price_ntd": null,
"is_settled": false,
"is_upcoming": true
}

And the same shape once it has been held — 星宇航空, October 2024:

{
"record_type": "IPO_AUCTION",
"open_date": "2024-10-11",
"code": "2646",
"name": "星宇航空",
"auction_lots": 319600,
"min_bid_price_ntd": 17.39,
"qualified_bids": 32011,
"qualified_lots": 687938,
"min_award_price_ntd": 21.63,
"max_award_price_ntd": 100,
"avg_award_price_ntd": 23.28,
"awarded_value_ntd": 7440972870,
"implied_awarded_lots": 319629.42,
"bid_to_cover_x": 2.15,
"award_premium_pct": 33.87,
"final_offer_price_ntd": 20,
"is_settled": true
}

Input

FieldTypeDefaultWhat it does
startYearstringcurrent yearFirst calendar year. The ballot archive begins 2006, the auction archive 2016; an earlier year starts there.
endYearstringcurrent yearLast year, inclusive. One request per report per year.
includeSubscriptionsbooleantrueThe retail ballot table.
includeAuctionsbooleantrueThe competitive auction table.
onlyUpcomingbooleanfalseKeep only what can still be applied or bid for.
codesarray[]Keep only these security codes.
useApifyProxybooleanfalseWorth turning on only for the full backfill.

The default — no input at all — is the current year of both tables, two requests, and every upcoming ballot in it.

{ "onlyUpcoming": true }
{ "startYear": "2006", "endYear": "2026", "includeAuctions": false }

What the exchange gets up to, and what this Actor does about it

  • Two calendars in two tables. The ballot table prints Republic-of-China years (115/09/30), the auction table Western ones (2026/09/23), and the auction table stopped zero-padding somewhere around 2019 (2017/1/3). All of it comes out as YYYY-MM-DD.
  • Four rows in the archive are silently shifted by one column. Foreign issuers registered as TPK Holding Co., Ltd. arrive split across two cells, because the backend splits its rows on the comma. Every column after the name moves left by one and the last column falls off the end — while the row still has the expected number of cells, so a length check never notices, and the result parses cleanly into wrong numbers. The security code is the anchor that finds them; they are rejoined and then have to satisfy the same arithmetic as everything else.
  • "Not yet set" is not zero. An unpriced offering carries 未訂出, and an auction that has not been held reads 0 in every result column — including the prices. Both are published as null. So are the application counts on central government bond tranches, which are sold over post office counters rather than balloted, and would otherwise read as offerings that drew no applicants.
  • The auction table has been reshaped three times since 2016. 2016 had no issue-type column at all and put what later became its contents under market; it measured the offer in shares under a column name no year since has used, where every later year uses lots of 1,000. Two more columns were renamed in 2018 and 2025. Every alias maps onto one key, both units are published, and a column this Actor cannot place stops the run rather than being read by position.
  • The auction year filter looks at the bidding window as well as the opening date, so an auction bid for in December and opened in January is served by both years — once with no results and once with them. They are deduplicated on the auction, and the settled copy wins.
  • Tolerances come from the rounding, not from a constant. A government bond priced at 97.472 was really sold at something between 97.4715 and 97.4725, and the exchange's total is built from the unrounded figure — so on a 1,590,000-unit tranche the rebuilt total is out by NT$795, exactly half an ulp per unit. The check allows precisely that and no more, which is why it passes 4,080 rows without waving through anything.
  • Zero rows is not the same as nothing to report. A range inside the archive's own bounds where every year came back empty fails the run rather than publishing itself as a quiet decade.

Field notes

allocation_rate_pct is capped at 100 — that is what the exchange prints when an offering drew fewer applications than it had lots to give away, and the recomputation matches it. implied_awarded_lots is derived, not published: the exchange gives no awarded-quantity column, so it is recovered from the money raised and the average price, and it falls short of auction_lots when bids were rejected or the book went uncovered. market is null on 2016 auction rows because the table had no market column that year — guessing one from the issue type would have made 初上櫃 look like a venue.

Source

  • TWSE 公開申購公告-抽籤日程表 — twse.com.tw/rwd/zh/announcement/publicForm
  • TWSE 競價拍賣公告-投標日程表 — twse.com.tw/rwd/zh/announcement/auction

Both are official Taiwan Stock Exchange announcement tables, free and public. The exchange updates them as offerings are announced, priced and drawn; a ballot row appears with its price still 未訂出 and fills in over the following fortnight.

Taiwan Market Data Suite

This Actor is part of a suite of 35 Taiwan market data APIs by chamarix — official sources only, cross-validated against independent official endpoints, clean JSON out. Code samples for the whole suite: GitHub.

Market data:

Property market:

Government & civic data: