{
  "openapi": "3.0.1",
  "info": {
    "title": "EU Tenders Scraper (TED) – Public Procurement, Awards & Winners",
    "description": "Scrape EU public procurement from TED: open tenders, contract awards with winners, prices and number of bids, buyer intelligence (incumbents, past winners), tender-to-award linking, EUR values, monitoring.",
    "version": "1.0",
    "x-build-id": "UQam9NnosbjmIoTDv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/flarewow~eu-tenders-ted-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-flarewow-eu-tenders-ted-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/flarewow~eu-tenders-ted-scraper/runs": {
      "post": {
        "operationId": "runs-sync-flarewow-eu-tenders-ted-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/flarewow~eu-tenders-ted-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-flarewow-eu-tenders-ted-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",
            "type": "array",
            "description": "Full-text search in title, description and lots, in any EU language – e.g. `cybersecurity`, `cleaning services`, `Reinigung`, `oprogramowanie`. Tip: add the word in the buyer's language too, or use CPV codes below for language-independent search.",
            "items": {
              "type": "string"
            }
          },
          "keywordMode": {
            "title": "Keyword matching",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "Match notices containing any or all of the keywords.",
            "default": "any"
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Skip notices containing these words, e.g. `window cleaning`.",
            "items": {
              "type": "string"
            }
          },
          "noticeStages": {
            "title": "Notice types",
            "type": "array",
            "description": "Tenders = open opportunities you can bid on. Awards = who won and for how much. Planning = early warning months before the tender.",
            "items": {
              "type": "string",
              "enum": [
                "competition",
                "result",
                "planning",
                "modification",
                "direct_award",
                "consultation"
              ],
              "enumTitles": [
                "Tenders (contract notices – bid now)",
                "Awards (winners & prices)",
                "Planning (prior information notices)",
                "Contract modifications",
                "Direct awards (VEAT)",
                "Market consultations"
              ]
            },
            "default": [
              "competition"
            ]
          },
          "countries": {
            "title": "🌍 Buyer countries",
            "type": "array",
            "description": "Countries of the public buyer. Empty = all countries publishing to TED (EU, EEA, UK, candidate 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",
                "me",
                "rs",
                "al",
                "ba",
                "md",
                "ua",
                "ge",
                "tr"
              ],
              "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",
                "North Macedonia",
                "Montenegro",
                "Serbia",
                "Albania",
                "Bosnia and Herzegovina",
                "Moldova",
                "Ukraine",
                "Georgia",
                "Türkiye"
              ]
            }
          },
          "placeOfPerformance": {
            "title": "Region (NUTS code)",
            "type": "array",
            "description": "Place of performance as NUTS code or prefix – e.g. `PL9` (Masovia), `DE21` (Upper Bavaria), `FR1` (Île-de-France).",
            "items": {
              "type": "string"
            }
          },
          "cpvCodes": {
            "title": "🏷️ CPV codes (sectors)",
            "type": "array",
            "description": "CPV codes or prefixes – `72000000` (IT services) matches all 72… codes, `45` = construction, `33` = medical equipment, `79` = business services, `90` = cleaning & environment. Language-independent and the most precise filter.",
            "items": {
              "type": "string"
            }
          },
          "contractTypes": {
            "title": "Contract type",
            "type": "array",
            "description": "Works, supplies or services.",
            "items": {
              "type": "string",
              "enum": [
                "works",
                "supplies",
                "services"
              ],
              "enumTitles": [
                "Works",
                "Supplies",
                "Services"
              ]
            }
          },
          "procedureTypes": {
            "title": "Procedure",
            "type": "array",
            "description": "Procurement procedure.",
            "items": {
              "type": "string",
              "enum": [
                "open",
                "restricted",
                "neg-w-call",
                "neg-wo-call",
                "comp-dial",
                "innovation",
                "oth-single",
                "oth-mult"
              ],
              "enumTitles": [
                "Open",
                "Restricted",
                "Negotiated with call",
                "Negotiated without call",
                "Competitive dialogue",
                "Innovation partnership",
                "Other single-stage",
                "Other multi-stage"
              ]
            }
          },
          "minValue": {
            "title": "Min. estimated value",
            "minimum": 0,
            "type": "integer",
            "description": "Only notices with an estimated value at least this high (in the notice currency, usually EUR). Notices without a published value are excluded when set."
          },
          "maxValue": {
            "title": "Max. estimated value",
            "minimum": 0,
            "type": "integer",
            "description": "Only notices with an estimated value up to this amount."
          },
          "euFundedOnly": {
            "title": "Only EU-funded",
            "type": "boolean",
            "description": "Only procurements financed by EU funds.",
            "default": false
          },
          "smeSuitableOnly": {
            "title": "Only suitable for SMEs",
            "type": "boolean",
            "description": "Only notices the buyer marked as suitable for small and medium-sized enterprises.",
            "default": false
          },
          "publishedWithin": {
            "title": "📅 Published within",
            "enum": [
              "24h",
              "3d",
              "week",
              "2weeks",
              "month",
              "3months",
              "6months",
              "year",
              "any"
            ],
            "type": "string",
            "description": "Publication date window. Ignored when you set a date below.",
            "default": "week"
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Exact start date (YYYY-MM-DD)."
          },
          "publishedTo": {
            "title": "Published to",
            "type": "string",
            "description": "Exact end date (YYYY-MM-DD)."
          },
          "onlyOpen": {
            "title": "Only open tenders (deadline not passed)",
            "type": "boolean",
            "description": "Only tenders you can still bid on.",
            "default": false
          },
          "deadlineWithinDays": {
            "title": "Deadline within (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Only tenders whose submission deadline is within the next N days – e.g. 14."
          },
          "buyerNames": {
            "title": "🏛️ Buyer names",
            "type": "array",
            "description": "Track specific contracting authorities, e.g. `Deutsche Bahn`, `Zakład Ubezpieczeń Społecznych`, `European Commission`.",
            "items": {
              "type": "string"
            }
          },
          "winnerNames": {
            "title": "Winner / competitor names",
            "type": "array",
            "description": "Awards won by these companies – competitor tracking, e.g. `Atos`, `Siemens`, `Asseco`. Use with *Awards*.",
            "items": {
              "type": "string"
            }
          },
          "winnerIds": {
            "title": "Winner IDs (VAT / national ID)",
            "type": "array",
            "description": "Exact company identifiers as published in TED, e.g. `DE145374190`, `5223105508`.",
            "items": {
              "type": "string"
            }
          },
          "includeBuyerHistory": {
            "title": "🧠 Buyer intelligence: who won this buyer's previous contracts",
            "type": "boolean",
            "description": "For every tender: the buyer's past awards in the same sector – likely incumbent, top winners with values, average number of bids (competition level), median contract value and the last 5 awards. Charged per enriched tender.",
            "default": false
          },
          "buyerHistoryYears": {
            "title": "Buyer history period (years)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How far back to look for the buyer's previous awards.",
            "default": 3
          },
          "linkProcedure": {
            "title": "Link tender ↔ award (procedure lifecycle)",
            "type": "boolean",
            "description": "Tenders get status (open / closed / awarded) and the award result once published; awards get the original tender, estimate and savings vs. estimate. Free.",
            "default": true
          },
          "aiEnrichment": {
            "title": "🤖 AI analysis: translation, summary, requirements",
            "type": "boolean",
            "description": "For every notice an AI translates the title, description and lots into your language, writes a short summary, extracts key requirements (references, certificates, deposits) and adds topic tags. With a company profile it also scores how well each tender fits you (0–100). Charged per analysed notice.",
            "default": false
          },
          "aiLanguage": {
            "title": "AI language",
            "enum": [
              "en",
              "de",
              "fr",
              "pl",
              "es",
              "it",
              "nl",
              "pt",
              "cs",
              "sv",
              "da",
              "fi",
              "ro",
              "hu",
              "el",
              "bg",
              "hr",
              "sk",
              "sl",
              "et",
              "lv",
              "lt",
              "uk",
              "no",
              "tr"
            ],
            "type": "string",
            "description": "Language for the AI translation and summary.",
            "default": "en"
          },
          "companyProfile": {
            "title": "Company profile (for AI relevance score)",
            "type": "string",
            "description": "Describe what your company does, e.g. 'IT company: Microsoft 365 and Azure migrations, helpdesk outsourcing, max contract €2M, Poland and Germany'. The AI scores every tender 0–100 for fit – sort by ai.relevanceScore."
          },
          "outputLanguage": {
            "title": "Output language",
            "enum": [
              "en",
              "de",
              "fr",
              "pl",
              "es",
              "it",
              "nl",
              "pt",
              "cs",
              "sv",
              "da",
              "fi",
              "ro",
              "hu",
              "el",
              "bg",
              "hr",
              "sk",
              "sl",
              "et",
              "lv",
              "lt"
            ],
            "type": "string",
            "description": "Language for the notice title with country and CPV label. Original title and description stay in the notice language.",
            "default": "en"
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Include the procurement description text.",
            "default": true
          },
          "splitLots": {
            "title": "One row per lot",
            "type": "boolean",
            "description": "Split multi-lot tenders into one row per lot (lot ID, title, value) – handy when you bid on single lots. Each row counts as one notice.",
            "default": false
          },
          "onlyNew": {
            "title": "🔔 Only new notices (monitoring)",
            "type": "boolean",
            "description": "Schedule the actor (e.g. daily) – each run returns only notices not delivered before, and you are never charged twice for the same notice.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name for this monitor, e.g. `it-poland`. Use different IDs for different searches."
          },
          "maxResults": {
            "title": "Max. notices",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum notices to return. 0 or empty = all matching.",
            "default": 200
          },
          "noticeIds": {
            "title": "Notice IDs or URLs",
            "type": "array",
            "description": "Fetch specific notices, e.g. `718509-2026` or a ted.europa.eu link. Other search filters are ignored.",
            "items": {
              "type": "string"
            }
          },
          "expertQuery": {
            "title": "Expert query (advanced)",
            "type": "string",
            "description": "Raw TED expert-search query added with AND, e.g. `buyer-legal-type=cga`. See TED's expert search help."
          },
          "aiModel": {
            "title": "AI model (advanced)",
            "type": "string",
            "description": "OpenRouter model ID used for AI analysis. Leave the default unless you know you need another model.",
            "default": "anthropic/claude-haiku-5.5"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}