Davlat shartnomalari API'si, toʻliq parallellikda.
Every screen on Sell to State is backed by a documented REST endpoint under /api/v1. Search, drill into a buyer or supplier, export CSV, and keep saved lists — with one API key and the same paywall the MCP server and CLI share.
# 60 soniyalik tezkor boshlash
# 1. Create a key in the dashboard # Account → API keys # 2. Verify it curl -s https://staging-app.selltostate.com/api/v1/whoami \ -H "x-api-key: sts_xxxxxxxx" # 3. Search curl -s "https://staging-app.selltostate.com/api/v1/search\ ?scope=tenders&q=cybersecurity" \ -H "x-api-key: sts_xxxxxxxx"
Same key works for the MCP server and the selltostate CLI.
Autentifikatsiya va 402 toʻlov devori
Two credential types resolve to one entitlement check. Humans and backends send an API key as x-api-key: sts_…. Autonomous agents self-register over RFC 7591 DCR and present Authorization: Bearer client:<id>.
Until your subject has an active subscription, every data call returns 402 with a payment_link (humans) and a machine_payment affordance (agents can pay off-session via POST /api/v1/pay and continue without a browser). GET /api/v1/whoami is the exception — it returns 200 with active:false so you can decide to pay before doing work.
Plan caps: trial = 20 rows/page, paid = 5,000. Rate limit: 120 data calls/min per credential (faceted search has its own 300/min budget). Saved lists and saved searches are owner-scoped — they require a user x-api-key; an OIDC client token gets 403.
Endpointlar.
All under /api/v1. Full params, schemas and "Try it" live in the reference.
/api/v1/whoami Autentifikatsiya + huquq + doiralar (scopes). Yaroqli, ammo obuna boʻlmagan kalit uchun 200 active:false qaytaradi (402 emas) — sarflashdan oldin tekshiring. /api/v1/search Bitta doira (tenders | buyers | suppliers | sectors) boʻyicha Typesense yordamida faset qidiruvi: natijalar + faset sonlari + sahifalash. /api/v1/awards Qiymat boʻyicha tartiblangan, sahifalanadigan va filtrlanadigan shartnoma natijalari qatorlari. CSV manzili: /api/v1/awards.csv. /api/v1/buyers/{slug} Xaridor (idora) tafsilotlari: qisqacha maʼlumot, yillik xarajat trendi, sektor boʻyicha taqsimot, yetakchi yetkazib beruvchilar. /api/v1/suppliers/{slug} Yetkazib beruvchi tafsilotlari: qisqacha maʼlumot, yillik yutilgan shartnomalar trendi, sektor boʻyicha taqsimot, yetakchi xaridorlar. /api/v1/sectors/{slug} Sektor tafsilotlari: qisqacha maʼlumot, yillik trend, faol hamkorlar (?kind=buyers|suppliers). /api/v1/tenders/{id} Raqamli id yoki ochiq tender id boʻyicha bitta shartnoma natijasi, shuningdek bogʻliq natijalar. /api/v1/lists* Saqlangan shartnoma natijalari roʻyxatlari. Egasiga bogʻliq — foydalanuvchi x-api-key talab qilinadi. /api/v1/saved-searches* Saqlangan qidiruvlar. Egasiga bogʻliq — foydalanuvchi x-api-key talab qilinadi. Misollar.
Python — shartnoma natijalarini qidirish
import requests
H = {"x-api-key": "sts_xxxxxxxx"}
r = requests.get(
"https://staging-app.selltostate.com/api/v1/search",
params={"scope": "tenders", "q": "cybersecurity", "year_min": 2023},
headers=H,
)
if r.status_code == 402:
print("subscribe:", r.json()["payment_link"]); raise SystemExit
data = r.json()
print(data["found"], "matches")
for hit in data["hits"]:
print(hit) Node — xaridor tafsilotlari + CSV eksport
const H = { "x-api-key": process.env.STS_API_KEY };
const buyer = await fetch(
"https://staging-app.selltostate.com/api/v1/buyers/ministry-of-education",
{ headers: H },
).then((r) => r.json());
console.log(buyer.buyer, buyer.yearly);
// Stream the entitlement-capped CSV
const csv = await fetch(
"https://staging-app.selltostate.com/api/v1/awards.csv?supplier=ACME",
{ headers: H },
).then((r) => r.text()); Saqlangan roʻyxatlar (foydalanuvchi kaliti)
# Create a list, add a tender, read it back
LID=$(curl -s -X POST https://staging-app.selltostate.com/api/v1/lists \
-H "x-api-key: sts_xxxxxxxx" -H "content-type: application/json" \
-d '{"name":"Cyber FY24"}' | jq -r .id)
curl -s -X POST https://staging-app.selltostate.com/api/v1/lists/$LID/items \
-H "x-api-key: sts_xxxxxxxx" -H "content-type: application/json" \
-d '{"tender_no":"MOE000ETT24300001"}' API kalitini oling.
Start a free trial, create a key under Account → API keys, and you're querying in minutes. The full reference — every parameter, response schema, and a live "Try it" — is at docs.selltostate.com.
Start for free →