Build on Uganda’s tender data
A JSON API over every notice we publish, the taxonomies behind the filters, and the member endpoints our own apps use. Version 1.0.0, described in OpenAPI 3.1.
Base URL
https://www.tenderboard.buildal.net/api/v1Authentication
Send Authorization: Bearer <token>. Open endpoints work without one; gated tender fields need a token whose account has unlocked the notice.
Rate limits
60 requests a minute without a token, 300 with one. Amounts are UGX integers; timestamps are UTC in ISO 8601.
Tenders
/tendersList tenders
Open notices by default. Gated fields are absent unless the caller is entitled to them.
- q
- Full-text search across title, reference and buyer
- sector
- Sector slug
- district
- District slug
- region
- Region slug
- entity
- Buyer slug
- category
- supplies, services, works or consultancy
- notice_type
- Notice type slug
- closing
- today, week or month
- status
- open (default), closed or all
- sort
- closing, newest or value
- per_page
- 1 to 100, default 20
- page
- Page number
/tenders/{slug}Read one tender
The full notice. `access.locked` is true when the caller has not unlocked it; the gated fields are then simply not in the payload.
- slug *
- The tender slug
/sectorsList sectors
With live open counts.
/districtsList districts
All 136 districts with their region and open counts.
/entitiesList buyers
Procuring entities with open counts.
/plansList plans
Live prices in UGX. Never cache these client-side for longer than a day.
/openapi.jsonThis document
The machine-readable contract.
Awards
/awardsList contract awards
Best Evaluated Bidder notices: who won, for how much. Free, like the pages.
- entity
- Buyer slug
- provider
- Winning supplier slug
- per_page
- 1 to 100, default 20
/awards/{slug}Read one award
The full notice, including every losing bid and why it was dropped.
- slug *
- The award slug
Auth
/auth/tokenIssue a device token
Trades an email and password for a personal access token. Five attempts a minute.
/auth/tokenToken requiredRevoke the calling token
Signs this one device out; other devices keep working.
Me
/meToken requiredThe signed-in member
Identity plus subscription state and unlocks left.
/me/watchlistToken requiredThe team watchlist
Open items first, then closed, both by deadline.
/me/watchlist/{tender}Token requiredWatch a tender
Idempotent. Needs the me:write ability.
- tender *
- Tender id
/me/watchlist/{tender}Token requiredStop watching a tender
Idempotent. Needs the me:write ability.
- tender *
- Tender id
/me/alertsToken requiredThe team alerts
Saved searches with their delivery channels.
/me/unlocksToken requiredWhat the team has unlocked
Newest first.
A first request
curl -s "https://www.tenderboard.buildal.net/api/v1/tenders?sector=construction&closing=week" \ -H "Accept: application/json"