{
  "openapi": "3.0.1",
  "info": {
    "title": "Public Tenders API: EU TED, Find a Tender, Contracts Finder",
    "description": "Public tenders API: EU tenders (TED) and UK tenders (Find a Tender, Contracts Finder). Open tenders and contract awards in one schema, no source API key. Filter by CPV, country, NUTS, value, deadline, keywords. Daily tender alerts. Not affiliated with the EU, TED, Find a Tender or Contracts Finder.",
    "version": "0.1",
    "x-build-id": "pp96VF5ry12d5Cloc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yourevenings~eu-uk-public-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yourevenings-eu-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/yourevenings~eu-uk-public-tenders/runs": {
      "post": {
        "operationId": "runs-sync-yourevenings-eu-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/yourevenings~eu-uk-public-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-yourevenings-eu-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": {
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which official APIs to search. Leave empty for all three.",
            "items": {
              "type": "string",
              "enum": [
                "ted",
                "find-a-tender",
                "contracts-finder"
              ],
              "enumTitles": [
                "TED (EU, EEA and other countries publishing in the EU Official Journal)",
                "Find a Tender (UK, above-threshold and Procurement Act notices)",
                "Contracts Finder (UK, lower-value notices and awards)"
              ]
            }
          },
          "noticeStages": {
            "title": "Notice stages",
            "type": "array",
            "description": "Which stages to return. Default: tender (open opportunities).",
            "items": {
              "type": "string",
              "enum": [
                "planning",
                "tender",
                "award",
                "contract"
              ],
              "enumTitles": [
                "Planning (prior information, market engagement)",
                "Tender (open opportunities)",
                "Award (contract award notices)",
                "Contract (modifications, terminations)"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Whole words or phrases, matched case- and accent-insensitively in the title, description and lot titles. \"cloud\" matches \"Cloud hosting\" but not \"Cloudsley\". Each row lists matchedKeywords.",
            "items": {
              "type": "string"
            }
          },
          "keywordMode": {
            "title": "Keyword match",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "Return notices matching any keyword (default) or all of them.",
            "default": "any"
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "CPV code prefixes, 2 to 8 digits. 72 = all IT services, 45 = construction work, 7221 = software programming and consultancy.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "2-letter ISO codes of the buyer's country, e.g. DE, FR, IE, GB. UK sources are skipped when GB isn't in the list.",
            "items": {
              "type": "string"
            }
          },
          "nutsCodes": {
            "title": "NUTS / ITL region codes",
            "type": "array",
            "description": "Place-of-performance region prefixes, e.g. DE21, IE06, UKI (London). Notices without a region code are filtered out when this is set. Contracts Finder often publishes region names rather than codes.",
            "items": {
              "type": "string"
            }
          },
          "minValue": {
            "title": "Minimum value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Estimated or awarded value in euros. Non-euro values are converted with the latest ECB reference rate. Notices without a value are filtered out when a value filter is set."
          },
          "maxValue": {
            "title": "Maximum value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "See minimum value."
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 0,
            "maximum": 366,
            "type": "integer",
            "description": "Rolling window counted back from the run date, so a saved task always looks at the latest days. Ignored when publishedFrom is set.",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Fixed start date (YYYY-MM-DD). Overrides publishedWithinDays."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Fixed end date (YYYY-MM-DD). Leave empty for up to now."
          },
          "deadlineAfter": {
            "title": "Deadline after",
            "type": "string",
            "description": "Tender-stage notices whose submission deadline is before this date are filtered out. Default: today. Notices without a deadline are kept."
          },
          "includePastDeadlines": {
            "title": "Include tenders whose deadline has passed",
            "type": "boolean",
            "description": "Turn off the deadline filter.",
            "default": false
          },
          "buyerNames": {
            "title": "Buyer names",
            "type": "array",
            "description": "Whole words or phrases matched in the buyer's name, e.g. \"NHS\" or \"Stadt München\".",
            "items": {
              "type": "string"
            }
          },
          "smeSuitableOnly": {
            "title": "SME-suitable only",
            "type": "boolean",
            "description": "Only notices the buyer flagged as suitable for SMEs. Only Contracts Finder (and some Find a Tender notices) publish this flag, so TED notices are filtered out.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor mode (alerts)",
            "type": "boolean",
            "description": "Return only notices that are new or changed since the last monitor run (changeType new, amended, awarded or cancelled). The first run saves a free baseline. Schedule it daily for alerts.",
            "default": false
          },
          "emitBaselineOnFirstRun": {
            "title": "Return matches on the first monitor run",
            "type": "boolean",
            "description": "By default the first monitor run returns nothing and only saves the baseline. Turn on to return (and pay for) the current matches too.",
            "default": false
          },
          "stateStoreName": {
            "title": "Monitor state store",
            "type": "string",
            "description": "Named key-value store for monitor state. Use a different name for each saved search you monitor.",
            "default": "eu-uk-public-tenders-state"
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Add the notice description (up to 4,000 characters).",
            "default": false
          },
          "excludeContactDetails": {
            "title": "Exclude contact details",
            "type": "boolean",
            "description": "On (default): no contact emails or phone numbers are output, and they are removed from descriptions. Off: adds the buyer's published contact email and telephone. Names of contact people are never output.",
            "default": true
          },
          "maxResults": {
            "title": "Max results per source",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum notice rows per source (newest first). 0 = no limit (up to 50,000).",
            "default": 50
          },
          "maxScanPerSource": {
            "title": "Max notices read per source",
            "minimum": 100,
            "maximum": 100000,
            "type": "integer",
            "description": "Safety cap on notices read per source before filters. A free scan_truncated row says when it was reached.",
            "default": 20000
          },
          "maxSecondsPerSource": {
            "title": "Max seconds per UK source",
            "minimum": 30,
            "maximum": 3000,
            "type": "integer",
            "description": "Time budget for reading each UK source. Find a Tender can be slow (15 to 90 seconds per page of 100). When the budget runs out, a free scan_truncated row says which older notices weren't checked.",
            "default": 210
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}