Back to Tutorials
IntermediateAwardsAnalyticsMarket IntelligenceAggregation
Award Analytics β Procurement Insights and Market Intelligence
Aggregate government award data to build procurement insights. Analyze spending by enterprise type, B-BBEE level, province, and category. Track trends over time.
4 stepsIntermediate
Prerequisites
- A valid Tenders-SA API key
- Understanding of JSON data structures
1
Analyze awards by enterprise type
Group award data by enterprise type (EME, QSE, Large) to understand how government spending is distributed across supplier categories.
curl
curl -H "Authorization: Bearer tsa_prod_YOUR_API_KEY" \ "https://api.tenders-sa.org/v1/awards/analytics?groupBy=enterpriseType&from=2026-01-01"Expected response:
JSON
{ "success": true, "data": [ { "enterpriseType": "QSE", "totalAwards": 145, "totalValue": 450000000, "avgValue": 3103448 }, { "enterpriseType": "EME", "totalAwards": 98, "totalValue": 125000000, "avgValue": 1275510 }, { "enterpriseType": "Large", "totalAwards": 67, "totalValue": 890000000, "avgValue": 13283582 } ], "meta": { "groupBy": "enterpriseType", "totalGroups": 3 }}2
Analyze by B-BBEE level
See how awards are distributed by B-BBEE level to understand the preferential procurement landscape.
curl
curl -H "Authorization: Bearer tsa_prod_YOUR_API_KEY" \ "https://api.tenders-sa.org/v1/awards/analytics?groupBy=beeLevel&from=2026-01-01"3
Track trends by month
Use month or quarter grouping to track award trends over time. This is useful for quarterly market reports and budgeting.
curl
curl -H "Authorization: Bearer tsa_prod_YOUR_API_KEY" \ "https://api.tenders-sa.org/v1/awards/analytics?groupBy=month&from=2026-01-01&to=2026-05-25"Expected response:
JSON
{ "success": true, "data": [ { "period": "2026-01", "totalAwards": 89, "totalValue": 285000000, "avgValue": 3202247 }, { "period": "2026-02", "totalAwards": 102, "totalValue": 310000000, "avgValue": 3039216 }, { "period": "2026-03", "totalAwards": 95, "totalValue": 275000000, "avgValue": 2894737 } ]}4
Build a procurement insights dashboard
Combine multiple analytics queries to build a comprehensive picture of government procurement activity.
JavaScript
const API = 'https://api.tenders-sa.org/v1'const KEY = 'tsa_prod_YOUR_API_KEY'const headers = { 'Authorization': `Bearer ${KEY}` } async function procurementDashboard(year) { const queries = [ fetch(`${API}/awards/analytics?groupBy=enterpriseType&from=${year}-01-01`, { headers }), fetch(`${API}/awards/analytics?groupBy=province&from=${year}-01-01`, { headers }), fetch(`${API}/awards/analytics?groupBy=month&from=${year}-01-01`, { headers }), ] const [byType, byProvince, byMonth] = await Promise.all(queries) const results = await Promise.all([byType.json(), byProvince.json(), byMonth.json()]) console.log(`=== Procurement Dashboard ${year} ===`) console.log('\nSpending by Enterprise Type:') results[0].data.forEach(d => console.log(` ${d.enterpriseType}: R${(d.totalValue / 1e6).toFixed(1)}M (${d.totalAwards} awards)`) ) console.log('\nTop Provinces:') results[1].data.slice(0, 3).forEach(d => console.log(` ${d.province}: R${(d.totalValue / 1e6).toFixed(1)}M`) ) console.log('\nMonthly Trend:') results[2].data.forEach(d => console.log(` ${d.period}: R${(d.totalValue / 1e6).toFixed(1)}M`) )} procurementDashboard('2026')