The Tenders-SA Publisher Platform: A Complete Guide for Media, Bloggers & Developers
How any South African website can embed live government procurement data in under 10 minutes — no API keys, no backend, no maintenance.
The Tenders-SA Publisher Platform: A Complete Guide for Media, Bloggers & Developers
How any South African website can embed live government procurement data in under 10 minutes — no API keys, no backend, no maintenance.
The Problem With How Procurement News Gets Published
Every day, South African news sites, industry blogs, municipal communications teams, and procurement newsletters publish stories about government spending. And almost every one of them does the same thing: they link out to a PDF on a government portal that will be stale within days, or they quote tender values that are already out of date by the time the article goes live.
The data exists. The problem has always been making it live, filterable, and embeddable without requiring each publisher to build and maintain their own data pipeline.
That's exactly what the Tenders-SA Publisher Platform solves — and it does it for free.
What the Publisher Platform Actually Is
The publisher ecosystem is a separate product layer sitting on top of the same OCDS-integrated tender database that powers the main platform. It packages that data — 28,000+ award records, 1,500+ active tenders at any given time, hourly updates — into embeddable components that any website can drop in with a single script tag or iframe.
Currently, 850 verified publishers across South Africa use the platform, serving over 1.2 million monthly impressions of live procurement data to readers who may never visit tenders-sa.org directly. That includes regional news sites, chamber of commerce websites, investigative journalism portals, trade publications, and sector-specific blogs.
The full source code, integration documentation, and SDK reference live in the open Tenders-SA Publisher Hub on GitHub — MIT licensed, publicly available, and designed to be forked and extended.
The Four Core Widgets
🗺️ Provincial Tender Heatmap
The heatmap renders a live, colour-coded map of South Africa showing the real-time distribution of government tender activity across all nine provinces. Darker shading signals higher tender density. It updates automatically as new tenders enter the database — no scheduled refreshes needed on the publisher's side.
This widget is particularly well-suited to construction portals, policy blogs, and chamber of commerce websites where readers want a macro-level view of where government spending is concentrated at any given moment.
Embed it:
1[object Object], 2,[object Object]HTML
🏆 Tender Award Winners Feed
The most requested widget from publishers. It renders a live, scrolling stream of recently awarded South African government contracts — winning company name, contract value, awarding department, and province — drawn directly from the 28,000+ record awards database.
It refreshes automatically. There are no cron jobs to configure, no webhooks to manage, and no data freshness problem for the publisher to solve. The widget handles it.
Parameters supported: province, category, limit, theme (light / dark / auto), and lang (English by default, with Zulu and Afrikaans support currently in beta).
Embed it:
1[object Object]HTML
A regional site covering the Western Cape economy can embed this filtered to data-province="western-cape" and give readers a continuously updated view of which local firms are winning government contracts — without any editorial effort after the initial setup.
📊 Top Companies Leaderboard
The leaderboard surfaces the highest-value award recipients for a chosen sector or province, ranked by number of government contracts awarded. It answers a question that's genuinely difficult to answer from raw data: who are the dominant players in government procurement for a given industry?
For trade associations, finance news, and competitive intelligence blogs, this is the widget that drives the most engagement — because it names names. Readers in the construction sector want to know which firms are capturing the most infrastructure contracts. ICT readers want to know who's winning government software and services work.
Embed it:
1[object Object], 2,[object Object]HTML
📈 Sector Tender Trends
The sector trends widget visualises the volume and value of government tender opportunities across different industries over a rolling time window, reflecting actual spending patterns rather than projections or estimates.
For a construction sector magazine, this means embedding a chart that shows real infrastructure procurement activity rather than writing "the sector is expected to grow" with no data behind it. For ICT publications, it shows actual government technology spend trending over time.
Embed it:
1[object Object], 2,[object Object]HTML
Four Ways to Integrate — Choose What Fits Your Stack
1. No-Code iFrame / HTML Snippet
The simplest path. Drop an <iframe> or a script tag into any page on your CMS. Works on WordPress, Wix, Shopify, Ghost, Squarespace — anything that lets you paste HTML into a page or widget area. Zero configuration beyond choosing your province or sector filter.
This is the right path for editorial teams without development resources, municipal communications teams, and bloggers who want live data without touching code.
2. Pure JavaScript / Node.js SDK
For publishers with development capacity, the JavaScript SDK provides programmatic access to the full widget API. The SDK abstracts authentication, pagination, and the OCDS data schema — so developers can pull tender and award data into custom UI without needing to understand the underlying data format.
The async script tag approach pairs with the SDK for cases where you want to control widget initialisation:
1[object Object]HTML
1// Initialise after DOM is ready 2document.addEventListener('DOMContentLoaded', () => { 3 TendersaSA.init({ 4 widget: 'winners-feed', 5 container: '#my-tender-widget', 6 province: 'gauteng', 7 limit: 5, 8 theme: 'auto' 9 }); 10});JAVASCRIPT
3. React / Next.js Component
For modern JavaScript frameworks, an npm package (@tenderssa/widget) is in development, exposing each widget as a React component with typed props. For Next.js publishers, this handles server-side rendering considerations automatically — important for SEO-driven editorial sites where widget content needs to be indexable.
This is the right path for digital-first news platforms, GovTech blogs, and any publisher running a React-based front end.
4. RSS Feeds — The CMS-Agnostic Route
For WordPress sites using Feedzy or any RSS-capable CMS, Tenders-SA exposes a structured feed network that updates continuously as new tenders are ingested:
Each feed item includes the tender title, issuing authority, closing date, estimated value where disclosed, and a direct link to the full listing. These feeds are not batch-updated at midnight — they reflect the database in near real-time.
For newsletter publishers, any feed can be piped directly into Mailchimp, Beehiiv, ConvertKit, or any email platform that accepts RSS input. A procurement newsletter can run an entirely automated section of live tenders relevant to its readers' sector with zero manual curation.
The REST API — For Developers Who Want Custom UI
Publishers who want to go beyond the widget presets can query the data directly through public GET endpoints:
1GET /api/widgets/sector-trends 2GET /api/widgets/top-companiesTEXT
These return structured JSON that developers can use to build entirely custom visualisations — charts in D3, tables in custom CSS, integrated panels in a custom CMS. The widget layer uses these same endpoints, so what you see in the embedded widgets is exactly what's accessible through the API.
1// Example: fetch top construction companies in Western Cape 2const response = await fetch( 3 'https://tenders-sa.org/api/widgets/top-companies?sector=construction&province=western-cape' 4); 5const data = await response.json(); 6// Render however you likeJAVASCRIPT
Publisher Analytics Dashboard
Verified publishers get access to a lightweight analytics dashboard showing:
- Widget impression counts per embed
- Click-through rates to individual tender listings
- Top-performing widget configurations by engagement
- Geographic breakdown of reader interest by province
A provincial trade association embedding the winners feed might discover through analytics that their readers engage far more with construction awards than ICT awards — which informs editorial decisions about which sector to cover more deeply. This is actionable data that static content never produces.
What "Live" Actually Means at the Data Layer
It's worth being specific, because "live data" gets used loosely.
Tenders-SA ingests procurement notices from official eTenders portals hourly. When a new tender enters the database, it goes through the normalisation pipeline — classification, date extraction, compliance requirement parsing, title cleaning — and becomes available to the widget APIs within minutes of ingestion. The widgets use WebSocket connections to push updates to active embeds rather than waiting for the next page load.
The awards database updates as award announcements are published by government departments. Given that departments publish on irregular schedules, this isn't real-time in the way a stock ticker is — but it reflects official announcements within hours of publication, which is significantly faster than any manually curated alternative.
The practical implication: a reader visiting a page with an embedded Winners Feed on Monday will see different data than a reader visiting the same page on Friday, without the publisher having touched the page in between.
Getting Verified: How Publisher Onboarding Works
The publisher program is open to any South African media outlet, municipal communications team, industry association, or blog. There's no cost, no revenue share requirement, and no minimum traffic threshold.
Verification is lightweight — a domain check and a brief assessment of the site's relevance to procurement or business news — and typically completes within 24 hours.
What verification unlocks:
- Access to the analytics dashboard
- Widget configuration presets saved to your publisher account
- Priority support via the developer Slack channel
- Early access to new widgets before public release
Unverified publishers can still embed the basic widgets using public embed codes. Verification adds the analytics layer and account-based configuration tools.
Apply at: tenders-sa.org/publishers
The GitHub Repository
Everything you need to build with the publisher platform is open source:
github.com/Tenders-SA/tendersa-publisher-hub
The repository is MIT licensed — use, modify, and distribute freely, including in commercial projects. It contains:
- Source code for all four widget types (Heatmap, Winners Feed, Top Companies, Sector Trends)
- Integration guides for iFrame, JavaScript, React/Next.js, and RSS methods
- Quick-start copy-paste snippets for immediate deployment
- REST API endpoint documentation with example responses
- RSS feed structure reference
- Contribution guidelines for community extensions
The quick start is as minimal as it gets:
1 2,[object Object]HTML
From there, any <div> with the right data-widget attribute renders a live, styled, self-updating component.
If you're building something custom on top of the widgets — a bespoke sector dashboard, a CMS plugin, a mobile app reading the RSS feeds — the repo is the starting point. Issues and pull requests are open.
Who's Using This and Why It Works
The ecosystem has grown to 850 verified sites because it solves a persistent, specific problem: procurement data is genuinely newsworthy, but keeping it current is expensive for any individual publisher to manage alone.
A regional news site covering Limpopo economic development doesn't have the budget to run a tender data operation. But their readers — businesses, municipalities, civil society organisations — care deeply about where government money is going. Embedding a provincial winners feed and a sector trends chart alongside an article about infrastructure spending costs the editorial team nothing after the initial setup, and ensures the page continues to deliver value long after the article itself is written.
For investigative journalism portals, the Top Companies widget creates a continuously updated accountability resource: a live leaderboard of who is winning government contracts in each sector, sourced directly from official award announcements. That would previously have required a dedicated data team to build and maintain.
For chambers of commerce and trade associations, sector-filtered widgets give members a view of where procurement activity is concentrated in their industry — a genuine membership value-add that requires no ongoing editorial effort.
What's Coming
Zulu and Afrikaans language support is currently in beta across all widgets, with full release expected soon. For publishers serving non-English-speaking audiences, this significantly expands the addressable readership for embedded procurement data.
The @tenderssa/widget npm package will bring the widget suite into the modern JavaScript ecosystem as a typed React component library. Publishers running Next.js or Gatsby will be able to install it and render any widget with full TypeScript support and SSR compatibility out of the box.
Subcontractor opportunity feeds will extend the winners feed to surface not just prime contract awards but subcontracting opportunities arising from recently awarded contracts — relevant for smaller businesses and sector-specialist publications whose readers typically work as subcontractors rather than prime bidders.
Getting Started
The fastest path from zero to a live widget embed is under 10 minutes:
- Grab your embed code at tenders-sa.org/publishers
- Choose your widget and configure province/sector filters
- Paste the script tag or iframe into your CMS
- Apply for verified publisher status to unlock analytics
Developers who want to go deeper before signing up can start directly with the GitHub repository — working code examples for every integration method, no account required.
The data is live, the widgets are free, and the maintenance burden sits entirely on Tenders-SA's infrastructure. For South African publishers covering government spending, procurement policy, or economic development, there's no technical reason not to be showing live data.
Become a verified Tenders-SA publisher and access live data
Apply for Publisher AccessTags
Based on this article's topics, here are some current tenders that might interest you
FRAMEWORK CONTRACT FOR CONSTRUCTION, REFURBISHMENT, MAINTENANCE, REPAIRS, SUPPLY AND DELIVERY OF GENERAL BUILDING WORKS AND FENCING WITHIN MPUMALANGA PROVINCE FOR A PERIOD OF 36 MONTHS
COMMUNITY BASED COLLECTION OF GENERAL SOLID WASTE AT CHATSWORTH, RIVERLANDS AND KALBASKRAAL FOR THE PERIOD ENDING 30 JUNE 2029
The Ekurhuleni Housing Company (EHC) is seeking Invitation to request potential bidders to tender for the appointment of a panel of general maintenance and repairs services at various EHC housing complexes on an as and when required basis for a period of 36 months (3 years) bid reference no: EHC/PRM/2026
Provision of general security services for Manguzi & Skhemelele areas
Provision of general security services for Mbazwana & Mseleni areas
Appointment of a Service Provider for Facility Management of the Property, Letting, General Management, and Administrative Obligations Associated to Johannesburg International Transport Interchange (JITI), the property consists of 2 portions, that is, portion 27 of the farm Johannesburg 91 IR and the adjacent ERF 603 Newtown Ext 1, both Owned by the City of Johannesburg Metropolitan Municipality. Appointment will be for a period not exceeding 9 years and 11 months.
Want to see all available tenders?
Browse All Tenders →Share this article
The Tenders-SA Publisher Platform: A Complete Guide for Media, Bloggers & Developers
How any South African website can embed live government procurement data in under 10 minutes — no API keys, no backend, no maintenance.
