{
  "openapi": "3.0.1",
  "info": {
    "title": "EU Tenders Monitor (TED): European Public Procurement",
    "description": "Get new EU tenders and contract awards from TED (Tenders Electronic Daily) via the official API, no key. Filter by country, CPV code, keywords and EUR value. Scheduled runs return only new notices, with deadline, buyer, lots and link.",
    "version": "0.1",
    "x-build-id": "d04cEK9OALsdbPdC0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fedsignals~eu-tenders-monitor-ted/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fedsignals-eu-tenders-monitor-ted",
        "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/fedsignals~eu-tenders-monitor-ted/runs": {
      "post": {
        "operationId": "runs-sync-fedsignals-eu-tenders-monitor-ted",
        "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/fedsignals~eu-tenders-monitor-ted/run-sync": {
      "post": {
        "operationId": "run-sync-fedsignals-eu-tenders-monitor-ted",
        "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": {
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Returns notices from buyers in these countries. Use 2-letter codes (DE), 3-letter codes (DEU) or English names (Germany). Empty = all countries on TED (EU, EEA and others). A misspelled country fails the run before any notice is charged, with a suggestion.",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Returns notices classified under these CPV codes, including all sub-codes (72000000 = all IT services; 45000000 = all construction work). The check digit (72000000-5) is optional. Empty = all sectors.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Returns notices whose text contains any of these words or phrases, separated by commas, e.g. cybersecurity, cloud computing. A phrase matches as a whole. Titles and descriptions are often in the buyer's language, so add translations if you need them (e.g. cybersecurity, cybersécurité, Cybersicherheit)."
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Which notices to return: calls for tenders (competition), contract awards (result) and/or prior information notices (planning). Leave empty to get all three. To keep only calls you can still bid on, leave 'Only open notices' on.",
            "items": {
              "type": "string",
              "enum": [
                "competition",
                "result",
                "planning"
              ],
              "enumTitles": [
                "Calls for tenders (competition)",
                "Contract awards (result)",
                "Prior information (planning)"
              ]
            },
            "default": [
              "competition"
            ]
          },
          "minValueEur": {
            "title": "Minimum value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Returns only notices whose value is at least this amount in EUR. Other currencies are converted with the ECB reference rate of the day. 0 = no value filter.",
            "default": 0
          },
          "includeWithoutValue": {
            "title": "Keep notices with no published value",
            "type": "boolean",
            "description": "Many buyers don't publish a value. When a minimum value is set, keep those notices (on) or drop them (off).",
            "default": true
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Returns notices published in the last N days (1-90). TED publishes every working day.",
            "default": 3
          },
          "openOnly": {
            "title": "Only open notices",
            "type": "boolean",
            "description": "On: drops calls for tenders and prior information notices once every lot deadline has passed (compared with the current UTC time; a notice with any lot still open is kept; a date-only deadline stays open through that day). Notices with no deadline, and contract awards, are always kept. Off: returns closed calls too.",
            "default": true
          },
          "onlyNew": {
            "title": "Only new notices",
            "type": "boolean",
            "description": "On: each run returns only notices this filter set hasn't returned before, so a daily schedule gives you just the new tenders. Off: returns every match each run.",
            "default": true
          },
          "maxItems": {
            "title": "Max notices per run",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stops after this many notices, to cap the cost of a run.",
            "default": 100
          },
          "stateKey": {
            "title": "State key (advanced)",
            "type": "string",
            "description": "Optional name for the 'already seen' memory. Runs with the same key share it. Leave empty to use one memory per filter set."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}