{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Government Tenders - Find a Tender & Contracts Finder",
    "description": "Get UK government tenders, contract opportunities, pipeline notices and contract awards from the official Find a Tender and Contracts Finder APIs. Filter by keyword, CPV code, region, value, buyer and deadline. Monitor mode returns only new notices. No API key, no proxies.",
    "version": "1.0",
    "x-build-id": "7P6lWEaAWk1EJ8oMf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scoutdesk~uk-public-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scoutdesk-uk-public-tenders-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scoutdesk~uk-public-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scoutdesk-uk-public-tenders-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scoutdesk~uk-public-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scoutdesk-uk-public-tenders-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Only return notices whose title, description or lot titles contain these words or phrases (case-insensitive, matched at word start). Leave empty for all notices.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywordMatch": {
            "title": "Keyword match",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "Match ANY keyword (broad) or ALL keywords (narrow).",
            "default": "any"
          },
          "keywordScope": {
            "title": "Search keywords in",
            "enum": [
              "titleAndDescription",
              "titleOnly"
            ],
            "type": "string",
            "description": "Search keywords in the title and lot titles only (precise) or also in the full description (broad).",
            "default": "titleAndDescription"
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop notices that contain any of these words or phrases.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "noticeStages": {
            "title": "Notice stages",
            "type": "array",
            "description": "Which procurement stages to return: open opportunities (tender), pipeline / pre-market engagement (planning), or contract awards (award).",
            "items": {
              "type": "string",
              "enum": [
                "tender",
                "planning",
                "award"
              ],
              "enumTitles": [
                "Tender / open opportunity",
                "Planning / pipeline / market engagement",
                "Contract award"
              ]
            },
            "default": [
              "tender"
            ]
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Official UK procurement portals to read. Find a Tender carries most notices since the Procurement Act 2023 took effect (Feb 2025); Contracts Finder still carries many lower-value and legacy notices.",
            "items": {
              "type": "string",
              "enum": [
                "find-a-tender",
                "contracts-finder"
              ],
              "enumTitles": [
                "Find a Tender (FTS)",
                "Contracts Finder"
              ]
            },
            "default": [
              "find-a-tender",
              "contracts-finder"
            ]
          },
          "daysBack": {
            "title": "Days back",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "How many days of notices to scan, counting back from now. Ignored when 'Published from' is set.",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Optional start date (YYYY-MM-DD). Overrides 'Days back'."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Optional end date (YYYY-MM-DD). Defaults to now."
          },
          "cpvCodes": {
            "title": "CPV code prefixes",
            "type": "array",
            "description": "Filter by Common Procurement Vocabulary codes. Prefixes work: '72' = IT services, '48' = software packages, '45' = construction, '79' = business services, '85' = health & social work.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions (ITL/NUTS code prefixes)",
            "type": "array",
            "description": "Filter by ITL/NUTS region code prefix or ITL1 region name, e.g. UKI or London, UKM or Scotland, UKL or Wales, UKN or Northern Ireland, UKJ or South East. Notices without region data are excluded when this filter is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "regionMatch": {
            "title": "Region applies to",
            "enum": [
              "delivery",
              "buyer"
            ],
            "type": "string",
            "description": "Match the region filter against where the contract is delivered (default; includes nationwide notices that list your region) or only against the buyer's own location (Find a Tender notices only).",
            "default": "delivery"
          },
          "buyerNameContains": {
            "title": "Buyer name contains",
            "type": "array",
            "description": "Only notices from buyers whose name contains one of these strings, e.g. 'NHS', 'Council', 'Ministry of Defence'.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minValue": {
            "title": "Minimum value (GBP)",
            "minimum": 0,
            "type": "integer",
            "description": "Only notices with an estimated value at or above this amount (net of VAT where published, otherwise gross). Notices without a value are excluded when set."
          },
          "maxValue": {
            "title": "Maximum value (GBP)",
            "minimum": 0,
            "type": "integer",
            "description": "Only notices with an estimated value at or below this amount. Notices without a value are excluded when set."
          },
          "onlyOpen": {
            "title": "Only open tenders",
            "type": "boolean",
            "description": "For the tender stage, drop notices whose submission deadline has passed or that were cancelled.",
            "default": true
          },
          "smeSuitableOnly": {
            "title": "Only SME-suitable",
            "type": "boolean",
            "description": "Only notices the buyer marked as suitable for small and medium-sized enterprises.",
            "default": false
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum number of notices to save (newest first). You are charged per saved notice. The run stops scanning as soon as it has this many of the newest matching notices, so smaller values also finish faster.",
            "default": 50
          },
          "onlyNewSinceLastRun": {
            "title": "Monitor mode: only new notices",
            "type": "boolean",
            "description": "Remember notices returned in previous runs (per 'Monitor key') and return only ones you have not seen. Schedule the Actor daily for a new-tender alert feed.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "Name for the monitor's memory. Use a different key for each saved search you schedule.",
            "default": "default"
          },
          "includeBuyerContacts": {
            "title": "Include buyer contact point",
            "type": "boolean",
            "description": "Add the contact point published on the notice (may include a named officer's work email/phone). Off by default; if you enable it you are responsible for handling that data lawfully (UK GDPR).",
            "default": false
          },
          "includeRawOcds": {
            "title": "Include raw OCDS release",
            "type": "boolean",
            "description": "Attach the full original OCDS release JSON to each row (larger output).",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}