{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Procurement Alerts – Contracts Finder + Find a Tender",
    "description": "Monitor UK government procurement portals for new contract opportunities matching your keywords, CPV codes, region, and value filters. Tracks seen notices to avoid duplicates. Only charges on new matches. Affordable alternative to Tussell (£16,500/yr).",
    "version": "1.0",
    "x-build-id": "oadN7AB2Q9AL1IUTq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/conceivable_extension~uk-procurement-alerts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-conceivable_extension-uk-procurement-alerts",
        "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/conceivable_extension~uk-procurement-alerts/runs": {
      "post": {
        "operationId": "runs-sync-conceivable_extension-uk-procurement-alerts",
        "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/conceivable_extension~uk-procurement-alerts/run-sync": {
      "post": {
        "operationId": "run-sync-conceivable_extension-uk-procurement-alerts",
        "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",
        "required": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Keywords to match in contract title and description. Each keyword creates a separate watchlist. Examples: 'software development', 'AI consultancy', 'cybersecurity'.",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV Codes",
            "type": "array",
            "description": "EU Common Procurement Vocabulary codes to filter by. Optional. E.g. '72000000' for IT services. Leave empty for all categories.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "UK Regions",
            "type": "array",
            "description": "UK regions to filter by. Leave empty for all UK. Examples: 'London', 'South East', 'Yorkshire and the Humber'.",
            "items": {
              "type": "string"
            }
          },
          "minValueGbp": {
            "title": "Minimum Contract Value (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return contracts worth at least this amount in GBP. Set to 0 for no minimum.",
            "default": 0
          },
          "maxValueGbp": {
            "title": "Maximum Contract Value (£)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return contracts worth up to this amount in GBP. Set to 0 for no maximum.",
            "default": 0
          },
          "noticeTypes": {
            "title": "Notice Types",
            "type": "array",
            "description": "Types of procurement notice to return. Contract notices are live opportunities; award notices reveal who won.",
            "items": {
              "type": "string",
              "enum": [
                "contract_notice",
                "prior_information_notice",
                "contract_award_notice",
                "dynamic_purchasing_system"
              ],
              "enumTitles": [
                "Contract Notice (live opportunities)",
                "Prior Information Notice (upcoming opportunities)",
                "Contract Award Notice (who won – competitive intel)",
                "Dynamic Purchasing System"
              ]
            },
            "default": [
              "contract_notice"
            ]
          },
          "sources": {
            "title": "Procurement Portals",
            "type": "array",
            "description": "Which UK government procurement portals to monitor. Contracts Finder covers all values; Find a Tender covers above-threshold (>£138k) only.",
            "items": {
              "type": "string",
              "enum": [
                "contracts_finder",
                "find_a_tender"
              ],
              "enumTitles": [
                "Contracts Finder (below-threshold + above-threshold)",
                "Find a Tender Service (above-threshold only, >£138k)"
              ]
            },
            "default": [
              "contracts_finder"
            ]
          },
          "publishedWithinDays": {
            "title": "Published Within Days",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Only return notices published within this many days. Default 7 ensures weekly runs don't miss anything.",
            "default": 7
          },
          "maxResultsPerKeyword": {
            "title": "Max Results Per Keyword",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum notices to check per keyword per source per run.",
            "default": 50
          },
          "excludeKeywords": {
            "title": "Exclude Keywords",
            "type": "array",
            "description": "Exclude notices whose title or description contains these words. Useful for filtering out irrelevant categories.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}