Skip to main content
HomeDevelopers

Developer Portal

Dashboard
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')