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. 1 Mint a token from Account → API tokens, choosing the scopes you need.
  2. 2 Send it as a bearer token on every request.
  3. 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:tendersLive tenders/tenders, /tenders/{id}, /tenders/locations, /tenders/countries, /tenders/currencies
read:awardsContract awards + expiry radar/awards, /awards/expiring, /awards/{ocid}/bidders, /awards/currencies
read:searchesYour saved searches/searches, /searches/{id}
read:reportsYour scheduled reports/reports, /reports/{id}, /reports/{id}/runs
read:analyticsMarket analytics/analytics
read:frameworksFramework register/frameworks
read:pipelineForward procurement pipeline/pipeline, /pipeline/orgs, /pipeline/categories
read:organisationsBuyer & 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

GET /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'
GET /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'
GET /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'
GET /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'
GET /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

GET /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'
GET /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'
GET /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

GET /api/v1/searches read:searches

Your saved searches.

curl -H "Authorization: Bearer $TOKEN" \
     'https://app.datascene-tenders.co.uk/api/v1/searches'
GET /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'
GET /api/v1/reports read:reports

Your scheduled reports.

curl -H "Authorization: Bearer $TOKEN" \
     'https://app.datascene-tenders.co.uk/api/v1/reports'
GET /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'
GET /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