{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Public Tender Alerts (Find a Tender, new notices only)",
    "description": "Incremental alerts for UK public procurement notices from the official Find a Tender OCDS API. Filter by keywords, CPV codes, value and region; only notices not seen in previous runs are output.",
    "version": "0.2",
    "x-build-id": "ShLsdze4VpPu4aGxy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/buttery_dingo~uk-tender-alerts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-buttery_dingo-uk-tender-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/buttery_dingo~uk-tender-alerts/runs": {
      "post": {
        "operationId": "runs-sync-buttery_dingo-uk-tender-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/buttery_dingo~uk-tender-alerts/run-sync": {
      "post": {
        "operationId": "run-sync-buttery_dingo-uk-tender-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",
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Match any keyword (case-insensitive) in title or description. Empty = no keyword filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV code prefixes",
            "type": "array",
            "description": "e.g. 72 (IT services) or 79410000. A notice matches if any of its CPV codes starts with a prefix.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minValue": {
            "title": "Minimum value (notice currency)",
            "minimum": 0,
            "type": "integer",
            "description": "Notices without a stated value are kept unless 'Require value' is on."
          },
          "maxValue": {
            "title": "Maximum value (notice currency)",
            "minimum": 0,
            "type": "integer",
            "description": "Upper limit on the estimated contract value, in the notice's own currency (GBP for UK, usually EUR for TED). Notices above this are dropped. Leave empty for no upper limit. Notices with no stated value are kept unless 'Require value' is on."
          },
          "requireValue": {
            "title": "Require value",
            "type": "boolean",
            "description": "Drop notices with no stated value when a min/max is set.",
            "default": false
          },
          "regions": {
            "title": "NUTS/ITL region prefixes",
            "type": "array",
            "description": "e.g. UKI (London), UKM (Scotland). Matches delivery or buyer region by prefix.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "noticeStages": {
            "title": "Notice stages",
            "type": "array",
            "description": "OCDS release tags to keep. Default: open tenders only. (UK only.)",
            "items": {
              "type": "string",
              "enum": [
                "planning",
                "tender",
                "award",
                "contract"
              ]
            },
            "default": [
              "tender"
            ]
          },
          "lookbackDays": {
            "title": "Lookback days",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many days back to search for newly published notices (1-30). For a daily schedule, 2-3 days gives overlap so nothing is missed; already-delivered notices are skipped by the dedup store, so overlap is never billed twice.",
            "default": 3
          },
          "maxResults": {
            "title": "Max new results per run",
            "minimum": 1,
            "type": "integer",
            "description": "Safety cap on how many new notices are pushed to the dataset in one run. Each new notice is one billable result, so this also caps your cost per run.",
            "default": 500
          },
          "stateStoreName": {
            "title": "Dedup store name",
            "type": "string",
            "description": "Named key-value store that remembers notices already delivered. Use different names for different alert profiles.",
            "default": "uk-tender-alerts-state"
          },
          "includeUk": {
            "title": "Include UK Find a Tender",
            "type": "boolean",
            "description": "Default source.",
            "default": true
          },
          "includeTed": {
            "title": "Include EU TED (optional)",
            "type": "boolean",
            "description": "Off by default. Uses only the official TED Search API, throttled to max 60 requests/minute. Not an official EU service; not affiliated with the EU or TED.",
            "default": false
          },
          "tedCountries": {
            "title": "TED buyer countries (ISO 3166-1 alpha-3)",
            "type": "array",
            "description": "e.g. DEU, IRL, FRA. Empty = all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tedNoticeTypes": {
            "title": "TED notice types",
            "type": "array",
            "description": "TED eForms notice-type codes. Default: contract notices (open competitions).",
            "default": [
              "cn-standard",
              "cn-social"
            ],
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}