Integration examples
Use Tendex from a Node.js backend or a Python script.
Node.js
This example searches for software opportunities and handles API failures. Run it on your backend with TENDEX_API_KEY set.
const key = process.env.TENDEX_API_KEY;
if (!key) throw new Error('Set TENDEX_API_KEY');
const url = new URL('https://api.tendex.ai/v1/tenders');
url.searchParams.set('q', 'software');
url.searchParams.set('limit', '20');
const response = await fetch(url, {
headers: { Authorization: 'Bearer ' + key },
signal: AbortSignal.timeout(30_000),
});
const body = await response.json();
if (!response.ok) {
throw new Error(body.error.code + ': ' + body.error.message);
}
for (const tender of body.data) {
console.log(tender.id, tender.title, tender.url);
}
console.log('Next offset:', body.pagination.nextOffset);
Python
This example uses Python's standard library and retrieves one page.
import json
import os
from urllib.error import HTTPError
from urllib.parse import urlencode
from urllib.request import Request, urlopen
query = urlencode({'q': 'software', 'limit': 20})
request = Request(
'https://api.tendex.ai/v1/tenders?' + query,
headers={'Authorization': 'Bearer ' + os.environ['TENDEX_API_KEY']},
)
try:
with urlopen(request, timeout=30) as response:
page = json.load(response)
except HTTPError as error:
details = json.load(error)
raise RuntimeError(details['error']['message']) from error
for tender in page['data']:
print(tender['id'], tender['title'], tender['url'])
For another page, pass pagination.nextOffset as offset. Preserve the other filters and stop when nextOffset is null.