{
  "openapi": "3.0.1",
  "info": {
    "title": "Canada Job Bank Postings (Open Data)",
    "description": "Filter and compare the Government of Canada's monthly Job Bank job postings open data by NOC, NAICS sector, province, city, wage and keyword. Uses the official open data files, no website scraping.",
    "version": "1.0",
    "x-build-id": "fUYztSiNHHBVrpvIA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jetlaunch~canada-job-bank-open-data/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jetlaunch-canada-job-bank-open-data",
        "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/jetlaunch~canada-job-bank-open-data/runs": {
      "post": {
        "operationId": "runs-sync-jetlaunch-canada-job-bank-open-data",
        "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/jetlaunch~canada-job-bank-open-data/run-sync": {
      "post": {
        "operationId": "run-sync-jetlaunch-canada-job-bank-open-data",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "postings",
              "month-over-month"
            ],
            "type": "string",
            "description": "Postings returns normalized job postings. Month over month compares two monthly files (posting counts by NOC and province, wage changes).",
            "default": "postings"
          },
          "month": {
            "title": "Month",
            "pattern": "^(latest|\\d{4}-(0[1-9]|1[0-2]))$",
            "type": "string",
            "description": "latest, or a month as YYYY-MM (for example 2026-09). The files hold postings first advertised in that month.",
            "default": "latest"
          },
          "language": {
            "title": "File language",
            "enum": [
              "en",
              "fr"
            ],
            "type": "string",
            "description": "English or French edition of the file. Category values are returned in English either way; job titles stay in the file's language.",
            "default": "en"
          },
          "nocCodes": {
            "title": "NOC codes",
            "type": "array",
            "description": "5 digit NOC 2021 codes (for example 21231 Software engineers and designers), 4 digit NOC 2016 codes, or a prefix ending in * (2123*). Leave empty for all occupations.",
            "items": {
              "type": "string"
            }
          },
          "provinces": {
            "title": "Provinces and territories",
            "type": "array",
            "description": "Full names (Ontario, British Columbia, Québec) or codes (ON, BC, QC, AB, MB, SK, NS, NB, NL, PE, YT, NT, NU).",
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "City names as written in the file (Toronto, Calgary, Montréal). Accents and capital letters do not matter.",
            "items": {
              "type": "string"
            }
          },
          "naicsCodes": {
            "title": "NAICS sector",
            "type": "array",
            "description": "2 digit NAICS sector codes (72, 62, 23) or words from the sector name (food, health, laundry). The file carries a sector name, not a code. The Actor maps the sector names to 2 digit codes checked against the Statistics Canada NAICS Canada 2017 sector list; subsector names (for example Employment services) have no code and match by words only. Only postings placed directly on Job Bank have a sector.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Match any of these words in the job title, the original job title or the NOC occupation name.",
            "items": {
              "type": "string"
            }
          },
          "minHourlyWage": {
            "title": "Minimum hourly wage (CAD)",
            "minimum": 0,
            "type": "number",
            "description": "Keep postings whose wage range reaches at least this hourly amount. Yearly, monthly, weekly and daily pay is converted to an hourly estimate. Postings without a wage are dropped when a wage filter is set."
          },
          "maxHourlyWage": {
            "title": "Maximum hourly wage (CAD)",
            "minimum": 0,
            "type": "number",
            "description": "Keep postings whose wage range starts at or below this hourly amount."
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "For example Full time, Part time.",
            "items": {
              "type": "string"
            }
          },
          "postingSource": {
            "title": "Posting source",
            "enum": [
              "all",
              "direct",
              "external"
            ],
            "type": "string",
            "description": "Direct postings are placed by employers on Job Bank and carry more fields (sector, education, experience). External postings come from partner job boards.",
            "default": "all"
          },
          "placementAgencies": {
            "title": "Placement agencies",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "Whether to keep postings flagged as placement agency postings.",
            "default": "include"
          },
          "postedFrom": {
            "title": "First posted on or after",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Date as YYYY-MM-DD."
          },
          "postedTo": {
            "title": "First posted on or before",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Date as YYYY-MM-DD."
          },
          "sortBy": {
            "title": "Order of results",
            "enum": [
              "file-order",
              "newest",
              "highest-wage"
            ],
            "type": "string",
            "description": "File order stops reading as soon as enough postings are found, which is fastest. The other orders read the whole file (up to 20000 results).",
            "default": "file-order"
          },
          "maxItems": {
            "title": "Maximum postings",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Postings mode only. Each posting returned is one billable posting-record event.",
            "default": 25
          },
          "compareToMonth": {
            "title": "Compare with month",
            "pattern": "^(previous|\\d{4}-(0[1-9]|1[0-2]))$",
            "type": "string",
            "description": "Month over month mode only. previous means the calendar month before Month, or give YYYY-MM.",
            "default": "previous"
          },
          "maxRows": {
            "title": "Maximum rows per breakdown",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Largest NOC changes to return (by absolute change in postings).",
            "default": 50
          },
          "minPostings": {
            "title": "Minimum postings per NOC row",
            "minimum": 1,
            "type": "integer",
            "description": "Hide NOC rows with fewer postings than this in both months, to avoid noise.",
            "default": 10
          },
          "includeNocProvince": {
            "title": "Add NOC by province rows",
            "type": "boolean",
            "description": "Also return changes for each NOC and province combination.",
            "default": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}