KLSE / Bursa Malaysia Stock Fundamentals Scraper avatar

KLSE / Bursa Malaysia Stock Fundamentals Scraper

Pricing

Pay per usage

Go to Apify Store
KLSE / Bursa Malaysia Stock Fundamentals Scraper

KLSE / Bursa Malaysia Stock Fundamentals Scraper

Scrape KLSE (Bursa Malaysia) stock fundamental data including P/E ratio, EPS, dividend yield, and financial metrics for Malaysian-listed companies.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

lewxiangang

lewxiangang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Scrape fundamental financial data for 1,000+ Malaysian stocks listed on Bursa Malaysia (KLSE). Get quarterly results, annual summaries, dividends, and financial ratios in machine-readable JSON or CSV format.

The first and only Apify actor dedicated to Malaysian stock fundamentals.

What data does it collect?

Data TypeFields
Company InfoName, sector, market (Main/ACE/LEAP), current price, market cap
Quarterly ResultsRevenue, net profit, EPS (sen), profit margin per quarter
Annual SummaryRevenue, net profit, EPS, PE, ROE, NTA, dividend yield, DPS per year
DividendsEx-date, payment date, dividend per share (sen), type (interim/final/special)
Financial RatiosPE, PB, ROE, ROA, debt-to-equity, current ratio, dividend yield

Why use this actor?

AlternativeCostCoverageMachine-readable?
Bloomberg Terminal~$25,000/yearFullYes
EODHD API$19.99-$99.99/monthPartial KLSEYes
KLSE ScreenerRM5/monthFull KLSENo (web only)
This ActorPay-per-useFull KLSEYes (JSON/CSV)

No subscriptions. No minimums. Pay only for what you scrape.

Use Cases

  • Retail investors: Screen all 1,000+ Bursa stocks by PE, ROE, dividend yield
  • Quant trading: Feed fundamentals into algorithmic trading models
  • Fintech apps: Power stock screeners, portfolio trackers, robo-advisors
  • Academic research: Analyze Malaysian market trends across decades
  • Financial advisors: Generate client reports with up-to-date fundamentals

Input

{
"stockCodes": ["MAYBANK", "CIMB", "TENAGA"],
"market": "all",
"dataTypes": ["quarterly_results", "annual_summary", "dividends", "ratios"],
"yearsHistory": 5,
"maxConcurrency": 3
}

Input Parameters

ParameterTypeDefaultDescription
stockCodesarray[]Stock codes to scrape (e.g., ["MAYBANK", "CIMB"]). Leave empty for all stocks.
stockNumbersarray[]Alternative: Bursa stock numbers (e.g., ["1155", "1023"])
marketstring"all"Filter by market: all, main, ace, leap
dataTypesarrayallData to collect: quarterly_results, annual_summary, dividends, ratios
yearsHistoryinteger5Years of historical data (1-10)
outputFormatstring"json"Output format: json or csv
maxConcurrencyinteger3Max concurrent requests (1-10). Keep low to avoid blocks.
proxyConfigurationobjectApify proxyProxy settings. Recommended for large scrapes.

Output Example

{
"stockCode": "MAYBANK",
"stockNumber": "1155",
"companyName": "Malayan Banking Berhad",
"market": "Main Market",
"sector": "Financial Services",
"currentPrice": 9.45,
"marketCap": 112000,
"currency": "MYR",
"quarterly": [
{
"quarter": "Q3 2025",
"date": "2025-09-30",
"revenue": 18234000,
"netProfit": 2456000,
"eps": 21.5,
"margin": 13.47
},
{
"quarter": "Q2 2025",
"date": "2025-06-30",
"revenue": 17890000,
"netProfit": 2380000,
"eps": 20.8,
"margin": 13.30
}
],
"annual": [
{
"year": 2024,
"revenue": 70123000,
"netProfit": 9234000,
"eps": 80.5,
"pe": 11.7,
"roe": 10.8,
"nta": 7.45,
"dividendYield": 5.82,
"dps": 55.0
}
],
"dividends": [
{
"exDate": "2025-03-15",
"paymentDate": "2025-04-10",
"dividendPerShare": 30.0,
"type": "interim"
},
{
"exDate": "2024-09-20",
"paymentDate": "2024-10-15",
"dividendPerShare": 25.0,
"type": "final"
}
],
"ratios": {
"pe": 11.7,
"pb": 1.27,
"roe": 10.8,
"roa": 1.05,
"debtToEquity": null,
"currentRatio": null,
"dividendYield": 5.82
},
"scrapedAt": "2026-03-09T08:30:00.000Z"
}

Notes on Data Units

  • EPS and DPS are in sen (1 MYR = 100 sen)
  • Revenue and net profit are in MYR thousands (as reported by source)
  • Market cap is in MYR millions
  • Percentages (ROE, ROA, margin, dividend yield) are raw numbers (e.g., 10.8 means 10.8%)
  • Currency: Most companies report in MYR. Offshore companies reporting in USD are flagged with "currency": "USD"

Supported Stocks

The actor includes a built-in mapping of 100+ top KLSE stocks covering:

  • All 30 FBMKLCI component stocks
  • Major stocks across all sectors: banking, plantations, technology, property, energy, healthcare, REITs, telecommunications
  • Selected ACE Market stocks

For stocks not in the built-in list, simply pass the stock code as shown on i3investor — the actor will attempt to scrape it.

How It Works

  1. Accepts stock codes (or numbers) as input
  2. Fetches stock overview, quarterly financials, annual financials, and dividend pages from i3investor.com
  3. Parses HTML tables using Cheerio (fast, no browser needed)
  4. Merges data per stock into a single comprehensive record
  5. Outputs to Apify dataset in JSON or CSV format

Data is sourced from i3investor.com, which aggregates public Bursa Malaysia regulatory filings.

Performance

ScenarioEstimated TimeEstimated Cost
10 stocks, all data~2 minutes~$0.01
100 stocks, all data~15 minutes~$0.05
All 1,000+ stocks~2 hours~$0.50

Estimates based on Apify platform pricing. Actual costs depend on proxy usage and retries.

Tips

  • Start small: Test with 3-5 stocks before running full market scans
  • Use proxy: Enable Apify proxy for reliable scraping, especially for 100+ stocks
  • Rate limiting: Keep maxConcurrency at 3 or below to avoid being blocked
  • Schedule runs: Set up weekly/monthly schedules for regular data updates
  • Combine with other actors: Pair with Yahoo Finance actors for cross-referencing price data

Cost Estimation

ResultsEstimated Cost
100 results~$0.10
1,000 results~$1.00
5,000 results~$5.00
10,000 results~$10.00

Costs include Apify platform usage fees. Actual cost depends on proxy usage, retries, and data volume per stock. Check the Apify pricing page for current platform rates.

Integrations

Access your scraped data through multiple channels:

  • API: Programmatic access to datasets via Apify API
  • Webhooks: Trigger external services when a scrape completes
  • Zapier: Connect to 5,000+ apps via the Apify Zapier integration
  • Google Sheets: Export results directly to Google Sheets from the Apify console
  • Make.com: Build automated workflows with the Apify Make integration

FAQ

How fresh is the data? Data is sourced from public regulatory filings via i3investor.com. Financial results are typically available 1-2 trading days after companies file with Bursa Malaysia.

Can I scrape all 1,000+ stocks at once? Yes. Leave the stockCodes and stockNumbers fields empty to scrape all available stocks. This takes approximately 2 hours and costs around $0.50.

What format is the output? JSON by default. You can export to CSV, Excel, or Google Sheets directly from the Apify console or via the API.

Is this real-time stock data? No. This actor collects fundamental data from regulatory filings (quarterly results, annual reports, dividends, ratios). It does not provide real-time or delayed stock prices. For price data, pair this with a dedicated stock price actor.

This actor scrapes publicly available data from i3investor.com. All financial data originates from public regulatory filings submitted to Bursa Malaysia.

  • This is not real-time data — all prices and financials are delayed
  • This is not investment advice — always do your own research
  • This actor does not scrape bursamalaysia.com directly
  • Users are responsible for complying with the terms of service of data sources
  • Data is provided "as-is" without warranty of accuracy or completeness

Looking for Malaysian marketplace data? Check out Mudah.my Scraper for car prices, property listings, and electronics deals.