{
  "openapi": "3.0.1",
  "info": {
    "title": "Public Tenders Monitor - EU TED, UK, Germany, France & Spain",
    "description": "Public tenders & contract awards from EU TED, UK, Germany, France & Spain in one feed, plus a market report: top winners, single-bid rate, top buyers. New-only alerts. $5 / 1,000 notices.",
    "version": "1.0",
    "x-build-id": "Nh2YAKF4LumXCi57t"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/signalscope-data~public-tenders-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-signalscope-data-public-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/signalscope-data~public-tenders-monitor/runs": {
      "post": {
        "operationId": "runs-sync-signalscope-data-public-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/signalscope-data~public-tenders-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-signalscope-data-public-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": "Return notices mentioning ANY of these words or phrases (case-insensitive). TED searches the full notice text in any language; UK sources match title and description. Leave empty for all notices.",
            "items": {
              "type": "string"
            }
          },
          "strictKeywordMatch": {
            "title": "Strict keyword match (TED)",
            "type": "boolean",
            "description": "TED full-text search also matches deep inside long notices and annexes. When on, a TED notice is kept only if a keyword appears in its title, CPV description or summary (any language). Turn off for maximum recall.",
            "default": true
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Portals to search (array; several in one run, duplicates removed). 'ted' = EU TED, all EU/EEA above-threshold notices. 'find-a-tender' = every new UK notice. 'germany' = oeffentlichevergabe.de, incl. below-threshold. 'france' = BOAMP, incl. MAPA/below-threshold (use French keywords). 'spain' = PLACSP tenders and awards with winners (use Spanish keywords). National notices also on TED come from TED only. 'contracts-finder' = legacy UK feed, currently empty.",
            "items": {
              "type": "string",
              "enum": [
                "ted",
                "contracts-finder",
                "find-a-tender",
                "germany",
                "france",
                "spain"
              ],
              "enumTitles": [
                "EU TED (Tenders Electronic Daily)",
                "UK Contracts Finder (legacy - feed currently empty)",
                "UK Find a Tender (all UK notices, incl. below threshold)",
                "Germany oeffentlichevergabe.de (incl. below EU threshold)",
                "France BOAMP (incl. below EU threshold / MAPA)",
                "Spain PLACSP (incl. below EU threshold)"
              ]
            },
            "default": [
              "ted",
              "find-a-tender"
            ]
          },
          "noticeTypes": {
            "title": "Notice types",
            "type": "array",
            "description": "Which stages to return: 'tender' = open calls for competition (default), 'planning' = prior information / pipeline notices, 'award' = contract award results. Award rows include winners (company name + country), awardValue, awardCurrency, bidsReceived and awardDate.",
            "items": {
              "type": "string",
              "enum": [
                "tender",
                "planning",
                "award"
              ],
              "enumTitles": [
                "Open tenders (calls for competition)",
                "Planning / prior information",
                "Contract awards"
              ]
            },
            "default": [
              "tender"
            ]
          },
          "winnerNames": {
            "title": "Winner names (competitor tracking)",
            "type": "array",
            "description": "Return only contract awards won by companies whose name contains ANY of these words, e.g. \"Accenture\", \"Capgemini\", \"Sopra Steria\". Track which contracts your competitors (or prospects) win, with value, buyer and bids received. Automatically adds 'award' to the notice types; other stages have no winner.",
            "items": {
              "type": "string"
            }
          },
          "onlyBelowThreshold": {
            "title": "Only below-threshold (smaller) tenders",
            "type": "boolean",
            "description": "Return only notices below the public-procurement thresholds - the smaller contracts that SMEs can realistically win. Works with 'find-a-tender' (UK Procurement Act notices flagged below threshold) 'germany' (national VOB/VgV/UVgO notices) 'france' (BOAMP national and MAPA notices) and 'spain' (PLACSP notices not flagged over the EU threshold). TED is skipped because it only publishes above-threshold notices. Each notice has a 'belowEuThreshold' field either way.",
            "default": false
          },
          "cpvCodes": {
            "title": "CPV code prefixes",
            "type": "array",
            "description": "Common Procurement Vocabulary code prefixes, e.g. \"72\" (IT services), \"48\" (software packages), \"45\" (construction), \"7222\". A notice matches if any of its CPV codes starts with any prefix. Leave empty for all sectors.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries (TED only)",
            "type": "array",
            "description": "Buyer countries for EU TED as ISO codes, 2 or 3 letters, e.g. \"DE\", \"FRA\", \"IE\". Leave empty for all countries. UK sources always return UK notices.",
            "items": {
              "type": "string"
            }
          },
          "minValue": {
            "title": "Minimum estimated value",
            "minimum": 0,
            "type": "integer",
            "description": "Skip notices whose estimated value is below this amount (in the notice's own currency, usually EUR or GBP)."
          },
          "maxValue": {
            "title": "Maximum estimated value",
            "minimum": 0,
            "type": "integer",
            "description": "Skip notices whose estimated value is above this amount (in the notice's own currency)."
          },
          "includeNoValue": {
            "title": "Include notices without a value",
            "type": "boolean",
            "description": "Many notices do not publish an estimated value. When a min/max value is set, keep (true) or drop (false) those notices.",
            "default": true
          },
          "excludeExpired": {
            "title": "Skip notices with a passed deadline",
            "type": "boolean",
            "description": "Drop tenders whose submission deadline is already in the past. Notices without a deadline are kept.",
            "default": true
          },
          "publishedWithinDays": {
            "title": "Published within last N days",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Only notices published in the last N days.",
            "default": 7
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of notices to output in total across all sources (newest first). Also the sample size per source for the market report.",
            "default": 200
          },
          "includeMarketReport": {
            "title": "Add a market report",
            "type": "boolean",
            "description": "Add one 'market-report' row that sums up all matched notices: top buyers, top winners and their share, single-bid rate and median bids per award (competition level), SME and cross-border win share, award vs. estimate, value ranges, days to respond, tenders closing this week, top CPV divisions and plain-English opportunity signals. Tip: select 'award' notice types to get winner and competition stats. Charged once per run.",
            "default": false
          },
          "marketReportOnly": {
            "title": "Market report only (no notice rows)",
            "type": "boolean",
            "description": "Output only the market report row - notices are analysed but not output or charged, so you can raise 'Max results' (e.g. 2,000) for a bigger sample at the cost of one report. 'Only new notices' is ignored in this mode.",
            "default": false
          },
          "onlyNewNotices": {
            "title": "Only new notices since last run",
            "type": "boolean",
            "description": "Remember which notices were already returned and output only new ones. Ideal for scheduled daily tender alerts - you never pay twice for the same notice.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Used with 'Only new notices'. Use a different name for each separate monitor/schedule.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}