{
  "openapi": "3.0.1",
  "info": {
    "title": "EU Tenders & Contract Awards (TED) - One Row per Procedure",
    "description": "EU tenders and contract awards from the official TED API, one row per procedure: each call for tender joined with its award notices and corrigenda. Buyer, CPV, estimate, deadline, award value, winning companies. Keyword, country, CPV, value and date filters. Unofficial; not affiliated with the EU.",
    "version": "0.1",
    "x-build-id": "pc1U7g6rG7MwwUKa8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jpopendata~eu-ted-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jpopendata-eu-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/jpopendata~eu-ted-tenders/runs": {
      "post": {
        "operationId": "runs-sync-jpopendata-eu-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/jpopendata~eu-ted-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-jpopendata-eu-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Optional. Words or phrases searched in the full text of the notices (TED's full-text index: the notice in its original language plus the English title), any case, e.g. \"software\", \"cloud services\", \"Rahmenvertrag\". A procedure matches if a notice contains ANY of them. Notices are written in the buyer's language, so add the local word for best recall (e.g. \"Reinigung\" next to \"cleaning\"). Leave empty for all notices.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Optional. Countries of the buyer (contracting authority), as names or ISO codes: \"Germany\", \"DE\" or \"DEU\"; native names such as \"Deutschland\" or \"Polska\" work too. Covers the EU, EEA, Switzerland and candidate countries. Empty = all countries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Optional. CPV codes or prefixes, e.g. \"72000000\" (IT services: matches every code under 72), \"45\" (construction work), \"33600000-6\". TED matches the whole branch below each code, in the main and the additional CPV codes.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "stages": {
            "title": "Notice stages",
            "type": "array",
            "description": "Optional. Which notices are searched in the window: planning (prior information notices), tender (contract notices = open calls), award (contract award notices, voluntary ex-ante transparency notices) and/or modification (contract modifications). Each row still shows the whole procedure and its most advanced stage. Empty = all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "buyers": {
            "title": "Buyer name contains",
            "type": "array",
            "description": "Optional. Part of the buyer's name as written on TED (usually in the local language), e.g. \"Stadt München\", \"Deutsche Bahn\", \"Gmina\". Any match counts.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "valueMin": {
            "title": "Minimum value",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Minimum notice value in Value currency (the estimated value of a call for tender, the total awarded value of an award notice), e.g. 100000. Notices without a value in that currency are dropped when a value range is set."
          },
          "valueMax": {
            "title": "Maximum value",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Maximum notice value in Value currency, e.g. 5000000."
          },
          "valueCurrency": {
            "title": "Value currency",
            "type": "string",
            "description": "The currency the value range refers to, as a 3-letter code: EUR (default), PLN, CZK, SEK, DKK, HUF, RON, NOK, CHF ... Values are not converted between currencies.",
            "default": "EUR"
          },
          "daysBack": {
            "title": "Days back",
            "type": "integer",
            "description": "Search notices published from N days ago up to today (1..366, Brussels calendar days). Ignored when Published from is set. TED publishes about 3,000-4,000 notices per working day; with Max rows the run stops early once it has the newest matching procedures.",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Optional. First publication day of the window, YYYY-MM-DD, e.g. \"2026-09-01\". YYYYMMDD, DD.MM.YYYY, \"today\" and \"yesterday\" also work. The window can be at most 366 days.",
            "default": ""
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Optional. Last publication day of the window, YYYY-MM-DD. Empty = today.",
            "default": ""
          },
          "deadlineFrom": {
            "title": "Submission deadline from",
            "type": "string",
            "description": "Optional. Keep only notices whose tender submission deadline is on or after this day, YYYY-MM-DD. Notices without a deadline (for example award notices) are dropped when this is set.",
            "default": ""
          },
          "deadlineTo": {
            "title": "Submission deadline to",
            "type": "string",
            "description": "Optional. Keep only notices whose tender submission deadline is on or before this day, YYYY-MM-DD.",
            "default": ""
          },
          "onlyOpen": {
            "title": "Only open for bids",
            "type": "boolean",
            "description": "Keep only calls for tender whose submission deadline is still ahead (searches contract notices with a deadline from today on, then drops procedures that already have an award or whose newest deadline has passed).",
            "default": false
          },
          "linkProcedures": {
            "title": "Link the whole procedure",
            "type": "boolean",
            "description": "Also read every other notice of each procedure found (the original contract notice, award notices, corrigenda, modifications), so an award row carries the original estimate and deadline and a tender row shows later corrigenda. About 1 extra request per 50 procedures. Turn off for a faster notice-only view.",
            "default": true
          },
          "maxItems": {
            "title": "Max rows",
            "type": "integer",
            "description": "Maximum procedure rows (1..5000), newest first. You are charged per row.",
            "default": 20
          },
          "maxApiRequests": {
            "title": "Max API requests",
            "type": "integer",
            "description": "Hard budget of requests to the TED API for the whole run (1..500). Requests are sent one at a time at least 2 seconds apart; one request returns up to 250 notices. If the budget runs out the run still succeeds with what it read (complete=false in RUN_SUMMARY).",
            "default": 40
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional and normally not needed: the TED API answers Apify datacenter IPs. If set, one sticky session is used for the whole run (never rotation).",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}