{
  "openapi": "3.0.1",
  "info": {
    "title": "TED Tenders API – EU Public Procurement Search",
    "description": "TED tenders API for EU public procurement: search tenders and contract awards from TED (Tenders Electronic Daily) by keyword, CPV code, country, value and deadline. Clean rows with English titles, buyer, deadline, EUR values, lots and winners. Only-new mode for daily tender alerts.",
    "version": "1.0",
    "x-build-id": "16WOjwqsSnLJHSP8z"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/adamhaleworks~ted-tenders-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-adamhaleworks-ted-tenders-api",
        "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/adamhaleworks~ted-tenders-api/runs": {
      "post": {
        "operationId": "runs-sync-adamhaleworks-ted-tenders-api",
        "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/adamhaleworks~ted-tenders-api/run-sync": {
      "post": {
        "operationId": "run-sync-adamhaleworks-ted-tenders-api",
        "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",
            "type": "array",
            "description": "Notices matching ANY of these words or phrases. Searches the full notice text in all languages (or only titles, see below). Supports * wildcards, for example soft*.",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes (business sectors)",
            "type": "array",
            "description": "Common Procurement Vocabulary codes. A short code covers everything below it: 72 = all IT services, 45 = all construction work, 33 = medical equipment, 48 = software packages.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Place of performance (countries or NUTS regions)",
            "type": "array",
            "description": "Where the contract is carried out. Country codes (BG, DE, FR or BGR, DEU) or NUTS region codes (BG411 = Sofia, DE21 = Upper Bavaria).",
            "items": {
              "type": "string"
            }
          },
          "buyerCountries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Country of the contracting authority. Usually the same as the place of performance, but differs for EU institutions and cross-border projects.",
            "items": {
              "type": "string"
            }
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "competition = calls for tenders (contract notices), result = contract awards with winners, planning = prior information notices, dir-awa-pre = direct award announcements, cont-modif = contract modifications, consultation = pre-market consultations. Empty = all types.",
            "items": {
              "type": "string",
              "enum": [
                "competition",
                "result",
                "planning",
                "dir-awa-pre",
                "cont-modif",
                "consultation"
              ],
              "enumTitles": [
                "Calls for tenders (competition)",
                "Contract awards (result)",
                "Prior information (planning)",
                "Direct award announcements",
                "Contract modifications",
                "Pre-market consultations"
              ]
            }
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Works, supplies and/or services. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "works",
                "supplies",
                "services"
              ],
              "enumTitles": [
                "Works",
                "Supplies",
                "Services"
              ]
            }
          },
          "publishedWithinDays": {
            "title": "Published in the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only notices published in the last N days. 0 = no date limit (use with other filters). Ignored when \"Published from\" is set.",
            "default": 7
          },
          "onlyOpen": {
            "title": "Only open tenders (deadline not passed)",
            "type": "boolean",
            "description": "Keep only notices whose deadline for tenders or requests to participate is still in the future.",
            "default": false
          },
          "minValueEur": {
            "title": "Minimum estimated value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only notices with an estimated (or awarded) value of at least this amount, converted to EUR with ECB rates. Notices without a published value are dropped when this is set."
          },
          "maxValueEur": {
            "title": "Maximum estimated value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only notices with an estimated (or awarded) value of at most this amount in EUR. Notices without a published value are dropped when this is set."
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop notices that contain any of these words or phrases.",
            "items": {
              "type": "string"
            }
          },
          "searchIn": {
            "title": "Search keywords in",
            "enum": [
              "fulltext",
              "title"
            ],
            "type": "string",
            "description": "Full text searches the whole notice (titles, descriptions, lots) in every language. Title only is stricter.",
            "default": "fulltext"
          },
          "publishedFrom": {
            "title": "Published from (date)",
            "type": "string",
            "description": "Start date, for example 2026-01-01. Overrides \"Published in the last N days\"."
          },
          "publishedTo": {
            "title": "Published until (date)",
            "type": "string",
            "description": "End date (inclusive), for example 2026-06-30."
          },
          "expertQuery": {
            "title": "TED expert query (advanced)",
            "type": "string",
            "description": "Optional extra condition in TED expert search syntax, combined with AND, for example: buyer-legal-type IN (cga) AND procedure-type = open. See https://ted.europa.eu/en/help/expert-search"
          },
          "onlyNew": {
            "title": "Only new notices since the last run (alerts)",
            "type": "boolean",
            "description": "Remember which notices were already output for this search and skip them next time. Schedule the actor daily to get tender alerts. The first run outputs all matches in the date window.",
            "default": false
          },
          "stateStoreName": {
            "title": "Alert memory store name",
            "type": "string",
            "description": "Named key-value store that remembers output notices for \"Only new\" mode. Each different search keeps its own memory inside it.",
            "default": "ted-tenders-state"
          },
          "language": {
            "title": "Preferred language for titles",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "pl",
              "pt",
              "ro",
              "bg",
              "cs",
              "da",
              "el",
              "et",
              "fi",
              "ga",
              "hr",
              "hu",
              "lt",
              "lv",
              "mt",
              "sk",
              "sl",
              "sv"
            ],
            "type": "string",
            "description": "TED translates notice titles into all EU languages. Descriptions stay in the original language.",
            "default": "en"
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Add the procurement description (original language, up to 4,000 characters). E-mail addresses and phone numbers are removed.",
            "default": true
          },
          "includeLots": {
            "title": "Include lots",
            "type": "boolean",
            "description": "Add a list of lots with title, estimated value, deadline and duration.",
            "default": true
          },
          "maxItems": {
            "title": "Max notices",
            "minimum": 0,
            "maximum": 200000,
            "type": "integer",
            "description": "Stop after this many notices (newest first). 0 = up to 200,000.",
            "default": 1000
          },
          "scope": {
            "title": "TED search scope",
            "enum": [
              "ALL",
              "ACTIVE",
              "LATEST"
            ],
            "type": "string",
            "description": "All = everything published in the last 10 years. Active = planning notices of the last 364 days, competition notices with an open deadline and results of the last 99 days. Latest = only the latest daily edition.",
            "default": "ALL"
          },
          "onlyLatestVersions": {
            "title": "Only latest notice versions",
            "type": "boolean",
            "description": "Skip notices that were later replaced by a change notice.",
            "default": true
          },
          "requestIntervalSecs": {
            "title": "Seconds between API requests",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "The TED API rate-limits bursts. 1 second (up to 250 notices per request) is safe.",
            "default": 1
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 10,
            "maximum": 300,
            "type": "integer",
            "description": "Timeout for one API request.",
            "default": 60
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Retries for network errors, HTTP 429 and 5xx responses, with backoff.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}