{
  "openapi": "3.0.1",
  "info": {
    "title": "EU Tenders Scraper & Monitor (TED)",
    "description": "Get EU public tenders and contract awards from TED as a clean table: buyer, deadline, estimated value, winners and CPV codes. Filter by keyword, CPV, country and date, or get only new tenders every day. Official TED API, no personal data.",
    "version": "0.1",
    "x-build-id": "JBBnMJv9op6yfe7nF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gr1n~ted-tenders-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gr1n-ted-tenders-monitor",
        "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/gr1n~ted-tenders-monitor/runs": {
      "post": {
        "operationId": "runs-sync-gr1n-ted-tenders-monitor",
        "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/gr1n~ted-tenders-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-gr1n-ted-tenders-monitor",
        "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": "Full-text search in any language. A notice matches if it contains any of these words or phrases. Example: [\"solar\", \"photovoltaic\"].",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories in plain words",
            "type": "array",
            "description": "Describe what is being bought, like \"road construction\", \"cleaning services\" or \"hospital beds\" (English, German, French, Spanish, Italian, Polish, Dutch, Portuguese or Swedish). Each one is turned into matching CPV codes; the codes used are listed in the run summary. Terms that match nothing or are too broad are searched as keywords instead.",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Common Procurement Vocabulary codes, like 45000000 (construction work) or 72000000-5 (IT services). Child codes are included automatically.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "2- or 3-letter country codes of the contracting authority, like DE, FR or POL. Leave empty for all countries.",
            "items": {
              "type": "string"
            }
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Which notices to get. 'Open tenders' are calls for competition you can still bid on; 'Contract awards' name the winners and awarded values.",
            "items": {
              "type": "string",
              "enum": [
                "competition",
                "result",
                "planning",
                "change",
                "cont-modif",
                "dir-awa-pre",
                "all"
              ],
              "enumTitles": [
                "Open tenders (calls for competition)",
                "Contract awards (winners)",
                "Prior information (planned tenders)",
                "Changes and corrections",
                "Contract modifications",
                "Direct award pre-announcements",
                "All notice types"
              ]
            },
            "default": [
              "competition"
            ]
          },
          "daysBack": {
            "title": "Published in the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Used when 'Published from' is empty. Set 0 to search all of TED's history.",
            "default": 7
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Only notices published on or after this date."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Only notices published on or before this date."
          },
          "openOnly": {
            "title": "Only tenders still open",
            "type": "boolean",
            "description": "Skip tenders whose submission deadline has passed.",
            "default": false
          },
          "minEstimatedValue": {
            "title": "Minimum value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only notices whose estimated value (or awarded value for contract awards) is at least this many euros. Other currencies are converted with the European Central Bank's daily rates. Notices without a published value are skipped when this is set."
          },
          "maxItems": {
            "title": "Max notices",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many notices. Leave empty to get every match."
          },
          "includeDetails": {
            "title": "Include lot details",
            "type": "boolean",
            "description": "Add each lot's title, value, deadline and contract duration, plus award criteria (price, quality…), selection criteria and the submission link. Useful for deciding whether to bid.",
            "default": false
          },
          "outputMode": {
            "title": "Output format",
            "enum": [
              "full",
              "compact"
            ],
            "type": "string",
            "description": "'Full' gives every field. 'Compact' gives a short row per notice, handy for spreadsheets, alerts and AI agents.",
            "default": "full"
          },
          "language": {
            "title": "Headline and PDF language",
            "enum": [
              "ENG",
              "DEU",
              "FRA",
              "ITA",
              "SPA",
              "POL",
              "NLD",
              "POR",
              "SWE",
              "CES",
              "RON",
              "HUN",
              "ELL",
              "DAN",
              "FIN",
              "SLK",
              "BUL",
              "HRV",
              "SLV",
              "LIT",
              "LAV",
              "EST",
              "MLT",
              "GLE"
            ],
            "type": "string",
            "description": "Language of the translated headline and the PDF link. The original title and description stay in the notice's own language.",
            "default": "ENG"
          },
          "monitorMode": {
            "title": "Only new notices since the last run",
            "type": "boolean",
            "description": "Remember what earlier runs of this same search returned and save only notices published since. Schedule the Actor daily to get a feed of new tenders and pay only for new ones.",
            "default": false
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Send a digest of the saved notices to Telegram. Create a bot with @BotFather and paste its token here."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Chat, group or channel to send the digest to. Add the bot to it first."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Send the digest to a Slack channel through an incoming webhook."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "POST the digest as JSON to any URL, for example a Make, Zapier or n8n webhook."
          },
          "notifyWhenEmpty": {
            "title": "Send alerts when nothing is new",
            "type": "boolean",
            "description": "Also send a message when a run finds no notices.",
            "default": false
          },
          "customQuery": {
            "title": "Expert query",
            "type": "string",
            "description": "Optional TED expert-search query added to the filters above with AND, for example: buyer-city=Paris. See the expert search help on ted.europa.eu."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}