{
  "openapi": "3.0.1",
  "info": {
    "title": "TED Europa Scraper: EU Public Procurement Tenders",
    "description": "Scrape EU public procurement tenders from TED (Tenders Electronic Daily). 28 EU countries + UK + EEA. Filter by keywords, country, CPV code, deadline, value, buyer. Get buyer, deadline, contract value, winner, document URLs. For procurement intelligence, B2B public-sector sales. $5/1K tenders.",
    "version": "1.0",
    "x-build-id": "kCXUeNhkva5jrsNzr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dltik~ted-europa-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dltik-ted-europa-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/dltik~ted-europa-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dltik-ted-europa-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/dltik~ted-europa-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dltik-ted-europa-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": "string",
            "description": "Free-text search across all notice fields (title, description, buyer). Example: 'machine learning', 'cloud infrastructure', 'cybersecurity'. Supports AND/OR/NOT."
          },
          "countries": {
            "title": "Countries (ISO3)",
            "type": "array",
            "description": "Buyer country (ISO 3166-1 alpha-3). FRA, DEU, ESP, ITA, NLD, BEL, POL, SWE, AUT, FIN, GBR... Multiple = OR.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "cpvCodes": {
            "title": "CPV codes",
            "type": "array",
            "description": "Common Procurement Vocabulary codes. Examples: '72000000' (IT services), '45000000' (construction), '85000000' (health), '79000000' (business services), '60000000' (transport). See cpv.eu.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Subset of: 'cn-standard' (contract notice), 'can-standard' (contract award), 'pin-only' (prior info), 'pin-buyer' (call for competition), 'cn-social' (social services), 'cn-desg' (utilities). Multiple = OR.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "procedureTypes": {
            "title": "Procedure types",
            "type": "array",
            "description": "Subset of: 'open', 'restricted', 'comp-dial' (competitive dialogue), 'innovation' (innovation partnership), 'neg-w-call', 'neg-wo-call'. Multiple = OR.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "contractNatures": {
            "title": "Contract natures",
            "type": "array",
            "description": "Subset of: 'works' (construction), 'services', 'supplies' (goods).",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "publishedAfter": {
            "title": "Published after",
            "type": "string",
            "description": "ISO date (YYYY-MM-DD) — only notices published on or after this date. Tip: 'today-30' for last 30 days."
          },
          "publishedBefore": {
            "title": "Published before",
            "type": "string",
            "description": "ISO date (YYYY-MM-DD)."
          },
          "buyerName": {
            "title": "Buyer name (partial)",
            "type": "string",
            "description": "Partial buyer name. Example: 'Ministère' to find French ministries, 'Bundesamt' for German federal agencies."
          },
          "minValue": {
            "title": "Minimum value (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum tender value in EUR. Use to filter for big-money contracts only."
          },
          "query": {
            "title": "Raw expert query (advanced)",
            "type": "string",
            "description": "Override all friendly inputs with a TED expert query. Example: 'FT=\"AI\" AND CY=DEU AND PD>=20260101 AND TV>=1000000'. See docs.ted.europa.eu/api/SearchAPIQueryLanguage.html."
          },
          "preferredLanguages": {
            "title": "Preferred output languages",
            "type": "array",
            "description": "When notices have multilingual fields (title, description, buyer name), return this language first. ISO 639-3 codes: eng, fra, deu, spa, ita, por, nld...",
            "items": {
              "type": "string"
            },
            "default": [
              "eng",
              "fra"
            ]
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum tenders to return. Use specific filters for huge searches (TED has millions of notices). Aliases accepted: 'limit', 'max'. Each result charged at the per-event price — start small to validate output.",
            "default": 20
          },
          "analyzeTenders": {
            "title": "AI analysis (premium)",
            "type": "boolean",
            "description": "Enrich each tender with an AI 'ai' object: a plain-language summary, the concrete deliverables, and a recommended action (bid / watch / skip). Add 'Business profile' below to also get a 0-100 relevance score per tender - turns a long EU-wide result list into a ranked shortlist. Requires a paid Apify plan; billed as a separate 'tender-analyzed' event. If not on a paid plan the scrape still runs without analysis.",
            "default": false
          },
          "businessProfile": {
            "title": "Business profile (for AI relevance scoring)",
            "type": "string",
            "description": "One or two sentences describing what your company sells or does, e.g. 'Cloud infrastructure and DevOps consultancy, 40 staff, serving the DACH region' or 'Manufacturer of medical imaging equipment'. When set (and AI analysis is on), each tender gets a relevance_score (0-100) and a one-line reason for how well it fits. Leave empty to get summaries only."
          },
          "proxyConfig": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "TED is open and rarely needs proxy. Only useful for very large runs.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}