{
  "openapi": "3.0.1",
  "info": {
    "title": "TED Tenders Scraper - EU Public Procurement & Contract Awards",
    "description": "Find open EU public tenders and contract award winners on TED (Tenders Electronic Daily), all EU/EEA countries. Input: keywords, countries, CPV, NUTS, deadline, value, notice type (tenders or awards). Returns per notice: title, buyer, value, winners, deadline, URL. Default: 20. $1.50/1K.",
    "version": "1.0",
    "x-build-id": "FcfeeO9n0elF9TVWG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kadi_bence~ted-tenders-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kadi_bence-ted-tenders-scraper",
        "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/kadi_bence~ted-tenders-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kadi_bence-ted-tenders-scraper",
        "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/kadi_bence~ted-tenders-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kadi_bence-ted-tenders-scraper",
        "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 (full-text search)",
            "type": "array",
            "description": "Words or phrases searched in the full notice text, in any EU language, e.g. 'software', 'cloud computing', 'Reinigung'. Several lines = any of them (OR). Notices are mostly in the buyer's language, so add local words. Use short terms, not sentences. Leave empty to get all notices that match the other filters.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Country of the contracting authority. Leave empty for all countries.",
            "items": {
              "type": "string",
              "enum": [
                "AT",
                "BE",
                "BG",
                "HR",
                "CY",
                "CZ",
                "DK",
                "EE",
                "FI",
                "FR",
                "DE",
                "GR",
                "HU",
                "IE",
                "IT",
                "LV",
                "LT",
                "LU",
                "MT",
                "NL",
                "PL",
                "PT",
                "RO",
                "SK",
                "SI",
                "ES",
                "SE",
                "NO",
                "IS",
                "LI",
                "CH",
                "GB",
                "MK",
                "RS",
                "ME",
                "AL",
                "BA",
                "TR",
                "UA",
                "MD",
                "GE"
              ],
              "enumTitles": [
                "Austria",
                "Belgium",
                "Bulgaria",
                "Croatia",
                "Cyprus",
                "Czechia",
                "Denmark",
                "Estonia",
                "Finland",
                "France",
                "Germany",
                "Greece",
                "Hungary",
                "Ireland",
                "Italy",
                "Latvia",
                "Lithuania",
                "Luxembourg",
                "Malta",
                "Netherlands",
                "Poland",
                "Portugal",
                "Romania",
                "Slovakia",
                "Slovenia",
                "Spain",
                "Sweden",
                "Norway",
                "Iceland",
                "Liechtenstein",
                "Switzerland",
                "United Kingdom (until 2020)",
                "North Macedonia",
                "Serbia",
                "Montenegro",
                "Albania",
                "Bosnia and Herzegovina",
                "Türkiye",
                "Ukraine",
                "Moldova",
                "Georgia"
              ]
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Common Procurement Vocabulary codes, e.g. 72000000 (IT services) or 45000000 (construction work). Sub-categories are included automatically: 72000000 also returns 72100000, 72260000 ... You can also type a short prefix like 72.",
            "items": {
              "type": "string"
            }
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Leave empty for all types. Pick 'Contract notice' for open calls you can still bid on, 'Contract award' for who won and for how much.",
            "items": {
              "type": "string",
              "enum": [
                "contract_notice",
                "contract_award",
                "prior_information",
                "voluntary_ex_ante",
                "contract_modification",
                "market_consultation"
              ],
              "enumTitles": [
                "Contract notice (open call for tenders)",
                "Contract award notice (results, winners)",
                "Prior information notice (planned tenders)",
                "Voluntary ex-ante transparency notice (direct awards)",
                "Contract modification notice",
                "Pre-market consultation notice"
              ]
            }
          },
          "publishedWithinDays": {
            "title": "Published within the last N days",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "e.g. 7 for the last week, 1 for yesterday and today. Leave empty to use the date range below (or no date limit)."
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "First publication date (YYYY-MM-DD)."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Last publication date (YYYY-MM-DD)."
          },
          "deadlineAfter": {
            "title": "Submission deadline on or after",
            "type": "string",
            "description": "Only tenders you can still bid on: notices whose tender (or request-to-participate) deadline is on or after this date. Tip: also accepts 'today' or '+14 days'."
          },
          "minEstimatedValue": {
            "title": "Min estimated value",
            "minimum": 0,
            "type": "integer",
            "description": "Estimated contract value of the whole procedure, in the notice's own currency (most notices are in EUR). Notices without a published value are excluded when you set this."
          },
          "maxEstimatedValue": {
            "title": "Max estimated value",
            "minimum": 0,
            "type": "integer",
            "description": "Same currency rule as above."
          },
          "buyerName": {
            "title": "Buyer name contains",
            "type": "string",
            "description": "Words in the contracting authority's name, e.g. 'Charité' or 'Stadt München'. Accents don't matter."
          },
          "nutsCodes": {
            "title": "Place of performance (NUTS codes)",
            "type": "array",
            "description": "Regions where the contract is performed, e.g. DE2 (Bavaria), FR10 (Paris area), ITC4 (Lombardy). Sub-regions are included.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many notices. 0 = no limit (there is no 15,000 cap). The default without input (API, MCP and AI-agent calls) is 20.",
            "default": 20
          },
          "onlyNewNotices": {
            "title": "Only new notices (monitoring mode)",
            "type": "boolean",
            "description": "Remember returned notices and output only NEW ones on the next runs with the same search. Ideal for a daily schedule: you only pay for new notices.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Keeps separate 'already seen' lists for different schedules.",
            "default": "default"
          },
          "expertQuery": {
            "title": "Expert query (power users)",
            "type": "string",
            "description": "A raw TED expert-search query, e.g. buyer-country=DEU AND classification-cpv=72000000 AND publication-date>=today(-7). Replaces ALL filters above. Test it at ted.europa.eu/en/search/expert-search. Newest first unless you add SORT BY."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed: TED is an open-data API.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}