{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Government Tenders - Find a Tender & Contracts Finder",
    "description": "UK public tenders and contract awards from the official Find a Tender and Contracts Finder APIs: buyer, CPV, value, deadline, region and awarded companies. Keyword, CPV, buyer, region, value and date filters; cross-service dedupe; OGL v3. Unofficial; not affiliated with the UK Government.",
    "version": "0.1",
    "x-build-id": "0TVshMplldcfLD4zl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jpopendata~uk-public-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jpopendata-uk-public-tenders",
        "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/jpopendata~uk-public-tenders/runs": {
      "post": {
        "operationId": "runs-sync-jpopendata-uk-public-tenders",
        "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/jpopendata~uk-public-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-jpopendata-uk-public-tenders",
        "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": "Optional. Words or phrases to find in the notice title or text, whole words, any case, e.g. \"software\", \"window cleaning\", \"cyber security\". A procurement matches if it contains ANY of them. Leave empty for all notices.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Optional. CPV codes or prefixes, e.g. \"72000000\" (IT services: matches every code under 72), \"45\" (construction work), \"79341000\". Main and additional CPV codes are both checked.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "buyers": {
            "title": "Buyers",
            "type": "array",
            "description": "Optional. Part of the buyer (contracting authority) name, e.g. \"NHS\", \"Home Office\", \"Leeds City Council\". Any match counts.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Optional. UK delivery regions: London, South East, South West, East of England, East Midlands, West Midlands, North East, North West, Yorkshire and the Humber, Wales, Scotland, Northern Ireland, or England (all English regions). NUTS/ITL codes such as UKI or TLI work too. If a notice names no delivery region, the buyer's region is used; notices with neither are dropped when this is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "valueMin": {
            "title": "Minimum value (GBP)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Minimum estimated value in pounds (the awarded value when no estimate is published), e.g. 50000. Notices without a value in GBP are dropped when a value range is set."
          },
          "valueMax": {
            "title": "Maximum value (GBP)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Maximum estimated value in pounds, e.g. 1000000."
          },
          "daysBack": {
            "title": "Days back",
            "type": "integer",
            "description": "Read notices published or updated in the last N days (1..90). Ignored when Published from is set. Both services publish several hundred notices per working day; with maxItems the run stops early once it has the newest matching rows.",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Optional. First day of the window, YYYY-MM-DD (UTC), e.g. \"2026-09-01\". DD/MM/YYYY, \"today\" and \"yesterday\" also work. Find a Tender selects by the date a notice was published or last updated; Contracts Finder by its publication date.",
            "default": ""
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Optional. Last day of the window, YYYY-MM-DD (UTC). Empty = now. The window can be at most 366 days.",
            "default": ""
          },
          "closingFrom": {
            "title": "Closing date from",
            "type": "string",
            "description": "Optional. Keep only notices whose tender deadline is on or after this day, YYYY-MM-DD. Notices without a published deadline are dropped when this is set.",
            "default": ""
          },
          "closingTo": {
            "title": "Closing date to",
            "type": "string",
            "description": "Optional. Keep only notices whose tender deadline is on or before this day, YYYY-MM-DD.",
            "default": ""
          },
          "stages": {
            "title": "Stages",
            "type": "array",
            "description": "Optional. planning (pipeline, planned procurement, early engagement), tender (open opportunities and calls for competition) and/or award (contract awards, with the awarded companies). The stage is the most advanced one reached by the notices read. Empty = all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyOpen": {
            "title": "Only open for bids",
            "type": "boolean",
            "description": "Keep only tenders that are still open: tender stage, status active and a deadline in the future.",
            "default": false
          },
          "sources": {
            "title": "Services",
            "type": "array",
            "description": "find-a-tender and/or contracts-finder (fts / cf also work). Empty = both. Every row says where it was found; a procurement published on both is returned once with foundOnBothSources = true.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max rows",
            "type": "integer",
            "description": "Maximum procurement rows (1..10000), newest first. You are charged per row.",
            "default": 20
          },
          "maxApiRequests": {
            "title": "Max API requests",
            "type": "integer",
            "description": "Hard budget of requests to the two APIs for the whole run (1..300). Requests are sent one at a time at least 11 seconds apart to stay inside the services' rate limits, so 100 requests take about 20 minutes. One request returns up to 100 notices. If the budget runs out the run still succeeds with what it read (complete=false in RUN_SUMMARY).",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional and normally not needed: both APIs answer Apify datacenter IPs. If set, one sticky session is used for the whole run (never rotation).",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}