zppa.org.zm APIzppa.org.zm ↗
Access Zambia's public procurement data via ZPPA OCDS. Browse tenders, search by OCID, and retrieve buyer details, contract values, and tenderer info.
curl -X GET 'https://api.parse.bot/scraper/9194eb38-d322-4509-9d51-933120aa8121/get_current_tenders?page=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Fetch a paginated list of procurement records from the ZPPA OCDS system, sorted by most recent process date. Returns record identifiers that can be used with get_tender_details to retrieve full information.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number to fetch. Each page contains 20 records. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"tenders": "array of record summary objects, each containing id, ocid, status, creation_date (epoch ms), and process_date (epoch ms)",
"total_pages": "integer, total number of pages available",
"total_records": "integer, total number of records in the system"
},
"sample": {
"data": {
"page": 1,
"tenders": [
{
"id": "69f3df4ab4275d46715e26b5",
"ocid": "ocds-23g63a01-25844731",
"status": "NEW",
"process_date": 1777676418609,
"creation_date": 1777563602000
}
],
"total_pages": 8533,
"total_records": 170656
},
"status": "success"
}
}About the zppa.org.zm API
This API provides structured access to Zambia Public Procurement Authority (ZPPA) procurement records across 3 endpoints. Use get_current_tenders to retrieve a paginated list of live and historical procurement records sorted by most recent process date, each carrying an OCID and status field. From there, pass the returned MongoDB ObjectId into get_tender_details to pull the full OCDS compiled release including procuring entity, procurement method, budget, tenderers, and contract details.
Browsing and Searching Tenders
The get_current_tenders endpoint returns a paginated list of procurement records from the ZPPA OCDS system. Each page contains 20 records, and each record in the tenders array includes an id (MongoDB ObjectId), ocid, status, creation_date, and process_date (both as epoch milliseconds). The total_records and total_pages fields let you walk the full dataset systematically. For targeted lookups, search_tenders accepts a query string matched against the numeric portion of an OCID — for example, querying 10000001 will match ocds-23g63a01-10000001. Results are paginated identically to the browse endpoint.
Retrieving Full Procurement Details
Once you have a record_id from either listing or search, pass it to get_tender_details to retrieve the full OCDS compiled release. The details object follows the Open Contracting Data Standard and includes the ocid, a tender block with title, description, status, procurement method, and procuring entity, plus tenderer information and budget and contract values where available. This makes it possible to reconstruct a complete picture of a procurement process from notice through award.
Data Coverage and Standards
All records conform to the OCDS format (prefix ocds-23g63a01), the international open contracting standard used by governments to publish procurement data. The API covers procurements managed through ZPPA, Zambia's central procurement authority. Dates are provided as epoch milliseconds, so convert to ISO 8601 before display. Pagination is fixed at 20 records per page across all three endpoints.
- Monitor new Zambian government tenders by polling
get_current_tendersand filtering onprocess_date - Build a tender alert system that notifies vendors when procurement records matching their sector appear
- Cross-reference OCID values from external sources against ZPPA records using
search_tenders - Aggregate contract values and procurement methods from
get_tender_detailsfor public spending analysis - Track procuring entities across multiple tender records to identify active buyers in the Zambian government
- Feed ZPPA OCDS data into a compliance or due-diligence workflow for tenderers listed in procurement records
- Archive historical procurement records for auditing or research on Zambian public sector contracting trends
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ZPPA provide an official developer API?+
What does `get_tender_details` actually return beyond the basic record summary?+
tender block (title, description, status, procurement method, procuring entity), tenderer details, budget figures, and contract values where the record has progressed to award stage. The record summary from get_current_tenders only includes id, ocid, status, and two date fields — the detail endpoint is required for all substantive procurement information.Can I search by tender title, procuring entity name, or procurement method?+
search_tenders only matches against the numeric portion of an OCID. Title, entity name, and procurement method are returned inside get_tender_details but are not filterable query parameters at this time. You can fork this API on Parse and revise it to add a full-text or field-specific search endpoint.Are procurement records from all Zambian public entities included, or only central government?+
How are dates represented and is there a way to filter by date range?+
creation_date and process_date are both returned as epoch milliseconds in the record summary objects. Date-range filtering is not a supported parameter on any of the three endpoints. get_current_tenders is sorted by most recent process_date descending, so paginating from page 1 gives the newest records first.