{
  "openapi": "3.0.1",
  "info": {
    "title": "Danish Public Tenders (TED): Udbud Alerts by CPV & Keyword",
    "description": "Danish public tenders (udbud) from the official EU TED API: buyer, CPV, value, deadline, link. CPV/keyword filters and daily only-new alerts.",
    "version": "0.1",
    "x-build-id": "S7foweiL8lAgRfibW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nordic_open_data~dk-public-tenders/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nordic_open_data-dk-public-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/nordic_open_data~dk-public-tenders/runs": {
      "post": {
        "operationId": "runs-sync-nordic_open_data-dk-public-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/nordic_open_data~dk-public-tenders/run-sync": {
      "post": {
        "operationId": "run-sync-nordic_open_data-dk-public-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": {
          "countryPreset": {
            "title": "Countries",
            "enum": [
              "denmark",
              "scandinavia",
              "nordic",
              "custom"
            ],
            "type": "string",
            "description": "Buyer-country preset. Pick 'Custom list below' to choose countries yourself.",
            "default": "denmark"
          },
          "countries": {
            "title": "Custom buyer countries",
            "type": "array",
            "description": "Only used when Countries = 'Custom list below'.",
            "items": {
              "type": "string",
              "enum": [
                "DNK",
                "SWE",
                "NOR",
                "FIN",
                "ISL"
              ],
              "enumTitles": [
                "Denmark",
                "Sweden",
                "Norway",
                "Finland",
                "Iceland"
              ]
            },
            "default": [
              "DNK"
            ]
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Optional. A notice matches if ANY keyword appears in its full text (any language), e.g. software, rådgivning, rengøring.",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Optional CPV codes: 8 digits (72000000) or a 2-4 digit division/group padded with zeros (72 = IT services, 45 = construction, 79 = business services).",
            "items": {
              "type": "string"
            }
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Which kinds of notices to return.",
            "items": {
              "type": "string",
              "enum": [
                "competition",
                "result",
                "planning"
              ],
              "enumTitles": [
                "Calls for tender (bid opportunities)",
                "Contract awards (who won)",
                "Prior information / market dialogue"
              ]
            },
            "default": [
              "competition"
            ]
          },
          "publishedWithinDays": {
            "title": "Published within the last N days",
            "minimum": 1,
            "maximum": 366,
            "type": "integer",
            "description": "Quick date filter. Default 7 days. Leave empty when you use the custom From/To dates."
          },
          "dateFrom": {
            "title": "Published from",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Custom range start, YYYY-MM-DD (inclusive). Don't combine with 'Published within'."
          },
          "dateTo": {
            "title": "Published to",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Custom range end, YYYY-MM-DD (inclusive). Default: today. Max range 366 days."
          },
          "onlyOpenForBids": {
            "title": "Only tenders still open for bids",
            "type": "boolean",
            "description": "Drop notices whose deadline has passed or that have no deadline.",
            "default": false
          },
          "minValue": {
            "title": "Minimum value",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Drop notices whose estimated (or awarded) value is lower or not published. Value is in the notice's own currency (DKK/EUR/SEK/NOK)."
          },
          "onlyNew": {
            "title": "Only new since last run",
            "type": "boolean",
            "description": "Remember which notices you already received (per monitor ID) and return only new ones. Schedule the Actor daily for tender alerts. The first run returns everything that matches and saves the baseline.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name of this saved search for 'only new' mode. History is kept per monitor ID and search filters (dates and max notices can change freely).",
            "default": "default"
          },
          "preferredLanguage": {
            "title": "Preferred language",
            "enum": [
              "eng",
              "dan",
              "swe",
              "nor",
              "fin"
            ],
            "type": "string",
            "description": "Language for titles and buyer names when the notice has it; otherwise English or the original language.",
            "default": "eng"
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Add the procedure description (up to 2,000 characters). Turn off for smaller output.",
            "default": true
          },
          "outputMode": {
            "title": "Output rows",
            "enum": [
              "notices",
              "lots"
            ],
            "type": "string",
            "description": "Every notice always has a nested 'lots' array. 'One row per lot' flattens it for spreadsheets. Billing is per notice either way.",
            "default": "notices"
          },
          "convertCurrency": {
            "title": "Convert values to DKK and EUR",
            "type": "boolean",
            "description": "Add valueDkk/valueEur using the latest ECB euro reference rates (SEK, NOK and ISK tenders become comparable).",
            "default": true
          },
          "maxItems": {
            "title": "Max notices",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of notices to return in one run (each is one billable result). Newest first.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}