TenderLead native Zapier API

Public API reference for the TenderLead Zapier integration, version 1.2.0. Last checked 22 October 2026.

This reference covers every TenderLead HTTP endpoint used by this integration. The connection test, Get Daily Tender Brief action, hidden List Current Tenders picker, Find Daily Tender Brief search and Find Tender search all call the endpoint below. Find Tender selects a contract from that response locally; it does not call a separate search endpoint. No other non-Zapier API is called by the TenderLead integration definition.

Authentication

Sign into https://tenderlead.co.uk/sign-in. An active plan or trial is required. In Settings > API access, create a read-only token. The current live form's narrowest choice grants briefs:read and tenders:read; this integration uses only briefs:read. Do not choose write scopes. Tokens are shown once, account-scoped, revocable and expire after 90 days. Store reusable credentials in a password manager. Replace expired tokens and reconnect the Zapier connection.

Enter the token in Zapier's password-type API key connection field. Zapier sends it only in the HTTPS Authorization: Bearer TOKEN header. Never put it in a URL, action input, connection name, example output or submission notes.

Get Daily Tender Brief

GET https://tenderlead.co.uk/v1/briefs/daily

Headers: Authorization: Bearer TOKEN and Accept: application/json. No request body, query parameters or pagination. The read does not generate new scores or incur AI credits. Authentication testing uses the same endpoint.

Request example (replace the placeholder in your own environment; never share a real token):

curl 'https://tenderlead.co.uk/v1/briefs/daily' \
  --header 'Authorization: Bearer YOUR_READ_ONLY_TOKEN' \
  --header 'Accept: application/json'

Successful response, HTTP 200:

{
  "generated_at": "2026-10-13T09:00:00Z",
  "tier": "pro",
  "opportunities": [
    {
      "contract_id": "11111111-1111-4111-8111-111111111111",
      "title": "Fictional council managed IT support",
      "buyer": "Fictional Borough Council",
      "source": "fictional_qa",
      "source_url": "https://example.com/fictional-notice-1",
      "estimated_value": 240000,
      "currency": "GBP",
      "deadline": "2026-11-19T12:00:00Z",
      "score": 82,
      "recommendation": "bid",
      "tender_summary": "Fictional managed IT support opportunity."
    }
  ]
}

This example is fictional. generated_at is the response time, not proof that procurement data was updated at that time. tier reports the effective account entitlement. Pro/Team return account-matched recommendations; Starter returns public-feed fields. opportunities is an array and may be empty. For ordinary matched accounts, the daily brief includes scores from the previous 24 hours. The isolated Zapier reviewer account returns its explicitly labelled, stored fictional examples instead; those are not a current feed. There is no new-tender event or delivery trigger in this integration.

FieldMeaning
contract_idStable contract identifier for destination deduplication.
title, buyerNotice title and buyer, when available.
source, source_urlSource identifier and link to the notice; inspect the original notice before acting.
estimated_value, currencyValue and currency where supplied. A missing value is not zero.
deadlineDeadline where supplied. A missing deadline is not an open-ended deadline.
score, recommendationAccount match score and BID/SKIP recommendation where the entitlement includes them.
tender_summarySummary, when available. It can be a string or a structured object with labelled sections; the Zapier search flattens it for destination apps.

The envelope has a generated_at ISO timestamp string, tier string (starter, pro or team) and opportunities array. Contract IDs, labels and links are strings. Monetary values may be numbers or decimal strings; score is numeric when supplied. Optional fields may be absent or null. Retain missing values rather than fabricating titles, values, deadlines or match scores. Additional source/context fields may be present: value_gross, published_at, procedure_type, framework_ref, lots, cpv_codes, notice_ref, reasoning, match_confidence, no_bid_reason, scored_at, market, notice_stage, procedure_id, previous_notice_id, change_summary, place_regions, document_urls, winner_names, award_date and original_language. These carry the available source values or account assessment context; tolerate missing/null fields and preserve their JSON types. Do not use a timestamp alone as proof of source freshness. Credentials, customer billing and credit data are not returned.

An empty successful response is {"generated_at":"2026-10-22T09:00:00Z","tier":"pro","opportunities":[]}. This means no opportunities were returned for that account, not that authentication failed. Responses use Content-Type: application/json and Cache-Control: no-store.

Failures

HTTP statusMeaning and recovery
401Invalid, expired or revoked token. Replace/reconnect the token.
403Missing briefs:read scope. Connect a token with the required read scope.
402Inactive account entitlement. Restore authorised account access; do not bypass the check.
429Rate limit. Honour Retry-After and retry later. The route limits daily reads to 120/hour/token and 240/hour/IP.
Other non-2xxStop the workflow and inspect the provider error. Never substitute a successful sample.

Error responses are JSON with an error string. Examples are {"error":"Unauthorised"} (401), {"error":"Token requires briefs:read scope"} (403), {"error":"Payment required","requiresUpgrade":true,"requiredTier":"starter"} (402) and {"error":"Too many requests"} (429). The current 429 response sets Retry-After: 3600 seconds. Do not retry 401/402/403 in a loop; resolve the cause first. For a temporary 5xx failure, retry later with bounded backoff and preserve the destination deduplication key.

The native action propagates HTTP failures. Every read uses the authenticated token's client ID and effective entitlement. A user's destination spreadsheet or CRM is a separate service, with its own permissions and duplicate handling.

Workflow start and destination handling

Use Schedule by Zapier, another app's reviewed queue event, or an editor test/user action to start a read. TenderLead provides no event trigger. Select opportunities for export explicitly. Use a stable non-secret account namespace plus contract ID as the destination key; lookup/update rather than blindly append on repeated reads. Preserve human notes and reconcile uncertain writes before retrying. Shortlist writes, bid submission, billing and credits are outside this integration.

Support and source use

Contact TenderLead support with the Zap ID, run ID, timestamp and redacted error. Do not send tokens, passwords or customer records. Source-specific reuse conditions are listed on our sources page. Your destination app is authorised separately through Zapier; this read-only connection does not grant permission to republish source material.