{
  "openapi": "3.0.1",
  "info": {
    "title": "EU Public Tenders (TED) Search & Monitor",
    "description": "Search EU public procurement notices from TED (Tenders Electronic Daily) by keyword, CPV code, country, notice type, date and value. Get buyer, deadline, estimated value, CPV, lots and links, and daily alerts for new tenders.",
    "version": "1.0",
    "x-build-id": "dYGpYcpsN7KaupJin"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mersetti~eu-tenders-ted/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mersetti-eu-tenders-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/mersetti~eu-tenders-ted/runs": {
      "post": {
        "operationId": "runs-sync-mersetti-eu-tenders-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/mersetti~eu-tenders-ted/run-sync": {
      "post": {
        "operationId": "run-sync-mersetti-eu-tenders-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": {
          "keywords": {
            "title": "Keywords (any match)",
            "type": "array",
            "description": "Full-text search in the notice (title, description, buyer...). A notice matches if it contains ANY of these words or phrases. Phrases like \"cloud computing\" are matched exactly. Notices are multilingual, so add translations for better coverage (e.g. \"software\", \"logiciel\", \"Software\").",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Common Procurement Vocabulary codes. A code also matches all its sub-codes: 72000000 (IT services) finds 72260000 (software services) too. Short prefixes work as well: \"72\", \"4521\". Check digits like \"-5\" are ignored.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "ISO country codes (DE, FR, PL, ES, IT, NL, ... EL and UK are accepted too) or NUTS region codes (e.g. DE21 for Oberbayern, FR10 for Île-de-France). Empty = all countries.",
            "items": {
              "type": "string"
            }
          },
          "countryFilter": {
            "title": "Country applies to",
            "enum": [
              "placeOrBuyer",
              "placeOfPerformance",
              "buyer"
            ],
            "type": "string",
            "description": "Which country to match: the place of performance, the buyer's country, or either of them. NUTS region codes always filter the place of performance.",
            "default": "placeOrBuyer"
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Kinds of notices to return. Allowed values: \"competition\" (contract notices / calls for tender, open for bids), \"planning\" (prior information notices), \"result\" (contract award notices), \"directAward\" (voluntary ex-ante transparency notices), \"modification\" (contract modification notices). Empty = all types.",
            "items": {
              "type": "string"
            }
          },
          "publishedWithinDays": {
            "title": "Published within the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only notices published in the last N days. 0 = no limit. Ignored when \"Published from\" is set. TED publishes new notices every working day (Monday to Friday).",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Only notices published on or after this date (YYYY-MM-DD). Overrides \"Published within the last N days\"."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Only notices published on or before this date (YYYY-MM-DD)."
          },
          "onlyOpenForBidding": {
            "title": "Only open for bidding",
            "type": "boolean",
            "description": "Only notices whose tender submission deadline has not passed yet. Notices without a deadline (e.g. prior information or award notices) are excluded.",
            "default": false
          },
          "minValueEur": {
            "title": "Minimum value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only notices with a total (estimated or awarded) value of at least this amount. Values in other currencies (PLN, SEK, CZK, ...) are compared using approximate exchange rates. Notices without a published value are excluded. 0 = no value filter.",
            "default": 0
          },
          "maxItems": {
            "title": "Max notices",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of notices to output (newest first). In monitor mode: maximum number of new notices per run.",
            "default": 100
          },
          "expertQuery": {
            "title": "Expert query (advanced)",
            "type": "string",
            "description": "Raw TED expert search query, e.g. classification-cpv IN (72000000) AND place-of-performance IN (DEU) AND publication-date>=20261001. When set, it replaces the filters above (keywords, CPV, countries, notice types, dates, value). Build and test queries at https://ted.europa.eu/en/search/expert-search. Results are sorted newest first unless the query has its own SORT BY."
          },
          "monitorMode": {
            "title": "Monitor mode (only new notices)",
            "type": "boolean",
            "description": "Remembers which notices were already delivered and outputs only notices not seen in previous runs. Schedule the Actor daily to get tender alerts by email, Slack, Google Sheets or webhook. You pay only for new notices.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name of the saved state. Use different IDs for different searches (e.g. \"it-germany\", \"construction-poland\").",
            "default": "default"
          },
          "baselineOnFirstRun": {
            "title": "Silent first run",
            "type": "boolean",
            "description": "On the first run of a new monitor, only remember the currently matching notices (no output, no cost), so later runs report only notices published afterwards. Off = the first run delivers the current matches.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}