API reference
DataScene Tenders API
A REST API for tenders, contract awards, the forward pipeline, your saved searches and your scheduled reports — for CRM sync, dashboards and bid-tracking workflows.
The API is included with every plan.
Every request needs a personal access token belonging to a workspace on an active trial or subscription. There are no anonymous endpoints. If your trial has ended or the subscription has lapsed, calls return 402 until it's renewed.
Quick start
- 1 Mint a token from Account → API tokens, choosing the scopes you need.
- 2 Send it as a bearer token on every request.
- 3 Read the JSON. List endpoints are paginated.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/tenders?q=cloud&value_tier=low&page_size=50'
Authentication
Pass your token in the Authorization header. Mint and revoke tokens on your account page; the full value is shown once, at creation.
Authorization: Bearer dsk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Team note. Your workspace admin can withdraw any member's API access. If yours is withdrawn, your tokens stop working and return 403 api_access_revoked — ask your admin, not support.
Scopes
A token carries one or more scopes, chosen at creation, so you can hand an integration exactly what it needs and no more. Any valid token can read the market-data endpoints (pipeline, frameworks, analytics); scopes gate the rest.
| Scope | Grants | Endpoints |
|---|---|---|
| read:tenders | Live tenders | /tenders, /tenders/{id}, /tenders/locations, /tenders/countries, /tenders/currencies |
| read:awards | Contract awards + expiry radar | /awards, /awards/expiring, /awards/{ocid}/bidders, /awards/currencies |
| read:searches | Your saved searches | /searches, /searches/{id} |
| read:reports | Your scheduled reports | /reports, /reports/{id}, /reports/{id}/runs |
| read:analytics | Market analytics | /analytics |
| read:frameworks | Framework register | /frameworks |
| read:pipeline | Forward procurement pipeline | /pipeline, /pipeline/orgs, /pipeline/categories |
| read:organisations | Buyer & supplier profiles | /buyers/{name}, /suppliers/{name} |
Calling an endpoint without its scope returns 403 scope_missing.
Rate limit
~60 sustained requests/min per token, burst 120. Over the limit returns 429 with Retry-After.
Base URL
https://app.datascene-tenders.co.uk/api/v1
Endpoints
Opportunities
/api/v1/tenders
read:tenders
List tenders. Keyword, CPV, region, value-tier and notice-type filters.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/tenders?q=cloud&cpv=72&page_size=50'
/api/v1/tenders/{id}
read:tenders
Get one tender by its id.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/tenders/abc123'
/api/v1/pipeline
read:pipeline
The forward pipeline — procurements departments and councils publish in their own forward plans, typically 6–18 months ahead of any tender. Filter with q and org; sort with sort=soonest|value|recent.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/pipeline?q=cloud&sort=value'
/api/v1/pipeline/orgs
read:pipeline
The publishing departments and councils with entry counts, for an org filter.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/pipeline/orgs'
/api/v1/frameworks
read:frameworks
Live framework agreements and dynamic purchasing systems you can join, from NINE buying organisations — Crown Commercial Service, NHS Shared Business Services, NEPO, Procurement for Housing, ESPO, Scotland Excel, Fusion21, TUCO and Procure Partnerships. Each agreement carries its lots, its source, and where the publisher states them the appointed suppliers and the notice that established it. ?q= matches lot names and supplier names as well as the agreement's own reference, title, summary and category.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/frameworks'
Awards & intelligence
/api/v1/awards
read:awards
List contract awards. Filter by supplier and date.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/awards?supplier=Acme+Ltd&from=2025-01-01'
/api/v1/awards/expiring
read:awards
Re-procurement radar — awards nearing the end of their term, so you can pre-empt the renewal.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/awards/expiring?window=12'
/api/v1/analytics
read:analytics
Market analytics — aggregate spend, top buyers and suppliers, sector trends, supplier concentration and framework usage.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/analytics?market=uk'
Your account
/api/v1/searches
read:searches
Your saved searches.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/searches'
/api/v1/searches/{id}
read:searches
Get one saved search, including the full filter it captures.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/searches/42'
/api/v1/reports
read:reports
Your scheduled reports.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/reports'
/api/v1/reports/{id}
read:reports
Get one scheduled report and its schedule.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/reports/7'
/api/v1/reports/{id}/runs
read:reports
The run history for one report — when it last executed and what it returned.
curl -H "Authorization: Bearer $TOKEN" \
'https://app.datascene-tenders.co.uk/api/v1/reports/7/runs'
Response envelopes
List endpoints return {"items": […], "total": N, "page": N, "page_size": N, "total_pages": N}. Page through with page and page_size.
Webhooks
Prefer push to polling? Configure a webhook channel. Each delivery is signed with HMAC-SHA-256 in X-DataScene-Signature — verify against the secret shown once at creation.
Status & errors
200 / 201 / 204- success / created / deleted or revoked
400 invalid_body- malformed JSON or a required field is missing
401 api_token_required- no token, or an invalid / revoked / expired one
402 subscription_required- the workspace's trial has ended or it isn't subscribed
402 workspace_suspended- the workspace is suspended
403 scope_missing- the token doesn't carry the scope this endpoint needs
403 api_access_revoked- your admin has withdrawn your API access
404 not_found- the resource doesn't exist, or isn't yours
429 rate_limited- back off and retry after Retry-After seconds
500 internal_error- our side; please report it