Partners / Developers
Partner developer guide
Two ways to connect your site to in-tender: a link that opens a tender for your user, and an API that returns what a tender asks for. Both work from the issuer's tender number you already show.
You'll need a partner account for both. Become a partner to get your partner name and API key.
1. Link to a tender
No integration work is needed. Build the link from the tender number and your partner name:
https://in-tender.co.za/tenders/open/?ref=RFQ/123/2026&partner=your-name
- ref is the tender number, reference number or OCID as published on the National Treasury eTenders portal. Matching ignores case.
- partner is the partner name we give you. Each visit through the link is counted for you.
- If exactly one open tender matches, the user lands on it. Otherwise they see in-tender's search results for that number.
- Users who aren't signed in are asked to sign in first, then land on the tender.
2. Read a tender's requirements
Send one GET request with your API key in the X-Partner-Key header:
curl "https://in-tender.co.za/api/v1/partner/tenders/requirements/?ref=RFQ/123/2026" \
-H "X-Partner-Key: <your key>"
ref takes the same values as the link. The response lists every open tender that
matches, up to 10, so an empty results list means no open tender has that number.
Response
{
"results": [{
"ocid": "ocds-9t57fa-123456",
"tender_number": "RFQ/123/2026",
"reference_number": "123456",
"title": "Supply and delivery of office furniture",
"organ_of_state": "…",
"deadline": "2026-11-28",
"prepare_url": "https://in-tender.co.za/tenders/…/",
"requirements": [{
"requirement": "Valid SARS tax compliance status",
"kind": "document",
"role": "eligibility",
"stage": "Eligibility",
"mandatory": true,
"threshold": null,
"source_page": 4
}]
}]
}
Tender fields
| Field | Meaning |
|---|---|
| ocid | The tender's ID on the eTenders open data feed. |
| tender_number | The issuer's tender number. |
| reference_number | The eTenders reference number. |
| title, organ_of_state | As published. |
| deadline | Closing date (YYYY-MM-DD), or null if none was published. |
| prepare_url | Opens the tender in in-tender. Prefer the partner link above, which counts the visit for you. |
Requirement fields
| Field | Meaning |
|---|---|
| requirement | What the tender asks for, in plain words. |
| kind | One of document, registration, certification, bbbee, ownership, turnover, years_operating, employee_count, location, sector or other. |
| role | Where it counts in the evaluation, such as eligibility, evaluation, price or preference. |
| stage | The evaluation stage it belongs to, as named in in-tender. |
| mandatory | True when missing it disqualifies the bid. |
| threshold | A minimum or target, such as "3 references" or "10 points", or null. |
| source_page | The page of the tender documents it was read from, or null. |
Requirements are read from the tender documents automatically and can contain mistakes. Show them as a guide and point users to the original tender documents, which remain the authority. The API returns public tender information only: no scores, recommendations or user data.
Errors
| Status | When |
|---|---|
| 400 | The ref parameter is missing or empty. |
| 403 | The key is missing, wrong, replaced, or your partner access is switched off. |
Keeping your key safe
- Call the API from your server, never from a browser or app, so the key isn't exposed.
- We show your key once when we issue it and store only a scrambled copy, so we can't read it back to you.
- If a key leaks or you lose it, ask us for a new one. The old key stops working immediately.
Questions
Contact us with technical questions, or read what partners get.