{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Find a Tender Alerts: New Public Contracts",
    "description": "New UK public contract notices from Find a Tender and Contracts Finder by keyword, CPV code or region, with a true monitoring mode that only returns and bills for notices new since your last run.",
    "version": "1.0",
    "x-build-id": "MHvz6OZhb5zkP69Ms"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/accountable_eel~uk-tender-alerts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-accountable_eel-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/accountable_eel~uk-tender-alerts/runs": {
      "post": {
        "operationId": "runs-sync-accountable_eel-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/accountable_eel~uk-tender-alerts/run-sync": {
      "post": {
        "operationId": "run-sync-accountable_eel-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": "Search keywords (matched against title and description)",
            "type": "array",
            "description": "One keyword or phrase per line, matched against the notice title and description. Combine with CPV codes, buyer names and regions below (optional). Leave empty to list recent UK notices without a keyword filter. Accepted formats: construction, IT services, \"waste management\". You're only charged for the ones we actually find — a miss costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Optional. Common Procurement Vocabulary codes, matched as a prefix (72 matches 72000000). A notice with any one of these prefixes qualifies. Leave empty to not filter by CPV code.",
            "items": {
              "type": "string"
            }
          },
          "testRun": {
            "title": "Try it first — only process the first 5",
            "type": "boolean",
            "description": "Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.",
            "default": false
          },
          "onlyFound": {
            "title": "Hide rows with no result",
            "type": "boolean",
            "description": "Only keep rows where something was actually found. Misses are always free, whether or not you show them here.",
            "default": false
          },
          "includeKeywords": {
            "title": "Only keep rows containing",
            "type": "array",
            "description": "Optional. Only keep results that mention at least one of these words (e.g. a job title, a city, a product name). Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip rows containing",
            "type": "array",
            "description": "Optional. Drop any result that mentions one of these words. Leave empty to skip nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max notices per run",
            "type": "integer",
            "description": "Up to 500. Caps how many notices you get (and pay for) in one run.",
            "default": 100
          },
          "buyerNames": {
            "title": "Buyer names",
            "type": "array",
            "description": "Optional. Keep notices whose contracting authority name contains any of these strings (for example NHS, Ministry of Defence).",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions (NUTS codes)",
            "type": "array",
            "description": "Optional. NUTS codes matched as a prefix, for example UKI for London, UKC for the North East. Leave empty for the whole UK.",
            "items": {
              "type": "string"
            }
          },
          "minValueGbp": {
            "title": "Minimum value (GBP)",
            "type": "integer",
            "description": "Optional. Only keep notices whose published value is at least this much. Many notices do not publish a value at all — this filter only narrows the subset that does; it never drops a notice just for a missing value."
          },
          "maxValueGbp": {
            "title": "Maximum value (GBP)",
            "type": "integer",
            "description": "Optional. Only keep notices whose published value is at most this much. Notices with no published value are kept."
          },
          "noticeTypes": {
            "title": "Notice types",
            "enum": [
              "tender",
              "award",
              "planning",
              "all"
            ],
            "type": "string",
            "description": "Which OCDS notice types to keep after the fetch. Default is tenders only.",
            "default": "tender"
          },
          "sources": {
            "title": "Sources",
            "enum": [
              "findATender",
              "contractsFinder",
              "both"
            ],
            "type": "string",
            "description": "Find a Tender covers above-threshold UK contracts. Contracts Finder is the below-threshold SME market. Default is Find a Tender only.",
            "default": "findATender"
          },
          "sinceDays": {
            "title": "Published in the last N days",
            "type": "integer",
            "description": "How far back to search by the notice's last-updated / published date.",
            "default": 7
          },
          "onlyNewSinceLastRun": {
            "title": "Only return notices new since the last run (monitoring)",
            "type": "boolean",
            "description": "On: only new notice ids since your last run are returned and charged for — run this on a schedule as a tender alert. Off: every matching notice is returned every time.",
            "default": false
          },
          "deltaName": {
            "title": "Watchlist name (optional)",
            "type": "string",
            "description": "Optional. Name this search's monitoring memory so you can tell two schedules of this actor apart, or keep one memory across an input change. Leave empty to auto-derive one from your filters.",
            "default": ""
          },
          "columns": {
            "title": "Which columns do you want?",
            "type": "array",
            "description": "Choose which pieces of information to include in each result row. All are included by default.",
            "items": {
              "type": "string",
              "enum": [
                "searchSummary",
                "noticeCount",
                "truncated",
                "monitorStatus",
                "notices",
                "source",
                "ocid",
                "noticeId",
                "noticeType",
                "title",
                "description",
                "buyerName",
                "buyerRegion",
                "cpvCodes",
                "valueGbp",
                "currency",
                "publishedAt",
                "deadline",
                "procedureType",
                "lotsCount",
                "noticeUrl",
                "isNew",
                "firstSeenAt"
              ],
              "enumTitles": [
                "Search run",
                "Notices returned",
                "More results were available",
                "Monitoring status",
                "All notices (full list)",
                "Source",
                "OCID",
                "Notice id",
                "Notice type",
                "Notice title",
                "Description",
                "Buyer / contracting authority",
                "Buyer region (NUTS)",
                "CPV codes",
                "Value (GBP)",
                "Currency",
                "Published on",
                "Submission deadline",
                "Procedure type",
                "Lots",
                "Notice page",
                "Is this notice new?",
                "First seen on a run"
              ]
            },
            "default": [
              "searchSummary",
              "noticeCount",
              "truncated",
              "monitorStatus",
              "notices",
              "source",
              "ocid",
              "noticeId",
              "noticeType",
              "title",
              "description",
              "buyerName",
              "buyerRegion",
              "cpvCodes",
              "valueGbp",
              "currency",
              "publishedAt",
              "deadline",
              "procedureType",
              "lotsCount",
              "noticeUrl",
              "isNew",
              "firstSeenAt"
            ]
          },
          "expandRows": {
            "title": "One row per notice (recommended) — turn off for one row per search instead",
            "type": "boolean",
            "description": "When on, each notice found gets its own row instead of being grouped under its search. You're still only charged once per search, no matter how many rows it produces.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 1,
            "type": "integer",
            "description": "Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}