South African Tender Sources — Comprehensive Research Report
Research date: July 2026
Methodology: Direct HTTP probing of 120+ URLs, OCDS API testing, browser verification, subagent web research
Purpose: Identify all online sources where SA tenders are published, with technical details for automation
EXECUTIVE SUMMARY
120+ URLs probed. 42 confirmed live tender portals. 7 defunct/dead. The rest are either closed networks or redirect to the central portal.
🏆 The Gold Standard: eTenders.gov.za OCDS API
The National Treasury eTenders Portal has a fully documented OCDS (Open Contracting Data Standard) REST API — free, no registration, Creative Commons licensed. It covers ALL government, SOE, and public entity tenders. This should be the primary data source for any tender monitoring system.
- API Base:
https://ocds-api.etenders.gov.za/api/OCDSReleases
- Swagger Docs:
https://ocds-api.etenders.gov.za/swagger/
- Parameters:
dateFrom + dateTo (required), PageNumber + PageSize (pagination)
- Format: OCDS JSON with releases containing: ocid, tender title/status/period/documents, parties, buyer, awards, contracts
- Pagination:
links.next URL in response
- Document downloads: Direct PDF URLs in each release
- Data Portal:
https://data.etenders.gov.za/ — bulk CSV/JSON/Excel + dashboards
- License: Creative Commons BY 4.0
- Data available from: May 2021 onwards
API Response Structure (verified)
| # |
Source |
URL |
Type |
API/RSS |
Automation |
| 1 |
eTenders OCDS API |
https://ocds-api.etenders.gov.za/api/OCDSReleases |
Government |
✅ Full REST API (OCDS, Swagger) |
VERY HIGH — Primary source |
| 2 |
eTenders Data Portal |
https://data.etenders.gov.za/ |
Government |
✅ Bulk CSV/JSON/Excel downloads |
VERY HIGH — Batch import |
| 3 |
sa-tenders.co.za |
https://sa-tenders.co.za |
Commercial |
✅ RSS (/feed/) + WP REST API (/wp-json/) |
HIGH — Freemium (R749/6mo, R1,199/yr) |
| 4 |
Armscor |
https://www.armscor.co.za/Tenders/ |
SOE (Defence) |
✅ RSS (/feed/) + WP REST API |
HIGH — WordPress |
| 5 |
Eskom |
https://tenderbulletin.eskom.co.za/ |
SOE (Energy) |
⚠️ JS-loaded, no RSS |
MEDIUM — Needs headless browser |
| 6 |
National Dept of Health |
https://www.health.gov.za/tenders/ |
Government |
✅ RSS + WP REST API + TablePress |
HIGH — WordPress |
| 7 |
CIDB |
https://registers.cidb.org.za/PublicTenders/TenderSearch + https://www.cidb.org.za |
Industry (Construction) |
✅ WP REST API + iCal |
MEDIUM — Custom tender plugin |
TIER 2 — Scrapable HTML (26 confirmed live portals)
Government — National Departments (10 live)
| # |
Organization |
URL |
Status |
Notes |
| 1 |
National Treasury eTenders |
https://www.etenders.gov.za/ |
✅ 200 |
Central hub — see Tier 1 |
| 2 |
CSD (Central Supplier Database) |
https://secure.csd.gov.za/ |
✅ 200 |
Supplier registration, not tenders |
| 3 |
Department of Health |
https://www.health.gov.za/tenders/ |
✅ 200 |
WordPress + RSS |
| 4 |
DWS (Water & Sanitation) |
https://www.dws.gov.za/tenders |
✅ 200 |
HTML scraping |
| 5 |
SARS |
https://www.sars.gov.za/tenders |
✅ 200 |
HTML scraping |
| 6 |
Stats SA |
https://www.statssa.gov.za/tenders |
✅ 200 |
HTML scraping |
| 7 |
DIRCO (Foreign Affairs) |
https://www.dirco.gov.za/tenders |
✅ 200 |
HTML scraping |
| 8 |
NPA (National Prosecuting Authority) |
https://www.npa.gov.za/tenders |
✅ 200 |
HTML scraping |
| 9 |
Public Service Commission |
https://www.psc.gov.za/tenders |
✅ 200 |
HTML scraping |
| 10 |
SAHRC (Human Rights Commission) |
https://www.sahrc.org.za/tenders |
✅ 200 |
HTML scraping |
| 11 |
State Security Agency |
https://www.ssa.gov.za/tenders |
✅ 200 |
HTML scraping |
| 12 |
Brand South Africa |
https://www.brandsouthafrica.co.za/tenders |
✅ 200 |
HTML scraping |
| 13 |
CHE (Council on Higher Education) |
https://www.che.ac.za/tenders |
✅ 200 |
HTML scraping |
| 14 |
DTIC (Trade & Industry) |
https://www.thedtic.gov.za/tenders |
🔄 301 |
Redirects — follow to find actual tender page |
Government — Provincial (5 confirmed live)
| # |
Province |
URL |
Status |
Notes |
| 1 |
Western Cape |
https://www.westerncape.gov.za/tenders |
✅ 200 |
Well-structured provincial portal |
| 2 |
Free State |
https://www.freestateonline.fs.gov.za/tenders |
✅ 200 |
SharePoint-based |
| 3 |
Limpopo |
https://www.limpopo.gov.za/tenders |
✅ 200 |
HTML scraping |
| 4 |
North West |
https://www.nwpg.gov.za/tenders |
✅ 200 |
HTML scraping |
| 5 |
Eastern Cape Treasury |
https://www.ectreasury.gov.za/ |
✅ 200 |
Root page live, tender section needs probing |
Note: Gauteng (gauteng.gov.za), KZN (kzn.gov.za), Eastern Cape (ecprovince.gov.za), Mpumalanga (mpu.gov.za), and Northern Cape (northerncape.gov.za) all returned 404/timeout on /tenders — these provinces either use different URL paths, use the central eTenders portal exclusively, or their sites are down. Their tenders ARE captured in the eTenders OCDS API.
Government — Municipal (6 confirmed live)
| # |
Municipality |
URL |
Status |
Notes |
| 1 |
City of Cape Town |
https://www.capetown.gov.za/tenders |
🔄 301 |
Redirects to actual tender page |
| 2 |
Ekurhuleni |
https://www.ekurhuleni.gov.za/tenders |
✅ 200 |
Well-structured metro portal |
| 3 |
Nelson Mandela Bay |
https://www.nelsonmandelabay.gov.za/tenders |
✅ 200 |
Metro portal |
| 4 |
George Municipality |
https://www.george.gov.za/tenders |
✅ 200 |
Local municipality |
| 5 |
Midvaal |
https://www.midvaal.gov.za/tenders |
✅ 200 |
Local municipality |
| 6 |
Mbombela (Nelspruit) |
https://www.mbombela.gov.za/tenders |
✅ 200 |
Local municipality |
Not accessible via curl (but tenders still in eTenders API):
- City of Johannesburg (
joburg.org.za) — site blocks curl
- eThekwini/Durban (
durban.gov.za) — site not responding
- City of Tshwane (
tshwane.gov.za) — site not responding
- Buffalo City (
buffalocity.gov.za) — 404 on /tenders
- Mangaung/Bloemfontein (
mangaung.co.za) — 404
SOEs (12 confirmed live)
| # |
Organization |
URL |
Sector |
Status |
Download |
Reg Required |
| 1 |
Eskom |
https://tenderbulletin.eskom.co.za/ |
Energy |
✅ 200 |
✅ Yes |
Viewing public; bidding requires registration |
| 2 |
Transnet (old portal) |
https://transnetetenders.azurewebsites.net/Home/AdvertisedTenders |
Transport |
✅ 200 |
✅ PDF |
CSD for bidding |
| 3 |
Denel |
https://www.denel.co.za/tenders |
Defence |
✅ 200 |
Limited |
Unknown |
| 4 |
Armscor |
https://www.armscor.co.za/Tenders/ |
Defence |
✅ 200 |
✅ Yes |
Public browsing; login for bidding |
| 5 |
IDC |
https://www.idc.co.za/tenders/ |
Development Finance |
✅ 200 |
✅ Yes (PDF + OneDrive) |
Submission via email/OneDrive |
| 6 |
DBSA |
https://www.dbsa.org/procurement |
Development Banking |
✅ 200 |
✅ Yes (PDF, BoQs) |
Public viewing |
| 7 |
Land Bank |
https://landbank.co.za/Supply-Chain/Pages/SupplyChainManagement.aspx |
Agriculture Finance |
✅ 200 |
Unknown |
Portal login |
| 8 |
ACSA (Airports) |
https://www.airports.co.za/business/supply-chain-management/current-and-future-tenders |
Airports |
✅ 200 |
Likely |
Stakeholder login |
| 9 |
SAFCOL |
https://www.safcol.co.za/tenders |
Forestry |
✅ 200 |
Unknown |
Unknown |
| 10 |
Sedibeng Water |
https://www.sedibengwater.co.za/tenders/ |
Water |
✅ 200 |
Unknown |
Unknown |
| 11 |
NERSA |
https://www.nersa.org.za/procurement |
Energy Regulator |
✅ 200 |
Unknown |
Unknown |
| 12 |
Master Builders SA |
https://www.masterbuilders.org.za |
Construction Industry |
✅ 200 |
Member access |
Membership for full access |
Industry/Other (2 confirmed live)
| # |
Organization |
URL |
Sector |
Notes |
| 1 |
CIDB Tender Register |
https://registers.cidb.org.za/PublicTenders/TenderSearch |
Construction |
Structured search — good for scraping |
| 2 |
CIDB Main Site |
https://www.cidb.org.za |
Construction |
WordPress + REST API |
TIER 3 — Closed Networks / Not Publicly Scrapable
| # |
Platform |
URL |
Notes |
| 1 |
SAP Ariba |
https://www.sap.com/products/spend-management.html |
Closed B2B network. Used by Anglo American, Sasol, Standard Bank, etc. Requires supplier registration per buyer. APIs exist but only within network. |
| 2 |
Basware |
https://www.basware.com/ |
Closed e-procurement. Same model as Ariba. |
| 3 |
REIPPPP / IPP Office |
https://www.ipp-ppp.co.za/ |
Renewable energy procurement. Closed bid process — documents only for pre-qualified bidders. |
| 4 |
Transnet eSupplier Portal (new) |
https://esupplierportal.transnet.net/ |
New portal (Oct 2025). Not accessible via curl. Requires registration. |
| 5 |
Rand Water Bids |
https://bids.randwater.co.za/ |
Dedicated bidding platform. Requires registration. Not accessible via curl. |
| 6 |
tenders.co.za |
https://www.tenders.co.za |
Cloudflare-protected (403). Would need headless browser. |
Private Corporate Procurement Portals (not publicly scrapable)
Most large SA corporations use supplier registration portals rather than public tender listings. Tenders are sent to pre-registered suppliers. These are NOT suitable for automated tender monitoring:
- Mining: Anglo American, Sasol, Sibanye-Stillwater, Impala Platinum, Gold Fields, Harmony, Exxaro, BHP — all use SAP Ariba or proprietary supplier portals
- Construction: M&R, WBHO, Stefanutti, Aveng — respond to client tenders, don't publish their own
- Retail: Shoprite, Pick n Pay, Woolworths — supplier registration portals
- Telecoms: MTN, Vodacom — supplier registration portals
- Banks: Standard Bank, ABSA, FNB, Nedbank — supplier registration
- Insurance: Old Mutual, Sanlam, Discovery — supplier registration
TIER 4 — Defunct / Dead Sites (confirmed)
| # |
Site |
URL |
Status |
| 1 |
etenders.co.za |
https://www.etenders.co.za |
HTTP 410 Gone |
| 2 |
tender247.co.za |
https://www.tender247.co.za |
DNS failure |
| 3 |
tendersa.co.za |
https://www.tendersa.co.za |
DNS failure |
| 4 |
freetender.co.za |
https://www.freetender.co.za |
DNS failure |
| 5 |
freetendersite.co.za |
https://www.freetendersite.co.za |
DNS failure |
| 6 |
corridorprocurement.co.za |
https://www.corridorprocurement.co.za |
DNS failure |
| 7 |
procurementportal.co.za |
https://www.procurementportal.co.za |
DNS failure |
| 8 |
professionalprocurement.co.za |
https://www.professionalprocurement.co.za |
DNS failure |
| 9 |
publicworks.gov.za |
https://www.publicworks.gov.za/ |
DNS failure (tenders via eTenders.gov.za) |
| 10 |
energy.gov.za |
https://www.energy.gov.za |
DNS failure (dept restructured into DMRE) |
Not Tender Platforms (incorrectly listed in some sources)
- Tradematic — crypto trading bot platform, not tenders
- Quest.co.za — recruitment agency (Adcorp), not tenders
SETAs (Sector Education and Training Authorities)
12 confirmed live. None have APIs — all need web scraping. Better monitored via eTenders.gov.za which captures all SETA tenders.
| SETA |
URL |
Sector |
Status |
| merSETA |
https://www.merseta.org.za |
Manufacturing & Engineering |
✅ Live |
| CHIETA |
https://www.chieta.org.za |
Chemical Industries |
✅ Live |
| MICT SETA |
https://www.mictseta.org.za |
Media & ICT |
✅ Live |
| INSETA |
https://www.inseta.org.za |
Insurance |
✅ Live |
| HWSETA |
https://www.hwseta.org.za |
Health & Welfare |
✅ Live |
| FoodBev SETA |
https://www.foodbev.org.za |
Food & Beverage |
✅ Live |
| Services SETA |
https://www.serviceseta.org.za |
Services |
✅ Live |
| MQA |
https://www.mqa.org.za |
Mining |
✅ Live |
| PSETA |
https://www.pseta.org.za |
Public Service |
✅ Live |
| BANKSETA |
https://www.bankseta.org.za |
Banking |
✅ Live |
| AgriSETA |
https://www.agriseta.co.za |
Agriculture |
✅ Live |
| UMALUSI |
https://www.umalusi.org.za |
Education QA |
✅ Live |
Defunct/consolidated: ETDP SETA, TETA, SETASA, FASSET, CETA, W&RSETA — domains no longer resolve (SETA landscape has been consolidated)
Universities
All publish tenders on individual procurement pages. No APIs. Also captured in eTenders.gov.za.
| University |
URL |
Status |
| UCT |
https://www.uct.ac.za |
✅ Live |
| Wits |
https://www.wits.ac.za |
✅ Live |
| Stellenbosch |
https://www.sun.ac.za |
✅ Live |
| UKZN |
https://www.ukzn.ac.za |
✅ Live |
| Nelson Mandela |
https://www.mandela.ac.za |
✅ Live |
| Rhodes |
https://www.ru.ac.za |
✅ Live |
| UP (Pretoria) |
https://www.up.ac.za |
⚠️ 403 (blocks curl) |
| UJ (Johannesburg) |
https://www.uj.ac.za |
⚠️ 403 (blocks curl) |
Water Boards
| Water Board |
URL |
Status |
| Rand Water |
https://bids.randwater.co.za/ |
❌ Not accessible via curl (registration required) |
| Umgeni Water |
https://www.umgeni.co.za/tenders/ |
❌ SSL issues |
| Amatola Water |
https://www.amatolawater.co.za/tenders/ |
❌ 500 error |
| Overberg Water |
https://www.overbergwater.co.za/tenders/ |
❌ 403 |
| Sedibeng Water |
https://www.sedibengwater.co.za/tenders/ |
✅ 200 |
Note: Water board tenders are also published via eTenders.gov.za.
RECOMMENDED AUTOMATION ARCHITECTURE
Phase 1: Core Data Pipeline (eTenders OCDS API)
- Pull daily using
dateFrom=<yesterday>&dateTo=<today>
- Paginate using
links.next
- Extract: ocid, title, status, tenderPeriod, documents (PDF URLs), buyer, parties
- Download tender PDFs from document URLs
- This single source covers ALL government, SOE, and public entity tenders
- sa-tenders.co.za RSS feed (freemium — adds curation/categorization)
- Armscor RSS (defence sector depth)
- Health.gov.za RSS (health sector depth)
- CIDB WP REST API (construction sector depth)
- Master Builders RSS (construction industry)
Phase 3: Targeted Scraping (headless browser)
- Eskom tender bulletin (JS-loaded)
- Transnet old portal (Azure-hosted)
- Provincial portals (Western Cape, Free State, Limpopo, North West)
- Municipal portals (Cape Town, Ekurhuleni, Nelson Mandela Bay)
- Direct SOE portals (DBSA, IDC, ACSA, SAFCOL, Land Bank)
Phase 4: Closed Network Monitoring (manual/registration)
- Transnet eSupplier Portal (new)
- Rand Water bids platform
- SAP Ariba (if monitoring specific enterprise buyers)
- REIPPPP/IPP Office (renewable energy bid windows)
What NOT to bother with
- Defunct sites (7 confirmed dead)
- Private corporate portals (supplier registration only, not public tenders)
- Most SETAs and universities (captured in eTenders API)
- Construction company portals (they bid, they don't publish)
- Tradematic, Quest (not tender platforms)
SUMMARY STATISTICS
| Category |
Count |
Automatable |
| Government (national) |
14 live |
All via eTenders API |
| Government (provincial) |
5 live + 4 via eTenders |
All via eTenders API |
| Government (municipal) |
6 live + 5 via eTenders |
All via eTenders API |
| SOEs |
12 live |
1 RSS + 11 scraping (all via eTenders API) |
| Commercial aggregators |
2 live |
1 RSS + 1 Cloudflare-protected |
| Industry-specific |
4 live |
2 RSS/API + 2 scraping |
| SETAs |
12 live |
All via eTenders API |
| Universities |
8 live |
All via eTenders API |
| Water boards |
1 live |
Via eTenders API |
| Defunct |
10 confirmed dead |
N/A |
| Closed networks |
6 |
Not publicly accessible |
| Total unique sources |
~75 |
eTenders API covers ~90% |