{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Tenders – Find a Tender & Contracts Finder Scraper",
    "description": "Scrape new UK public procurement tenders from Find a Tender and Contracts Finder in one run. Filter by keyword, CPV code, region, value or SME suitability. Get buyer, value, deadline, CPV labels and notice links as JSON, CSV or Excel. De-duplicated, only-new mode for alerts. $3 per 1,000 tenders.",
    "version": "0.0",
    "x-build-id": "cmZnO5k66MeeFHyd6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/madeform~uk-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-madeform-uk-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/madeform~uk-tenders/runs": {
      "post": {
        "operationId": "runs-sync-madeform-uk-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/madeform~uk-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-madeform-uk-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": {
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Find a Tender (FTS) carries above-threshold and Procurement Act 2023 notices for the whole UK, including notices from Public Contracts Scotland and Sell2Wales. Contracts Finder (CF) carries lower-value English opportunities. Leave both selected to get both; the same notice on both services is returned once.",
            "items": {
              "type": "string",
              "enum": [
                "FTS",
                "CF"
              ],
              "enumTitles": [
                "Find a Tender (FTS)",
                "Contracts Finder (CF)"
              ]
            },
            "default": [
              "FTS",
              "CF"
            ]
          },
          "datePreset": {
            "title": "Publication period",
            "enum": [
              "last1d",
              "last7d",
              "last30d",
              "custom"
            ],
            "type": "string",
            "description": "Which publication dates to include. 'Last day' means yesterday and today. Choose 'Custom dates' to use the two date fields below. With 'Only new tenders' switched on, this period is used for the first run only; later runs continue after the last tender delivered.",
            "default": "last7d"
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Used with 'Custom dates' (or whenever filled in, it overrides the period). First publication date to include, format YYYY-MM-DD, for example 2026-10-01. At most one year per run."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Last publication date to include, format YYYY-MM-DD. Leave empty for today."
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Optional. One or more words or phrases separated by commas, for example: cyber security, penetration testing. A tender matches when its title, description, lot titles or buyer name contains any of them (case-insensitive, matching the start of words, so 'school' also finds 'schools')."
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "string",
            "description": "Optional. Comma-separated words or phrases. Tenders containing any of them are skipped, for example: framework, dynamic purchasing system."
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Optional. 8-digit CPV codes (the classification of what is procured), for example 45000000 for construction work or 72000000 for IT services. Matching is by prefix of the code hierarchy: 45000000 matches all codes starting with 45, 45210000 matches 4521…. A tender matches when its main or any additional CPV code matches.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Contract type",
            "type": "array",
            "description": "Optional. Only tenders whose main category is one of these. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "works",
                "goods",
                "services"
              ],
              "enumTitles": [
                "Works (construction)",
                "Goods (supplies)",
                "Services"
              ]
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Optional. UK regions (ITL 1) where the contract is delivered. When a notice gives no delivery region, the buyer's region is used. Notices that only say 'United Kingdom' are not matched by a region filter.",
            "items": {
              "type": "string",
              "enum": [
                "england",
                "london",
                "southEast",
                "southWest",
                "eastOfEngland",
                "eastMidlands",
                "westMidlands",
                "northWest",
                "northEast",
                "yorkshire",
                "scotland",
                "wales",
                "northernIreland"
              ],
              "enumTitles": [
                "England (all English regions)",
                "London",
                "South East",
                "South West",
                "East of England",
                "East Midlands",
                "West Midlands",
                "North West",
                "North East",
                "Yorkshire and the Humber",
                "Scotland",
                "Wales",
                "Northern Ireland"
              ]
            }
          },
          "minValue": {
            "title": "Minimum value (GBP)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Only tenders with an estimated value (excluding VAT) of at least this amount. Tenders without a stated value are skipped when a value filter is set."
          },
          "maxValue": {
            "title": "Maximum value (GBP)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Only tenders with an estimated value (excluding VAT) of at most this amount."
          },
          "threshold": {
            "title": "Above or below threshold",
            "enum": [
              "all",
              "above",
              "below"
            ],
            "type": "string",
            "description": "Optional. 'Above threshold' keeps notices above the UK procurement thresholds, 'Below threshold' keeps lower-value notices. Notices that do not say are skipped by both options.",
            "default": "all"
          },
          "smeSuitableOnly": {
            "title": "Only tenders marked suitable for SMEs",
            "type": "boolean",
            "description": "Keep only notices where the buyer marked the contract (or a lot) as suitable for small and medium-sized enterprises.",
            "default": false
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Which notices to return. 'Tender' is a new opportunity (tender notice / contract notice). 'Tender update' is a change to an earlier tender (for example a new deadline). 'Planning' covers pipeline, planned procurement and preliminary market engagement notices. Award and contract notices are never returned.",
            "items": {
              "type": "string",
              "enum": [
                "tender",
                "tenderUpdate",
                "planning"
              ],
              "enumTitles": [
                "Tender (new opportunity)",
                "Tender update",
                "Planning / market engagement"
              ]
            },
            "default": [
              "tender"
            ]
          },
          "onlyOpen": {
            "title": "Only tenders that are still open",
            "type": "boolean",
            "description": "Skip tenders whose submission deadline has already passed. Tenders without a stated deadline are kept.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new tenders since the last run",
            "type": "boolean",
            "description": "Return only tenders you have not received in an earlier run with the same filters. Use it for scheduled runs so you never pay for the same tender twice. The Actor remembers only the last publication date and the notice ids of that date, in a key-value store named 'uk-tenders-state' in your account.",
            "default": false
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of tenders to save (1–10,000). Each saved tender is one billed event. Users on Apify's free plan get at most 50 per run.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}