{
  "openapi": "3.0.1",
  "info": {
    "title": "🇪🇺 EU Tender & Procurement Scraper (TED API)",
    "description": "Real-time European public procurement contracts, government tenders, and RFPs across 27 EU nations via official TED API v3. Clean CPV sector filtering, values in EUR, and direct buyer inquiry emails.",
    "version": "1.0",
    "x-build-id": "EmNWKvx44GDc64oNF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_studio~eu-tender-procurement-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_studio-eu-tender-procurement-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/automation_studio~eu-tender-procurement-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_studio-eu-tender-procurement-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/automation_studio~eu-tender-procurement-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_studio-eu-tender-procurement-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": {
          "sectors": {
            "title": "🏛️ Industry / CPV Sector Presets",
            "type": "array",
            "description": "Select one or more major procurement sectors. Maps directly to official EU Common Procurement Vocabulary (CPV) divisions.",
            "items": {
              "type": "string",
              "enum": [
                "ALL",
                "IT_SOFTWARE",
                "DEFENSE_SECURITY",
                "HEALTHCARE_PHARMA",
                "ENERGY_UTILITIES",
                "CONSTRUCTION_WORKS",
                "CONSULTING_LEGAL",
                "TRANSPORT_LOGISTICS"
              ],
              "enumTitles": [
                "🌐 All Sectors (Unrestricted)",
                "💻 IT, Software, Cloud & AI (CPV 72000000, 48000000)",
                "🛡️ Defense, Tactical, Security & Cybersecurity (CPV 35000000)",
                "🏥 Healthcare, Medical Equipment & Pharma (CPV 33000000, 85000000)",
                "⚡ Renewable Energy, Power, Water & Utilities (CPV 09300000, 65000000)",
                "🏗️ Civil Infrastructure, Works & Architecture (CPV 45000000, 71200000)",
                "📊 Management Consulting, Auditing & Legal (CPV 79000000)",
                "🚚 Transport, Fleet Vehicles & Logistics (CPV 60000000, 34000000)"
              ]
            },
            "default": [
              "IT_SOFTWARE",
              "DEFENSE_SECURITY"
            ]
          },
          "customCpvCodes": {
            "title": "🔢 Custom CPV Codes (Optional)",
            "type": "string",
            "description": "Optional comma-separated list of specific 8-digit CPV codes (e.g. `72260000, 35120000, 33111000`). If provided, these are queried alongside the selected sectors."
          },
          "keywords": {
            "title": "🔍 Full-Text Keywords (Optional)",
            "type": "string",
            "description": "Optional keyword or phrase to search within tender titles and descriptions (e.g. `cybersecurity`, `cloud migration`, `ultrasound`, `solar farm`, `AI`)."
          },
          "countries": {
            "title": "🌍 Buyer Countries (EU & EEA)",
            "type": "array",
            "description": "Filter by EU Member State or partner country. Leave empty to include all countries across Europe.",
            "items": {
              "type": "string",
              "enum": [
                "DEU",
                "FRA",
                "ITA",
                "ESP",
                "NLD",
                "POL",
                "BEL",
                "SWE",
                "DNK",
                "AUT",
                "IRL",
                "FIN",
                "NOR",
                "CHE",
                "PRT",
                "CZE",
                "ROU",
                "GRC",
                "HUN"
              ],
              "enumTitles": [
                "🇩🇪 Germany (DEU)",
                "🇫🇷 France (FRA)",
                "🇮🇹 Italy (ITA)",
                "🇪🇸 Spain (ESP)",
                "🇳🇱 Netherlands (NLD)",
                "🇵🇱 Poland (POL)",
                "🇧🇪 Belgium (BEL)",
                "🇸🇪 Sweden (SWE)",
                "🇩🇰 Denmark (DNK)",
                "🇦🇹 Austria (AUT)",
                "🇮🇪 Ireland (IRL)",
                "🇫🇮 Finland (FIN)",
                "🇳🇴 Norway (NOR)",
                "🇨🇭 Switzerland (CHE)",
                "🇵🇹 Portugal (PRT)",
                "🇨🇿 Czech Republic (CZE)",
                "🇷🇴 Romania (ROU)",
                "🇬🇷 Greece (GRC)",
                "🇭🇺 Hungary (HUN)"
              ]
            },
            "default": []
          },
          "noticeTypes": {
            "title": "📋 Notice Types",
            "type": "array",
            "description": "Select types of procurement notices to retrieve. 'Contract Notice' represents live bidding competitions.",
            "items": {
              "type": "string",
              "enum": [
                "cn-standard",
                "pin-only",
                "pin-cfc",
                "can-standard"
              ],
              "enumTitles": [
                "📄 Contract Notice (Open RFP / Active Call for Bids)",
                "🚨 Prior Information Notice (Upcoming Future Tender)",
                "🔔 Call for Competition (Early Qualification)",
                "🏆 Contract Award Notice (Results & Winning Bidders)"
              ]
            },
            "default": [
              "cn-standard",
              "pin-only"
            ]
          },
          "minContractValueEur": {
            "title": "💰 Minimum Contract Value (€ EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Filter out small contracts below this estimated valuation threshold in EUR. Set to 0 to include all tenders.",
            "default": 0
          },
          "daysBack": {
            "title": "📅 Publication Window (Days Back)",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "How many days back from today to search for published notices (1 = today only, 7 = past week, 14 = past two weeks, 30 = past month). Max: 90.",
            "default": 14
          },
          "maxResults": {
            "title": "📊 Max Tenders to Extract",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Maximum number of tender notices to retrieve and store in the dataset per run.",
            "default": 50
          },
          "webhookUrl": {
            "title": "🔔 Webhook Alert URL (Discord / Slack / CRM)",
            "type": "string",
            "description": "Optional Discord, Slack, or webhook URL to receive instant alert cards with tender title, buyer name, value, and deadline."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}