Taiwan Corporate Bonds — 公司債、金融債與寶島債 API avatar

Taiwan Corporate Bonds — 公司債、金融債與寶島債 API

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Taiwan Corporate Bonds — 公司債、金融債與寶島債 API

Taiwan Corporate Bonds — 公司債、金融債與寶島債 API

Every corporate, bank and Formosa bond on the Taipei Exchange: issuance terms, outstanding balance, credit ratings, perpetuals and private placements, the 939-bond international register with ISINs, daily OTC trades since 2005 and the exchange's theoretical prices for USD bonds since 2017.

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

9 hours ago

Last modified

Share

Taiwan Corporate Bonds (公司債、金融債與寶島債) API

Every corporate, bank and Formosa bond on the Taipei Exchange — issuance terms, outstanding balance, coupon, credit ratings, perpetuals and private placements — plus the 939-bond international bond register with ISINs, the daily over-the-counter trade summary back to 2005 and the exchange's own theoretical prices for USD international bonds back to 2017, as structured JSON.

Taiwan's non-government bond market is run entirely by the Taipei Exchange (TPEx), and it publishes everything — in eleven separate open-data files that overlap without saying so, a register that is the only place the ISIN appears, a trade summary that exists only as one Excel workbook per day, and three more workbooks per day for fair values. Nobody joins them. This Actor does, and reconciles them against each other on every run.

Why this data matters

Measured on the exchange's own 2026-10-10 snapshot and the September 2026 trade files, not estimated:

  • NT$3.82 trillion of listed corporate bonds and NT$1.17 trillion of bank bonds are outstanding across 1,037 and 438 issues — plus US$7.9bn of USD paper in the Formosa file for domestic and dual-listed issuers. The master files give every one of them its coupon, maturity, balance and rating.
  • 775 private placements, with no public market and no bond code, are in the master too. NT$37.7bn outstanding at a median coupon of 4.75% and up to 15.3% — real-estate SPVs, unlisted groups and small issuers whose borrowing costs are otherwise invisible. Opt in with includePrivatePlacements.
  • 145 bonds never mature. Bank capital instruments (陽信, 台北富邦, 永豐…) published with a blank maturity and a 99-year tenor. The exchange's own search page calls the same 135 listed ones 無到期日 — this Actor's rule agrees with it on all 135.
  • The Formosa market is overwhelmingly callable and foreign. Of 939 bonds in the international register, 864 are USD, 46 AUD, 18 ZAR, 10 CNY and 1 NZD; 755 carry an issuer call. The biggest issuers are Morgan Stanley, Natixis, Citigroup, JPMorgan and Société Générale.
  • Most of that callable paper is priced far below par. Of 435 USD bonds the exchange values daily, 278 had a clean theoretical price under 80 on 2026-10-08; the lowest (P20CIBC2, a 30-year callable zero) was 35.52.
  • Corporate bonds do trade — and the exchange publishes the credit spread. September 2026: 62 non-government bonds changed hands over the counter, with trades on every one of the 20 sessions — NT$84.4bn in 368 trades on the TWD side alone. The exchange's own spread over government bonds on those trades had a median of 158 bp (range −14 to 450 bp).

Output

One dataset, four record types, told apart by record_type. An issue row — TSMC's 40-year USD Formosa bond, which the exchange lists in two master files at once and which this Actor merges into one row with its ISIN from a third:

{
"record_type": "issue",
"snapshot_date": "2026-10-10",
"bond_code": "F16801",
"short_name": "P20TSMC1",
"bond_classes": ["corporate", "formosa"],
"source_files": ["bond_ISSBD4_data", "bond_ISSBD10_data"],
"issuer_code": "2330",
"issuer_name": "台積電",
"isin": "TW000F168018",
"series_number": "109-1",
"issue_date": "2020-09-22",
"listing_date": "2020-09-22",
"maturity_date": "2060-09-22",
"is_perpetual": false,
"tenor_years": 40,
"currency": "USD",
"currency_code": "2",
"issue_amount": 1000000000,
"outstanding_amount": 1000000000,
"coupon_rate_pct": 2.7,
"coupon_frequency_per_year": 1,
"issuer_rating_agency": "中華信評",
"issuer_rating": "twAAA",
"principal_repayment_description": "發行期間為40年,到期一次還本;惟本公司有提前贖回權,詳細內容請參閱發行辦法。",
"put_option_date": null,
"put_option_price": null,
"is_private_placement": false,
"underwriter": "920T凱基證券",
"trustee": "兆豐國際商業銀行股份有限公司",
"quality_flags": []
}

An otc_trade row — a Fubon Life subordinated bond on 2026-10-08, joined to its issuer from the master:

{
"record_type": "otc_trade",
"date": "2026-10-08",
"bond_code": "B99513",
"bond_name": "P14富壽2A",
"bond_category": "corporate",
"issuer_name": "富邦人壽",
"currency": "TWD",
"duration_years": 7.43,
"years_to_maturity": 8.88,
"price_low": 99.9999,
"price_high": 100.2502,
"price_avg": 100.2217,
"yield_low_pct": 3.6656,
"yield_high_pct": 3.6991,
"yield_avg_pct": 3.6694,
"yield_change_pct": -0.0297,
"trading_value": 113250000.0,
"face_value_traded": 113000000.0,
"trade_count": 3,
"spread_over_government_bp": 168.23,
"source_file": "BDdcs001.20261008-C.xls",
"quality_flags": []
}

A theoretical_price row and the international_issue row for the same Citigroup callable:

{
"record_type": "theoretical_price",
"date": "2026-10-08",
"bond_code": "F14241",
"short_name": "P22CGMHI2",
"issuer_name": "Citigroup Global Markets Holdings Inc.",
"pricing_model": "callable_fixed",
"credit_rating": "A",
"coupon_rate_pct": 2.93,
"call_structure": "1.000 x 1.000",
"price_dirty": 93.298903,
"accrued_interest": 1.937056,
"price_clean": 91.361847,
"currency": "USD"
}
{
"record_type": "international_issue",
"bond_code": "F14241",
"issuer_name": "Citigroup Global Markets Holdings Inc.",
"isin": "XS2410473263",
"investor_type": "professional",
"issue_date": "2022-02-15",
"maturity_date": "2032-02-15",
"currency": "USD",
"issue_amount": 70000000,
"coupon_rate_pct": 2.93,
"early_redemption": "Applicable",
"call_structure": "1.000 x 1.000",
"liquidity_provider": "KGI Bank"
}

Units, stated once

Meaning
issue_amount, outstanding_amountWhole units of the bond's own currency — NT$ for TWD bonds, US$ for USD bonds. Never converted.
price_*, price_dirty, price_cleanPer 100 of face value. 93.29 means 93.29% of par.
trading_value, face_value_tradedIn the bond's own currency; a session can mix TWD, USD, AUD and ZAR rows, so never sum across currency.
yield_*_pct, coupon_rate_pctPercent per year. yield_change_pct is in percentage points.
spread_over_government_bpBasis points, the exchange's own figure (published since 2016).

Verification

Nothing here is taken on trust from a single file. Every run, with crossCheck on (the default):

  • The masters agree with the exchange's own bond search pages. The two 公司債/金融債 search pages are served by a different endpoint from the openapi masters. On 2026-10-11 all 1,430 of 1,430 bonds on them matched the master on issue date, maturity (including which ones are perpetual) and amount issued. A date or amount mismatch fails the run.
  • The masters agree with the international register. 38 bonds appear in both; issue date, amount and maturity agree on 38/38, and so does the currency.
  • Currency codes are decoded only where proven. The master's currency column is a bare number with no key. 1 is TWD because all 197 central government bonds carry it; 2 is USD because every master bond that also sits in the international register carries 2 and the register spells out USD for all of them. Both proofs are re-run on every run. Any other code stays raw in currency_code — and the foreign-issuer Formosa file, which numbers its currencies differently (its one USD bond carries 1), is never decoded with this key.
  • Bonds listed by two masters must agree. The Formosa file repeats 31 bank and 6 corporate USD bonds from the domestic files; all 37 agree field for field and are merged into one row that keeps both source_files.
  • Every OTC subtotal is rebuilt. The trade workbook is cut into blocks, each closed by a 合計 line for one currency (a session can have two TWD and three USD blocks). Each line must equal the exact sum of value, face amount and trade count of its own block — 43/43 in September 2026, and every session of the years checked.
  • The international desk's file agrees with the main one. BDdas001, published separately, must match BDdcs001 row for row on value, face, count, price and yield — and supplies the ISIN.
  • Theoretical price = accrued interest + clean price on every row, within 1.5 millionths: each is printed to six decimals, so three roundings can add up to that and no more. Measured worst gap: exactly 0.000001, over 4,286 rows in January 2023 and 435 today.
  • The stored workbooks agree with their openapi copies to the last digit for the latest session — 23/23, 135/135 and 277/277 on 2026-10-08.
  • Outstanding never exceeds issued, maturities follow issue dates, and every volume-weighted average yield sits between its session's low and high yield.

Where the official sources disagree

They do, and this Actor shows it rather than picking a winner:

  • 23 perpetual bank bonds carry a different coupon on the search page than in the master. All were issued by March 2022 and in every case the master's figure is higher (陽信 P11陽信1: page 2.25%, master 3.19%). The other 1,407 bonds agree to the last digit. Both figures are published — coupon_rate_pct from the master and search_page_coupon_rate_pct from the page — and the row is flagged coupon_differs_from_search_page. Our reading (not stated by either source): the page shows the coupon at issue and the master the coupon after a reset.
  • One code, two rows. On 2026-10-11 the bank-bond master listed G10923 (聯邦銀 perpetual) twice with different coupons (1.92% and 2.8593%) and one copy missing its amount. Both are published and flagged conflicting_rows_in_source.
  • The Formosa file prints exact duplicate rows — 92 of them on 2026-10-11, mostly structured notes. Exact repeats are dropped; nothing else is.
  • Structured notes have no coupon or size. The master prints 999.999999 as the coupon and 0 as the amount issued for them. Those are nulls here, flagged coupon_not_published / issue_amount_not_published, not numbers.
  • The printed price range can come out inverted. The file's prices are each converted from a yield and rounded separately, so when the yields are within a few thousandths the "low" price can print above the "high" (2024-06-20 B64015: 100.698 vs 100.6977, against an orderly 1.395–1.4% yield range) — one row in 3,322 for 2024. Published as printed, flagged price_range_inconsistent.
  • A trade with no price is printed as 0.00 in one file and "-" in the other (a ZAR zero, 2023-01-30). A bond does not trade at zero, so it is null here and flagged price_not_published.

What you can ask for

  • recordTypes — any of issues, international_issues, otc_trades, theoretical_prices.
  • startDate / endDate — the session range for trades and theoretical prices. Leave both empty for the latest published session. Trades start 2005-05-23; theoretical prices start 2017-12-18 (callable zero-coupon), 2018-12-10 (callable fixed) and 2019-12-16 (non-callable fixed). Which sessions exist is read from the exchange's own month index, so holidays are skipped; a range with no sessions returns nothing rather than failing, while a listed session whose file will not download fails the run.
  • bondCodes — e.g. F16801, B99513. Applies to every record type.
  • includePrivatePlacements — adds the ~770 unlisted private placements to issues. Off by default.
  • includeGovernmentBonds — the OTC file covers government paper too; it is left out by default because taiwan-government-bonds covers it properly.
  • maxDownloads — a cap per file series, so a twenty-year range cannot become a surprise bill. A year is about 250 sessions.

Limitations, stated plainly

  • The two registers are snapshots. issues and international_issues describe the market as of the run; bonds that have matured or been redeemed drop out of them. OTC trades of matured bonds still come through, labelled not_in_current_master (or government for the A/H government series).
  • This is the over-the-counter dealer market only. Corporate bonds also print on the exchange's electronic EBTS system; those files are not read here.
  • Several master columns are bare codes with no published key — interest basis, guarantee, repayment, listing status, offering method. They are passed through raw with the free-text description where one exists, never guessed. Only currency is decoded, and only as proven above.
  • Theoretical prices cover USD international bonds only. The exchange's own footnote says it does not value domestic issuers' bonds because Taiwan has no generally recognised credit-rating standard for them.
  • Warrant bonds and foreign financial bonds have no data today — those openapi files exist but are empty. Convertibles are in taiwan-convertible-bonds.

Source

Taipei Exchange (證券櫃檯買賣中心): openapi bond_ISSBD2/3/4/6/7/8/9/10/11_data (issuance masters), bond_ISSBD1_data (only to label government paper), tpex_international_bond_issue_org and _investor (international register), BDdos209/215/216UTF (latest theoretical prices); stored workbooks BDdcs001 (OTC trade summary), BDdas001 (international OTC trades) and BDdos209/215/216 (theoretical prices) from the bond statistics pages; and the cbSearch / cbSearchPro bond search pages for cross-checking.

Taiwan Market Data Suite

This Actor is part of a suite of 44 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: