Tenders‑SA 개발자 API v2.1.0 출시 – 실시간 남아프리카 공공 조달 데이터, AI 풍부화 및 합规 도구

발행: (2026년 6월 15일 PM 07:58 GMT+9)
8 분 소요
원문: Dev.to

출처: Dev.to

The Tenders‑SA Developer API gives developers structured, real‑time access to South African public sector tenders, contract awards, supplier intelligence, forensic risk checks, and CIPC data — all from a single REST API.

남부 아프리카 정부의 조달은 수십 개의 포털에 분산되어 있습니다 — 국립 재무청 eTenders, Eskom, Transnet, SANRAL, 9개 지방 시스템 및 수천 개의 시정촌 플랫폼. 각 포털은 서로 다른 형식, 일정, 비일관된 구조로 데이터를 게시합니다.

The Tenders‑SA Developer API v2.1.0 solves this. It aggregates, normalises, and enriches all of that data into a single, consistent REST API that developers can integrate in minutes.

이 포스트에서는 제공되는 내용, 데이터 파이프라인 작동 방식, 그리고 첫 번째 API 호출 방법을 다룹니다.

API가 제공하는 내용

The API is versioned at https://api.tenders- sa.org and organizes data across these core domains:

Domain
What you get

**Tenders**
실시간 공고, 검색, 필터, 수정, OCDS 식별자

**Awards & Contracts**
수여된 공급업체, 금액, 계약 일자, 상태

**Organisations**
정부 부처 및 발행 기관

**Suppliers**
계약업체 프로필 및 계약 이력

**Directors & CIPC**
회사 등록, 담당자 조회, 풍부화된 프로필

**Forensic**
국가 재무청 제한 공급업체 검색 (퍼지 매칭)

**Documents**
입찰 문서 메타데이터 및 보안 다운로드 URL

**Intelligence**
시장 알림, 섹터 통찰, 큐레이션된 정보 항목

**Provinces & Categories**
참조 데이터, 건강 점수, 산업 벤치마크

**OCDS**
Open Contracting Data Standard 파티 데이터

인증

모든 엔드포인트는 Bearer 토큰이 필요합니다:

GET  /v2/tenders
Authorization: Bearer YOUR_TSA_API_KEY
Enter fullscreen mode

Exit fullscreen mode

키를 [tenders‑sa.org/개발자](https://www.tenders- sa.org/developers)에서 받으세요.

첫 번째 요청 만들기

성공적인 입찰을 provincia와 카테고리로 필터링하여 가져옵니다:

curl -G https://api.tenders- sa.org/v2/tenders \
   -H "Authorization: Bearer YOUR_TSA_API_KEY" \
   --data-urlencode "province=gauteng" \
   --data-urlencode "status=active" \
   --data-urlencode "limit=10"
Enter fullscreen mode

Exit fullscreen mode

일반적인 입찰 응답은 다음과 같습니다:

{
   "id": "tnd_01j...",
   "title": "Supply and Delivery of ICT Equipment",
   "source_organization": "Department of Basic Education",
   "province": "Gauteng",
   "closing_date": "2025-08-15T12:00:00Z",
   "estimated_value": 4500000,
   "bbbee_requirements": "Level 1-2 preferred",
   "ai_summary": "Procurement of laptops, tablets, and networking equipment for school connectivity programme.",
   "ai_key_requirements": "CIPC registration, valid tax clearance, minimum 3 years supply experience",
   "ai_confidence": 0.94,
   "status": "active"
}
Enter fullscreen mode

Exit fullscreen mode

ai_* 필드는 원시 스크래핑된 데이터가 아닙니다. 모든 입찰은 API에 도달하기 전에 풍부화 파이프라인을 거칩니다.

풍부화 파이프라인

원시 정부 조달 데이터는 일반적으로 바로 사용 가능한 형태가 아닙니다. API에서 기록되기 전, 각 기록은 다음과 같은 단계를 거칩니다:

1. Ingestion — OCDS 피드는 모든 주요 정부 소스에서 지속적인 동기화 일정으로 가져와집니다.

2. Normalisation — 소스 간 필드가 표준화됩니다: 날짜는 ISO 8601로, 값은 ZAR 부동소수점으로, провин스는 캐논ical 슬러그로, 카테고리는 일관된 택노미로.

3. AI Enrichment — 각 입찰은 AI 파이프라인이 다음을 추출합니다:

  • ai_summary — 구매 대상에 대한 평이한 설명
  • ai_key_requirements — 자격 요건 및 제출 요구사항
  • ai_title_enriched — 원본이 모호한 경우 수정된/확장된 제목
  • ai_confidence — 모델 신뢰도 점수(0~1)
  • analysis_quality_score — 전체 데이터 품질 등급

4. Document Analysis — 입찰 문서가 제공될 경우, 해당 문서는 가져와지고 추출 및 분석됩니다. document_analyzed 플래그와 ai_key_points 필드가 문서 수준 지능이 존재하는지를 나타냅니다.

5. Deduplication — 다중 소스에서 중복된 기록은 is_duplicateduplicate_of 필드를 통해 감지되고 표시됩니다. 따라서 애플리케이션은 동일한 기회를 두 번 노출하지 않습니다.

포렌식 및 규정 준수 검사

조달 플랫폼의 가장 많이 요청되는 기능 중 하나는 공급업체 위험 스크리닝입니다. API는 국가 재무청 제한 공급업체 등록을 다음 두 엔드포인트로 제공합니다:

퍼지 매칭 — 순위별 후보자를 반환합니다:

curl "https://api.tenders- sa.org/v2/forensic/restricted-suppliers/match?q=Acme+Construction" \
   -H "Authorization: Bearer YOUR_TSA_API_KEY"
Enter fullscreen mode

Exit fullscreen mode

시점 검증 — 불리언 허가 결과 반환:

curl "https://api.tenders- sa.org/v2/forensic/restricted-suppliers/check?q=Acme+Construction" \
   -H "Authorization: Bearer YOUR_TSA_API_KEY"
Enter fullscreen mode

Exit fullscreen mode

CIPC 담당자 조회(/v2/cipc/directors)와 함께 사용하면 API 내에서 완전한 엔티티 due diligence를 수행할 수 있습니다.

CIPC 및 담당자 정보

  • 입찰 제출 전 회사 등록 상태 확인
  • 여러 공급업체 엔티티 간 담당자 중복 식별
  • 구조화된 CIPC 데이터로 CRM 또는 규정 준수 기록을 풍부하게 함

프로빈스 건강 점수

각 프로빈스는 집계된 조달 건강 지표를 제공하는 건강 점수 엔드포인트를 보유하고 있습니다:

GET  /v2/provinces/{id}/health-scores
Enter fullscreen mode

Exit fullscreen mode

OCDS 규정 준수

모든 입찰 기록은 Open Contracting Data Standard에 맞는 ocid 필드를 포함합니다. /v2/ocds/parties 엔드포인트는 다른 OCDS-호환 시스템과 호환될 수 있도록 구조화된 파티 데이터를 제공하며, 글로벌 조달 투명성 툴킷을 기반으로 구축하는 데 유용합니다.

자바스크립트 빠른 시작

const BASE  = 'https://api.tenders- sa.org/v2';
const KEY  = process.env.TSA_API_KEY;
async function fetchTenders(province = 'gauteng', limit = 20) {
  const params = new URLSearchParams({ province, status: 'active', limit });
  const res = await fetch(`${BASE}/tenders?${params}`, {
    headers: { Authorization: `Bearer ${KEY}` }
  });
  if (!res.ok) throw new Error(`API error ${res.status}`);
  return res.json();
}
async function checkSupplier(name) {
  const params = new URLSearchParams({ q: name });
  const res = await fetch(`${BASE}/forensic/restricted-suppliers/check?${params}`, {
    headers: { Authorization: `Bearer ${KEY}` }
  });
  return res.json();
}
Enter fullscreen mode

Exit fullscreen mode

파이썬 빠른 시작

import os, httpx
BASE = "https://api.tenders- sa.org/v2"
HEADERS = {"Authorization": f"Bearer {os.environ['TSA_API_KEY']}"}
def fetch_tenders(province="gauteng", limit=20):
    r = httpx.get(f"{BASE}/tenders", headers=HEADERS,
                  params={"province": province, "status": "active", "limit": limit})
    r.raise_for_status()
    return r.json()
def check_supplier(name: str):
    r = httpx.get(f"{BASE}/forensic/restricted-suppliers/check",
                  headers=HEADERS, params={"q": name})
    r.raise_for_status()
    return r.json()
Enter fullscreen mode

Exit fullscreen mode

리소스

0 조회
Back to Blog

관련 글

더 보기 »