Open Data
API documentation
Machine-readable access to the same registers the website serves, with the same filters and the same provenance on every record.
Status
ZEPRA currently publishes machine-readable data through filtered dataset endpoints rather than a versioned REST API. A versioned API with a published contract and stability guarantees will follow; until it exists, ZEPRA does not advertise one, because an endpoint that changes without notice is worse than none.
Dataset endpoints
Each returns the full published register in the requested format.
| Dataset | Address |
|---|---|
| Project register | GET /open-data/download/projects?format=csv|json |
| Procurement register | GET /open-data/download/procurement?format=csv|json |
| Contract awards | GET /open-data/download/awards?format=csv|json |
Filtered endpoints
The register pages accept the same filters as their export endpoints, so any filtered view of the website can be taken as data by swapping the path.
| Purpose | Address |
|---|---|
| Filtered projects | GET /projects/export.csv?province=lusaka&stage=in_progress |
| Filtered procurement | GET /procurement/export.json?open=1 |
| Filtered awards | GET /awards/export.csv?awarded_from=2026-01-01 |
| Map areas (GeoJSON) | GET /map/areas.json?level=province|district |
| Map points (GeoJSON) | GET /map/points.json |
Parameters
| Parameter | Effect |
|---|---|
format | csv or json. Defaults to CSV. |
include_demonstration | 1 to include demonstration rows. Omitted by default. |
q | Keyword across title, identifier and indexed text. |
province, district | Location slug, as used in the website address. |
agency, sector, funding | Reference-data slug. |
stage, procurement, attention | Controlled vocabulary values; repeat or comma-separate for several. |
value_min, value_max | Approved value bounds in the record's currency. |
Response envelope
JSON responses name the dataset, the publisher, the generation time and the platform licence before the records:
{
"dataset": "zepra-projects",
"publisher": "Zambia Electronic Projects Registry and Analytics",
"generated_at": "2026-10-25T22:21:04+00:00",
"platform_licence": "Creative Commons Attribution 4.0 International (CC BY 4.0)",
"notice": "Source records remain subject to the terms of the institution that published them...",
"records": [ ... ]
}
Provenance on every record
Each row carries source_organisation, source_system,
source_licence, verification_status,
is_demonstration and last_source_update. A row that leaves ZEPRA
can still be traced to the institution that published it.
Fair use
- Identify your client honestly in the
User-Agentheader. - Prefer one bulk download over many small requests.
- Requests are rate limited. A client that ignores limits may be blocked.
- Attribute ZEPRA and the originating institution when republishing.
- Do not present demonstration rows as government records.
Standards
Procurement fields follow OCDS 1.1 and project-level fields follow OC4IDS 0.9. Where a source published an OCID, ZEPRA retains it unchanged. Projects additionally carry a permanent ZEPRA identifier that is issued once and never reused.
Getting in touch
For bulk access, a data-sharing arrangement or notice of a forthcoming change, write to projects@zepra.co.zm or telephone 0211 777 400.