{
  "openapi": "3.0.1",
  "info": {
    "title": "EU Tenders (TED): Contract Notices and Awards API",
    "description": "Returns EU public procurement notices from TED as flat JSON: title, buyer, country, CPV codes, estimated value, deadline, open flag, awarded value and winning companies. Filter by country, keyword, CPV, value and date.",
    "version": "0.1",
    "x-build-id": "v3HcdXOZrds7xwD4r"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/studded_lantana~ted-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-studded_lantana-ted-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/studded_lantana~ted-tenders/runs": {
      "post": {
        "operationId": "runs-sync-studded_lantana-ted-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/studded_lantana~ted-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-studded_lantana-ted-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": {
          "stages": {
            "title": "Notice stages",
            "type": "array",
            "description": "Which kind of TED notice to return. competition = open calls for tenders you can bid on (default). planning = prior information and pipeline notices, before a tender opens. result = contract award notices with the awarded value and the winning companies; use this to see who won.",
            "items": {
              "type": "string",
              "enum": [
                "competition",
                "planning",
                "result"
              ],
              "enumTitles": [
                "Competition (calls for tenders)",
                "Planning (prior information)",
                "Result (contract awards)"
              ]
            },
            "default": [
              "competition"
            ]
          },
          "daysBack": {
            "title": "Days back",
            "minimum": 1,
            "maximum": 31,
            "type": "integer",
            "description": "Notices published on TED in the last N days, including today (UTC). TED publishes on working days: about 1,900 calls for tenders and 1,400 award notices a day (Sep-Oct 2026). For a daily check use 2 and skip notices already seen; use 7 for a weekly one. Maximum 31. Ignored if Date from is set.",
            "default": 7
          },
          "dateFrom": {
            "title": "Date from",
            "type": "string",
            "description": "Optional start of a fixed publication period, as YYYY-MM-DD (e.g. \"2026-09-01\"). Use it with Date to instead of Days back. The period can be at most 31 days; for a longer history, run once per month."
          },
          "dateTo": {
            "title": "Date to",
            "type": "string",
            "description": "Optional. YYYY-MM-DD, inclusive. Defaults to today (UTC)."
          },
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Keep notices whose buyer is in these countries, as ISO codes, two or three letters, e.g. [\"DE\", \"FR\"] or [\"DEU\", \"FRA\"]. Covers EU and EEA countries plus others that publish on TED, such as the UK, Switzerland and EU candidate countries. Leave empty for all countries.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Full-text search across the whole notice in any language, e.g. [\"software\", \"cloud hosting\"]. A notice matches if at least one keyword or phrase appears. Notices are written in the buyer's language, so add translations as separate entries (e.g. \"Software\", \"logiciel\"). Letters, digits, spaces and . , & ' - only.",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Keep notices in these procurement categories (CPV codes). Trailing zeros widen the match, so a division code covers everything under it: \"72000000\" IT services, \"48000000\" software packages, \"45000000\" construction work, \"33000000\" medical equipment, \"79000000\" business services. A short prefix such as \"45\" works too. Leave empty for all categories.",
            "items": {
              "type": "string"
            }
          },
          "minValue": {
            "title": "Minimum value",
            "type": "integer",
            "description": "Keep notices whose estimated value (awarded value when no estimate is published) is at least this amount in the Value currency, e.g. 100000. Notices without a value, or with a value in another currency, are dropped when this is set, so leave it empty for the fullest list."
          },
          "maxValue": {
            "title": "Maximum value",
            "type": "integer",
            "description": "Keep notices whose estimated value (awarded value when no estimate is published) is at most this amount in the Value currency, e.g. 1000000. Notices without a value, or in another currency, are dropped when this is set."
          },
          "valueCurrency": {
            "title": "Value currency",
            "type": "string",
            "description": "Currency for Minimum and Maximum value, as a 3-letter code, e.g. \"EUR\", \"PLN\", \"SEK\", \"CZK\". No conversion is done: only notices published in this currency are compared. Default EUR.",
            "default": "EUR"
          },
          "openOnly": {
            "title": "Only open tenders",
            "type": "boolean",
            "description": "Set to true to keep only notices whose tender deadline is still in the future, i.e. calls for tenders that can still be bid on. Use it with the competition stage.",
            "default": false
          },
          "language": {
            "title": "Preferred language",
            "type": "string",
            "description": "3-letter code of the language you prefer for title, description, buyer name and city, e.g. \"eng\", \"deu\", \"fra\". When a notice is not published in it, English is used, then the notice's own language. headline_en is always English.",
            "default": "eng"
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many matching notices. You are charged per notice returned, so this also caps the cost of the run.",
            "default": 200
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Advanced; the default is fine for most runs. How many TED result pages (up to 100 notices each) to scan before stopping. Lower it to bound run time on wide date ranges without filters.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}