South Africa eTender Government Procurement Scraper avatar

South Africa eTender Government Procurement Scraper

Pricing

from $3.50 / 1,000 results

Go to Apify Store
South Africa eTender Government Procurement Scraper

South Africa eTender Government Procurement Scraper

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Fortuitous Pirate

Fortuitous Pirate

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

South Africa eTender Scraper

Scrapes government tender opportunities from South Africa's eTender portal. This Apify actor collects procurement opportunities published by South African government departments, municipalities, and state-owned entities.

API Sources

API Key: Not required

Input Parameters

ParameterTypeRequiredDefaultDescription
querystringNo-Full-text search keyword to filter tenders
departmentstringNo-Filter by government department name
provinceenumNo-Filter by South African province
categorystringNo-Filter by tender category
statusenumNo-Filter by tender status
limitintegerNo100Maximum number of tenders to return (max: 5000)

Province Values

  • "" - All provinces
  • Gauteng
  • Western Cape
  • KwaZulu-Natal
  • Eastern Cape
  • Free State
  • Limpopo
  • Mpumalanga
  • North West
  • Northern Cape

Status Values

  • "" - All statuses
  • Open - Currently accepting bids
  • Closed - Bidding period ended
  • Awarded - Contract awarded
  • Cancelled - Tender cancelled

Output Fields

Each tender record contains the following fields:

FieldTypeDescription
tenderNumberstringOfficial tender reference number
titlestringTender title or description
departmentstringIssuing government department or entity
provincestringProvince where the tender applies
categorystringTender category classification
statusstringCurrent tender status
closingDatestringDeadline for bid submission
publishDatestringDate tender was published
briefingDatestringCompulsory briefing session date (if applicable)
briefingVenuestringLocation of briefing session
contactPersonstringName of contact person for enquiries
contactEmailstringEmail address for enquiries
contactPhonestringPhone number for enquiries
estimatedValuenumberEstimated contract value in ZAR
bidValiditystringRequired bid validity period
specialConditionsstringSpecial conditions or requirements
documentsarray/stringTender document links or references
urlstringDirect URL to tender details
scrapedAtstringISO timestamp when data was scraped

Example Input

{
"query": "construction",
"province": "Gauteng",
"status": "Open",
"limit": 50
}

Example Output

{
"tenderNumber": "GT/2024/001234",
"title": "Construction of Community Health Centre",
"department": "Department of Health",
"province": "Gauteng",
"category": "Construction",
"status": "Open",
"closingDate": "2024-03-15T11:00:00",
"publishDate": "2024-02-15T00:00:00",
"briefingDate": "2024-02-28T10:00:00",
"briefingVenue": "Department of Health, Pretoria",
"contactPerson": "John Smith",
"contactEmail": "tenders@health.gov.za",
"contactPhone": "+27 12 345 6789",
"estimatedValue": 15000000,
"bidValidity": "90 days",
"specialConditions": "BBBEE Level 1-4 required",
"documents": ["https://www.etenders.gov.za/docs/GT2024001234.pdf"],
"url": "https://www.etenders.gov.za/tender/GT2024001234",
"scrapedAt": "2024-02-20T14:30:00.000Z"
}

Usage

Run on Apify Platform

  1. Go to the actor page on Apify
  2. Configure input parameters
  3. Click "Start" to run the scraper
  4. Download results in JSON, CSV, or Excel format

Run Locally

# Clone the repository
git clone <repository-url>
cd southafrica-etender-scraper
# Install dependencies
npm install
# Run with Apify CLI
apify run -i '{"query": "IT services", "province": "Western Cape", "limit": 50}'

Integrate via API

curl -X POST "https://api.apify.com/v2/acts/<actor-id>/runs" \
-H "Authorization: Bearer <your-api-token>" \
-H "Content-Type: application/json" \
-d '{
"query": "construction",
"status": "Open",
"limit": 100
}'

Rate Limiting

The scraper includes a 1-second delay between API requests to avoid overloading the source servers and ensure reliable data collection.

Technical Details

  • Runtime: Node.js 18+
  • Dependencies: Apify SDK 3.x, Crawlee 3.x
  • Pagination: Automatic (50 items per page)

License

ISC