{
  "openapi": "3.0.1",
  "info": {
    "title": "EU Defense Tenders & Procurement Awards (TED) → Stock Tickers",
    "description": "EU defense procurement from TED: 3,800+ tender and contract award notices since 2016 (CPV 353xx–357xx), each named winner mapped to its stock ticker via LEI → listed parent → ISIN. Free public viewer + JSON feed, no signup. Callable as an MCP tool by AI agents.",
    "version": "0.1",
    "x-build-id": "7L7A0IYUZnlj6fu9C"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/northlab~eu-defense-contract-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-northlab-eu-defense-contract-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/northlab~eu-defense-contract-monitor/runs": {
      "post": {
        "operationId": "runs-sync-northlab-eu-defense-contract-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/northlab~eu-defense-contract-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-northlab-eu-defense-contract-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": {
          "lookbackDays": {
            "title": "Lookback days",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "How many days back to sync fresh TED award notices on top of the bundled snapshot.",
            "default": 5
          },
          "buyerCountries": {
            "title": "Buyer countries",
            "type": "array",
            "description": "Only return notices where the buyer/contracting authority is in one of these countries. TED uses ISO 3166-1 alpha-3 codes, e.g. DEU, FRA, POL (not DE/FR/PL). Leave empty for all countries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cpvPrefixes": {
            "title": "CPV code prefixes",
            "type": "array",
            "description": "Only return notices whose CPV code starts with one of these prefixes, e.g. \"3531\" for ammunition, \"3521\" for military aircraft, \"3563\" for military communication equipment. Leave empty for all defense CPV codes (353xx–357xx).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "publishedWithinDays": {
            "title": "Published within the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Rolling shorthand for \"Publication date from\": only return notices published in the last N days. Prefilled with 90 so a first test run stays small and cheap — clear it (or raise it) to query the full history back to 2016. Ignored if you set an explicit \"Publication date from\"."
          },
          "dateFrom": {
            "title": "Publication date from",
            "type": "string",
            "description": "Only return notices published on or after this date (YYYY-MM-DD). Overrides \"Published within the last N days\". Leave empty for no lower bound."
          },
          "dateTo": {
            "title": "Publication date to",
            "type": "string",
            "description": "Only return notices published on or before this date (YYYY-MM-DD). Leave empty for no upper bound."
          },
          "minValueEur": {
            "title": "Minimum contract value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return notices with a known EUR value (awarded, or estimated when no award value was published) at or above this threshold. Notices without any EUR value are excluded when this or maxValueEur is set."
          },
          "maxValueEur": {
            "title": "Maximum contract value (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return notices with a known EUR value at or below this threshold. Combine with Minimum contract value to get a value band. Notices without any EUR value are excluded when this or minValueEur is set."
          },
          "buyerKeyword": {
            "title": "Buyer keyword",
            "type": "string",
            "description": "Case-insensitive substring match against the buyer/contracting authority name, e.g. \"Ministry of Defence\" or \"Bundeswehr\"."
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Case-insensitive substring match against the notice title and description, e.g. \"ammunition\" or \"drone\"."
          },
          "excludeKeyword": {
            "title": "Exclude keyword",
            "type": "string",
            "description": "Case-insensitive substring match against the notice title and description — notices containing this are excluded. Useful for filtering out noise, e.g. \"maintenance\" to skip routine service contracts."
          },
          "tickerSymbols": {
            "title": "Contractor stock tickers",
            "type": "array",
            "description": "Only return notices where the winning contractor's stock ticker is one of these, e.g. \"RHM.DE\" (Rheinmetall), \"KOG.OL\" (Kongsberg). Leave empty for all contractors.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "contractorKeyword": {
            "title": "Contractor keyword",
            "type": "string",
            "description": "Case-insensitive substring match against the winning contractor's name, e.g. \"Rheinmetall\" or \"Thales\". Use this to find a company even when you don't know its ticker (or it isn't listed)."
          },
          "contractorCountries": {
            "title": "Contractor countries",
            "type": "array",
            "description": "Only return notices where the winning contractor is based in one of these countries (ISO 3166-1 alpha-3, e.g. DEU, USA, GBR). This is the contractor's country, not the buyer's — use it to see which countries' companies are winning EU defense contracts. Leave empty for all countries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "listingStatus": {
            "title": "Contractor listing status",
            "type": "array",
            "description": "Only return notices whose winning contractor matches one of these listing statuses: \"ticker\" (mapped to a public stock), \"privat/JV\" (private company or joint venture — no public stock, but a real winner, potentially a future IPO/M&A target), \"unmapped\" (a winner exists but isn't mapped to a ticker yet), \"no-winner\" (notice has no award decision yet). Prefilled with the two investable statuses; add \"unmapped\"/\"no-winner\" or clear the field for everything.",
            "items": {
              "type": "string",
              "enum": [
                "ticker",
                "privat/JV",
                "unmapped",
                "no-winner"
              ]
            },
            "default": []
          },
          "onlyWithTicker": {
            "title": "Only notices with a listed contractor",
            "type": "boolean",
            "description": "Shortcut for Contractor listing status = [\"ticker\"]. Only return notices where the winning contractor is mapped to a public stock ticker.",
            "default": false
          },
          "minSubmissionsCount": {
            "title": "Minimum number of bids",
            "minimum": 0,
            "type": "integer",
            "description": "Only return notices with at least this many submitted bids. A high bid count signals a competitive award; combine with the maximum below to isolate low-competition contracts (e.g. sole-bidder awards), a useful diligence signal. Notices without a published bid count are excluded when this or the maximum is set."
          },
          "maxSubmissionsCount": {
            "title": "Maximum number of bids",
            "minimum": 0,
            "type": "integer",
            "description": "Only return notices with at most this many submitted bids, e.g. 1 to find sole-bidder awards. Notices without a published bid count are excluded when this or the minimum is set."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}