Taiwan TWSE Company Financials & Disclosures Scraper
Pricing
from $11.54 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
20 hours ago
Last modified
Categories
Share
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
datasetyou pick (see Output reference); this record is themonthly_revenuefeed.
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
dataset | enum | no | monthly_revenue | Which 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. |
maxDisclosures | integer | no | 10 | Maximum number of disclosure records to collect. Range 1 to 1000000. |
stockCode | string | no | (empty) | Restrict to a single TWSE stock code, for example 2330 (TSMC) or 2317 (Hon Hai / Foxconn). Empty returns all companies. |
companyName | string | no | (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:
| Field | Type | Description |
|---|---|---|
stockCode | string | TWSE stock code. |
companyName | string | Company name (Chinese or English as the feed provides). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). 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
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon 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.
Related scrapers
- Taiwan Business Registry Scraper: Taiwan company registry records.
- Taiwan 104 Jobs Scraper: Taiwan 104.com.tw job listings.
- SEC EDGAR Company Filings Scraper: SEC filings by ticker or CIK.
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.
