{
  "openapi": "3.0.1",
  "info": {
    "title": "Canadian Government Tender Monitor",
    "description": "Track Government of Canada tender opportunities matched to your business. Buyer contacts, closing dates, GSIN/UNSPSC filtering and relevance scoring, from official open data. Not affiliated with the Government of Canada.",
    "version": "0.0",
    "x-build-id": "JFRdEAHQuttyN5UHh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jonmcconnell~canadian-government-tender-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jonmcconnell-canadian-government-tender-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/jonmcconnell~canadian-government-tender-monitor/runs": {
      "post": {
        "operationId": "runs-sync-jonmcconnell-canadian-government-tender-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/jonmcconnell~canadian-government-tender-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-jonmcconnell-canadian-government-tender-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": {
          "feed": {
            "title": "Which notices",
            "enum": [
              "open",
              "new"
            ],
            "type": "string",
            "description": "\"All currently open\" gives every tender accepting bids right now — best for a first look. \"Published today\" is the incremental feed, refreshed every 2 hours — best for a scheduled daily run.",
            "default": "open"
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Words describing what you deliver, e.g. 'software', 'janitorial', 'engineering'. A match in the title scores higher than one in the description. Leave empty to get everything that passes your other filters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "codes": {
            "title": "GSIN or UNSPSC code prefixes",
            "type": "array",
            "description": "Canada classifies tenders with GSIN (e.g. D302) and UNSPSC (e.g. 81111500) codes. Prefixes work: 'D3' catches all D3xx categories, '8111' all 8111xxxx. Browse codes at canadabuys.canada.ca.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Procurement categories",
            "type": "array",
            "description": "Restrict to broad categories. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "CNST",
                "GD",
                "SRV",
                "SRVTGD"
              ],
              "enumTitles": [
                "Construction",
                "Goods",
                "Services",
                "Services related to goods"
              ]
            },
            "default": []
          },
          "regionContains": {
            "title": "Region filter",
            "type": "string",
            "description": "Only return notices whose delivery region, opportunity region, or buying department's own province/city mentions this text, e.g. 'Ontario', 'Alberta', 'Ottawa'. Case-insensitive."
          },
          "openOnly": {
            "title": "Open tenders only",
            "type": "boolean",
            "description": "Exclude notices the government has marked cancelled or expired. Recognises both English and French status wording.",
            "default": true
          },
          "excludeExpired": {
            "title": "Hide notices past their closing date",
            "type": "boolean",
            "description": "The source data marks some notices \"Open\" long after their closing date has passed — occasionally by more than a year. Leave this on to see only opportunities you can still bid on. Turn it off for historical research.",
            "default": true
          },
          "excludeAmendments": {
            "title": "Exclude amended notices",
            "type": "boolean",
            "description": "Skip notices that have been amended at least once. Useful if you only want brand-new opportunities.",
            "default": false
          },
          "minRelevanceScore": {
            "title": "Minimum relevance score (0-100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "How well a notice must match your keywords or codes to be returned. Leave at 1 to return only genuine matches. Set to 0 to return everything regardless of match (useful for browsing). Raise toward 40 once your keywords are tuned. If you set no keywords or codes at all, every notice scores 100 and this has no effect.",
            "default": 1
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on notices returned. Also caps what you are charged, since you are only charged for notices actually delivered.",
            "default": 200
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}