Taiwan TWSE Company Financials & Disclosures Scraper avatar

Taiwan TWSE Company Financials & Disclosures Scraper

Pricing

from $11.54 / 1,000 results

Go to Apify Store
Taiwan TWSE Company Financials & Disclosures Scraper

Taiwan TWSE Company Financials & Disclosures Scraper

Scrape disclosures for 1,000+ Taiwan Stock Exchange (TWSE) listed companies. Extract monthly revenue, income statements, balance sheets, dividends, EPS, major shareholders and company profiles by stock code. Export to JSON, CSV or Excel.

Pricing

from $11.54 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

20 hours ago

Last modified

Share

Taiwan TWSE Company Financials & Disclosures Scraper

Taiwan TWSE Company Financials & Disclosures Scraper

Here is one real result, with every field the actor returns for the default monthly_revenue dataset:

{
"stockCode": "1101",
"companyName": "台泥",
"reportDate": "1150717",
"dataPeriod": "11506",
"industry": "水泥工業",
"revenueCurrentMonth": "13382706",
"revenuePreviousMonth": "12612013",
"revenueYearAgoMonth": "10107877",
"revenueMoMChangePct": "6.110785011084273",
"revenueYoYChangePct": "32.39878166305348",
"cumulativeRevenue": "71467332",
"cumulativeRevenueYearAgo": "70380916",
"cumulativeRevenueChangePct": "1.5436229900730476",
"note": "-",
"observedAt": "2026-08-10T14:16:45.756Z",
"error": null
}

Note: every value shown is exactly as returned. The exact set of fields depends on which dataset you pick (see Output reference); this record is the monthly_revenue feed.

The most complete Taiwan TWSE disclosures scraper available. It returns every column the official TWSE open-data feeds expose across nine datasets, from monthly revenue and full financials to dividends, major shareholders, insider holdings, material announcements, and company profiles, and gives you a dataset selector plus stock-code and company-name filters to target exactly the disclosures you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor fetches one official Taiwan Stock Exchange (TWSE) open-data feed per run, applies your stock-code and company-name filters, and writes one normalized record per disclosure to the run's dataset. Pick the feed with the dataset input: monthly revenue, material announcements, financials summary, income statement, balance sheet, dividends, major shareholders, insider holdings, or company profiles. Every record carries stockCode, companyName, observedAt, and error; the remaining columns are the native fields of the selected feed. Missing source values are returned as null (or the source placeholder such as -).

Data covers all TWSE-listed companies in the chosen feed. Values are returned in the source's own format (Chinese labels and ROC-calendar dates where the feed uses them).

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 monthly-revenue records across all listed companies.

{
"maxDisclosures": 10,
"dataset": "monthly_revenue"
}

Add a stockCode (for example 2330 for TSMC) or a companyName substring to narrow the feed. Every input except a valid dataset default is optional.

Input reference

FieldTypeRequiredDefaultDescription
datasetenumnomonthly_revenueWhich TWSE feed to pull. One of monthly_revenue, material_announcements, financials, income_statement, balance_sheet, dividends, major_shareholders, insider_holdings, company_info. One dataset per run.
maxDisclosuresintegerno10Maximum number of disclosure records to collect. Range 1 to 1000000.
stockCodestringno(empty)Restrict to a single TWSE stock code, for example 2330 (TSMC) or 2317 (Hon Hai / Foxconn). Empty returns all companies.
companyNamestringno(empty)Case-insensitive substring match on the company name (Chinese or English where present), for example 台積 or Hon Hai.

Filters combine with logical AND.

Output reference

One dataset item per disclosure. Types are string or null (numeric feeds return numbers as strings, exactly as the source publishes them). These fields are present on every record regardless of dataset:

FieldTypeDescription
stockCodestringTWSE stock code.
companyNamestringCompany name (Chinese or English as the feed provides).
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

The remaining fields are the native columns of the dataset you select. Selected feeds:

monthly_revenue - reportDate, dataPeriod, industry, revenueCurrentMonth, revenuePreviousMonth, revenueYearAgoMonth, revenueMoMChangePct, revenueYoYChangePct, cumulativeRevenue, cumulativeRevenueYearAgo, cumulativeRevenueChangePct, note.

company_info - reportDate, companyAbbreviation, englishAbbreviation, industry, address, englishAddress, taxId, chairman, generalManager, spokesperson, spokespersonTitle, actingSpokesperson, phone, fax, email, website, establishedDate, listingDate, parValuePerShare, paidInCapital, sharesOutstanding, privatePlacementShares, preferredShares, financialReportType, foreignRegistrationCountry, transferAgent, transferAgentPhone, transferAgentAddress, auditFirm, auditor1, auditor2.

financials, income_statement, balance_sheet, dividends, major_shareholders, insider_holdings, material_announcements each return the native columns of that TWSE feed. Commonly seen fields include subject, basicEPS, majorShareholderName, reportDate, announcementDate, announcementTime, clause, eventDate, and description. Because these are passed through from the source feed, run the dataset once to confirm its exact columns.

Example output record

Real record from a live run (input {"dataset": "company_info", "companyName": "台泥"}):

{
"stockCode": "1101",
"companyName": "臺灣水泥股份有限公司",
"reportDate": "1150724",
"companyAbbreviation": "台泥",
"englishAbbreviation": "TCC",
"industry": "01",
"address": "台北市中山北路2段113號",
"englishAddress": "No.113, Sec.2, Zhongshan N. Rd.,Taipei City 104,Taiwan (R.O.C.)",
"taxId": "11913502",
"chairman": "張安平",
"generalManager": "程耀輝",
"spokesperson": "葉毓君",
"spokespersonTitle": "永續長",
"phone": "(02)2531-7099",
"fax": "(02)2531-6529",
"email": "finance@taiwancement.com",
"website": "https://www.tccgroupholdings.com/tw/",
"establishedDate": "19501229",
"listingDate": "19620209",
"paidInCapital": "77231817420",
"sharesOutstanding": "7523181742",
"auditFirm": "勤業眾信聯合會計師事務所",
"observedAt": "2026-07-25T03:02:54.018Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~taiwan-twse-disclosures-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"dataset":"monthly_revenue","stockCode":"2330","maxDisclosures":10}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~taiwan-twse-disclosures-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"dataset":"dividends","maxDisclosures":500}'

Apify CLI:

apify call scrapers_lat/taiwan-twse-disclosures-scraper \
--input '{"dataset":"company_info","companyName":"台泥"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per disclosure returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 disclosures per run. Upgrade for higher maxDisclosures.

FAQ and troubleshooting

A run returned 0 records. Why? Your stockCode or companyName filter matched nothing in the selected feed, or that feed was empty for the current period. Remove the filter or pick another dataset. Zero-result runs are not charged.

How do I get one company across a feed? Set stockCode to the exact code (for example 2330), or use a companyName substring. Both filter the selected dataset.

Why do the fields change between runs? Each dataset is a different official TWSE feed with its own columns. stockCode, companyName, observedAt, and error are always present; the rest depend on the feed you chose.

Why are dates like 1150717 or 19501229? Some feeds use the ROC calendar (year 115 = 2026) or a compact YYYYMMDD format. Values are returned exactly as the source publishes them, not reformatted.

Is this an official TWSE tool? No. This actor is independent and has no affiliation with the Taiwan Stock Exchange. It reads only data that is publicly available through the official TWSE open-data feeds.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the Taiwan Stock Exchange (TWSE). Accesses only publicly available TWSE open-data feeds.