JSE South Africa Stock Screener — Top 40 Data API
Pricing
from $50.00 / 1,000 jse stock records
JSE South Africa Stock Screener — Top 40 Data API
Screen JSE Top 40 stocks by market cap, P/E, dividend yield and more — clean JSON, no data-vendor contract. South Africa fundamentals for analysts and AI agents.
Pricing
from $50.00 / 1,000 jse stock records
Rating
0.0
(0)
Developer
NexGenData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
JSE South Africa Stock Screener
Screen JSE (South Africa) stocks by market cap, valuation and fundamentals. Built for analysts, quant researchers, fintech builders and AI agents. Factual public data — not financial or investment advice.
📊 Sample Output

name | ticker_yahoo | price_zar | price_usd | market_cap_zar | market_cap_billion_usd |
|---|---|---|---|---|---|
| BHP Group Limited | BHG.JO | 697.55 | 37.7054 | 3580000000000 | 193.5135 |
| Anheuser-Busch InBev SA/NV | ANH.JO | 1261.17 | 68.1714 | 2480000000000 | 134.0541 |
| Compagnie Financière Richemont SA | CFR.JO | 3380.8 | 182.7459 | 1990000000000 | 107.5676 |
| British American Tobacco p.l.c. | BTI.JO | 912.28 | 49.3124 | 1970000000000 | 106.4865 |
| Glencore plc | GLN.JO | 119.15 | 6.4405 | 1400000000000 | 75.6757 |
| Prosus N.V. | PRX.JO | 669.68 | 36.1989 | 1400000000000 | 75.6757 |
Real rows from run rThGePUh10DkXTgDJ on build 0.0.10 (2026-09-25), unedited apart from masked emails/phones and shortened long text; fields the source does not publish are empty.
🔧 Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
index | string (Top40, JSE-all) | "Top40" | Which JSE market scope to screen: Top40 (FTSE/JSE Top 40 large-cap constituents — Naspers NPN, Prosus PRX, BHP BHG, Anglo American AGL, Standard Bank SBK, Sasol SOL, FirstRand FSR… |
limit | integer | 40 | Maximum number of JSE-listed stocks to return. Stocks are returned in descending market-cap order. Use 10 for a quick smoke test, 40 for the FTSE/JSE Top 40 blue-chip basket, 100… |
min_market_cap_zar_billion | integer | 0 | Filter to stocks with market cap above this threshold, in BILLIONS of South African Rand (ZAR). Examples: 10 = R10B (mid-cap floor), 100 = R100B (Top 40 heavy-weight), 500 = R500B… |
sector | string | "" | Optional case-insensitive substring filter applied to sector, industry, and company name. Examples: 'bank' (Standard Bank, FirstRand, Absa, Nedbank, Capitec), 'mining' or 'gold' (… |
enrich_fundamentals | boolean | false | If true, fetch each stock's detail page on stockanalysis.com to extract P/E ratio, forward P/E, EPS, dividend yield, shares outstanding, beta, RSI, 52-week range, sector and indus… |
proxyConfiguration | object | {"useApifyProxy": true} | Apify proxy configuration. Defaults to Apify datacenter proxy for reliable global access to stockanalysis.com. Switch to RESIDENTIAL group only if you hit rate limits — the JSE li… |
🧾 JSON sample record
One real record from run rThGePUh10DkXTgDJ (emails/phones masked, long text shortened):
{"symbol": "BHG","name": "BHP Group Limited","ticker_yahoo": "BHG.JO","price_zac": 69755,"price_zar": 697.55,"price_usd": 37.7054,"pct_change": -0.81,"market_cap_zar": 3580000000000,"market_cap_billion_zar": 3580,"market_cap_billion_usd": 193.5135,"market_cap_display": "3.58T","revenue_ttm_zar": 963520000000,"revenue_ttm_billion_zar": 963.52,"revenue_ttm_billion_usd": 52.0822,"is_top40": true,"is_native_jse": true,"stockanalysis_url": "https://stockanalysis.com/quote/jse/BHG/","yahoo_finance_url": "https://finance.yahoo.com/quote/BHG.JO","jse_url": "https://www.jse.co.za/listed-companies/equities/BHG","scraped_at": "2026-09-25T03:21:04.556837Z","exchange": "JSE","exchange_full": "Johannesburg Stock Exchange (JSE)","country": "South Africa","currency": "ZAR","currency_full": "South African Rand","price_unit": "ZAc (cents)","fx_rate_zar_per_usd": 18.5}
💰 Pricing
| Event | Price (USD) | When it is charged |
|---|---|---|
Actor Start (apify-actor-start) | $0.01 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
JSE stock record (apify-default-dataset-item) | $0.05 | Charged per Johannesburg Stock Exchange (JSE) record returned with price (ZAR cents and rands), market cap, P/E, P/B, dividend yield, secto… |
Pay-per-event: you pay only for what the run delivers. A run that delivers nothing bills no result events (only the actor-start event, when the actor defines one). Example: a run that delivers 100 results costs 100 × $0.05 = $5.00 plus the start fee.
🔗 Related Actors
More from the NexGenData Asia-Pacific markets & registries family:
- HOSE Vietnam Stock Screener — VN30 Data API
- IDX Indonesia Stock Screener — LQ45 Data API
- Investegate RNS Scraper — UK Regulatory News (LSE/AIM)
- LSE UK Stock Screener — FTSE 100 & 250 Data API
- PSE EDGE Disclosures — Philippine Market API
- PSE Philippines Stock Screener — PSEi Data API
32 more in this family on the NexGenData Store page.
📊 What you get
Clean JSON, one record per stock. Key fields (full output has 27 fields per stock):
symbol— Exchange ticker symbolname— Company nameprice_usd— Latest traded price (local currency)market_cap_display— Market cap, human-readable (e.g. €12.4B)market_cap_zar— Market capitalizationpct_change— Daily percent changerevenue_ttm_billion_usd— Trailing-twelve-month revenueis_native_jse— Index-membership flagcurrency— Reporting currencyscraped_at— Data timestampjse_url— Source / reference URL
All prices in ZAR.
Local-market specifics: JSE quotes are in ZA cents (price_zac) with rand and USD conversions included; is_top40 flags JSE Top 40 members.
Pricing: $0.05 per stock (Pay-Per-Event) — about 20 per $1. Actor start fee $0.01 per run. Live prices are in the Pricing table below.
🤖 Use with AI agents
This actor returns structured JSON built for LLM and agent pipelines — no data-vendor contract, no scraping to maintain. Point Claude, a custom OpenAI Agents SDK tool, an n8n flow, or any MCP-aware client at it and get JSE Top 40 fundamentals on demand. Ask for a filtered slice and the agent gets exactly the rows it needs.
Sample agent prompt:
Screen the JSE Top 40 for dividend yield > 4% and market cap > $1B, return the top 20 as JSON.
Agentic payments (x402): Supports agentic payment via x402 — agents can call this actor with USDC, no API key required.
⏰ Run on a schedule
Refresh your screen weekly with a scheduled run:
{"limit": 50}
🔗 Related screeners
Other EMEA exchanges: Germany (Xetra), UK (LSE), Saudi (Tadawul), Turkey (BIST)
All 25+ markets in one place: Global Equities Screener MCP — the agent front door to every NexGenData screener.
Data sourced from public market pages and filings. Factual public data — not financial or investment advice.