{
  "openapi": "3.0.1",
  "info": {
    "title": "TED Tenders: EU Public Procurement Search & Change Alerts",
    "description": "One call returns EU public tenders from TED (civil government contracts) by keywords, countries, sectors or CPV codes, up to 90 days back. With a watch name, later runs return only new tenders, deadline changes, corrigenda and cancellations. $0.003 per notice, $0.02 per change alert, $0.005 start.",
    "version": "0.1",
    "x-build-id": "mn43iiXaWPmXsPJKZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/opendata-desk~eu-tender-change-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-opendata-desk-eu-tender-change-monitor",
        "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/opendata-desk~eu-tender-change-monitor/runs": {
      "post": {
        "operationId": "runs-sync-opendata-desk-eu-tender-change-monitor",
        "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/opendata-desk~eu-tender-change-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-opendata-desk-eu-tender-change-monitor",
        "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 (any of)",
            "type": "array",
            "description": "Optional full-text keywords (TED FT search). A notice matches if it contains any of them, e.g. \"cloud\" or \"school catering\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Buyer countries as names (\"Germany\", \"Deutschland\") or ISO 3166 codes (\"DE\", \"DEU\"). EU/EEA countries, Switzerland, the UK and EU candidate countries. Leave empty for all countries. An unknown country stops the run before anything is searched.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sectors": {
            "title": "Sectors (plain language)",
            "type": "array",
            "description": "Plain-language sectors, mapped to CPV codes and combined (OR) with cpvCodes: IT services, software, computer hardware, telecommunications, construction, architecture and engineering, cleaning, waste management, environmental services, consulting, legal services, accounting and auditing, marketing and advertising, translation, recruitment and staffing, printing, events, healthcare, medical equipment and pharmaceuticals, education and training, research and development, transport, postal and courier, energy, food and catering, furniture, office supplies, financial services and insurance, real estate, repair and maintenance, landscaping, clothing. Words that match no sector are listed in RUN-SUMMARY; if none matches and no CPV code is given, the run stops before anything is searched.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes (prefix match)",
            "type": "array",
            "description": "CPV codes for exact control, optional. Prefix matching: \"72\" or \"72000000\" matches all of division 72 (IT services); \"72212000\" matches 72212*. The check digit (\"-8\") is ignored. Combined (OR) with sectors. Leave both empty for all sectors.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "eForms notice types to include. Change notices keep the notice type of the notice they change, so corrigenda of included types are always tracked. Defence notice types (cn-desg, can-desg) are never included.",
            "items": {
              "type": "string",
              "enum": [
                "cn-standard",
                "cn-social",
                "pin-cfc-standard",
                "pin-cfc-social",
                "qu-sy",
                "pin-only",
                "pin-buyer",
                "pin-rtl",
                "pin-tran",
                "veat",
                "can-standard",
                "can-social",
                "can-modif",
                "compl",
                "pmc"
              ],
              "enumTitles": [
                "Contract notice",
                "Contract notice (social/other services)",
                "PIN used as call for competition",
                "PIN call for competition (social)",
                "Qualification system",
                "PIN (information only)",
                "Buyer profile PIN",
                "PIN reducing time limits",
                "PIN (transport)",
                "Voluntary ex-ante transparency",
                "Contract award notice",
                "Contract award notice (social)",
                "Contract modification",
                "Completion notice",
                "Pre-market consultation"
              ]
            },
            "default": [
              "cn-standard",
              "cn-social",
              "pin-cfc-standard",
              "pin-cfc-social"
            ]
          },
          "daysBack": {
            "title": "Days back (first run)",
            "minimum": 0,
            "maximum": 90,
            "type": "integer",
            "description": "Publication-date window in days before today, for a one-off search and for the first (baseline) run of a watch. Later runs of a watch continue from the last seen publication date (with a 2-day overlap).",
            "default": 3
          },
          "maxResults": {
            "title": "Max results per run",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of records output per run (caps cost). On the baseline run, extra matches are remembered but not output. On change runs, changes over the cap are carried to the next run.",
            "default": 50
          },
          "stateKey": {
            "title": "Watch name (state key)",
            "pattern": "^[a-zA-Z0-9!_.'()-]{0,60}$",
            "type": "string",
            "description": "Set a name to monitor changes: the Actor remembers what it has seen under this name and, from the second run on, outputs only new and changed tenders (corrigenda, deadline changes, cancellations). Use one name per independent watch; changing the filters under the same name starts a new baseline. Leave empty for a one-off snapshot (every run outputs all matches as new and nothing is remembered).",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}