{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Public Tenders Scraper",
    "description": "UK government tenders and awards from Find a Tender and Contracts Finder, one row shape, newest first. Filter by keyword, CPV, stage, date. Procurement Act notices included. No contact data. $8 per 1,000 notices.",
    "version": "0.1",
    "x-build-id": "UPijDltngsKWgfAw6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/1mp~uk-public-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-1mp-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/1mp~uk-public-tenders/runs": {
      "post": {
        "operationId": "runs-sync-1mp-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/1mp~uk-public-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-1mp-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": "string",
            "description": "Optional. Comma-separated phrases; a notice matches if ANY phrase is in its title, description, lot titles or descriptions, or buyer name. Case-insensitive, and a phrase matches at the start of a word, so cyber finds cybersecurity. A short all-capitals phrase (IT, CCTV, HVAC) matches capitals only. Empty: every notice. Example: software, cloud hosting, cyber"
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Optional. CPV codes or prefixes; a notice matches if any of its CPV codes starts with one. 72 or 72000000 selects all IT services; 45 all construction; 79952 event services. Combined with keywords: a notice must match both.",
            "items": {
              "type": "string"
            }
          },
          "dateFrom": {
            "title": "From",
            "type": "string",
            "description": "Optional. YYYY-MM-DD, YYYY-MM-DDTHH:MM:SS (UK time unless it ends in Z or an offset), today or yesterday. Find a Tender filters by when a notice was last updated; Contracts Finder by when it was published. Empty: 30 days before To."
          },
          "dateTo": {
            "title": "To",
            "type": "string",
            "description": "Optional. Same formats; a date alone means the end of that day. Empty: now."
          },
          "publishedWithinDays": {
            "title": "Last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. The window as a number of days back from To, used only when From is empty. Empty: 30."
          },
          "stage": {
            "title": "Stage",
            "enum": [
              "all",
              "planning",
              "tender",
              "award",
              "contract"
            ],
            "type": "string",
            "description": "planning (pipeline and prior information notices), tender (open opportunities, their amendments and cancellations), award (contract awards), contract (contract changes and terminations), or all. Read from each notice's own release tags, so Procurement Act 2023 notices are included.",
            "default": "all"
          },
          "portal": {
            "title": "Portal",
            "enum": [
              "both",
              "fts",
              "cf"
            ],
            "type": "string",
            "description": "fts: Find a Tender, the UK's main service for higher-value procurement. cf: Contracts Finder, lower-value contracts, mainly in England. both: one feed, newest first.",
            "default": "both"
          },
          "maxItems": {
            "title": "Maximum notices",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many notices, newest first. 0 returns every matching notice in the window. Each notice returned is one billed result.",
            "default": 100
          },
          "dedupeByOcid": {
            "title": "One row per procurement",
            "type": "boolean",
            "description": "On (default): keep only the newest matching notice of each procurement process (OCID). Off: one row per notice, so a tender and its award are both returned.",
            "default": true
          },
          "includeRawOcds": {
            "title": "Include the full OCDS release",
            "type": "boolean",
            "description": "Add the notice's full OCDS release as rawOcds, with contact points, e-mail addresses, phone numbers and suppliers' street addresses removed. Larger rows; same price.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default: both are open government APIs. Turn on only if they refuse the requests.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}