{
  "openapi": "3.0.1",
  "info": {
    "title": "EdJoin Scraper",
    "description": "Scrape K-12 education job postings from EdJoin.org - California's largest education jobs board - search by keyword, category, job type, employment type, or fetch exact postings by ID/URL.",
    "version": "1.0",
    "x-build-id": "aEJEr5mEfzRdarvgd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~edjoin-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-edjoin-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/crawlerbros~edjoin-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-edjoin-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/crawlerbros~edjoin-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-edjoin-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "byPostingIds",
              "byUrls"
            ],
            "type": "string",
            "description": "search = keyword/filter job search (default). byPostingIds = look up exact postings by numeric ID. byUrls = fetch exact postings by URL.",
            "default": "search"
          },
          "keywords": {
            "title": "Keywords (mode=search)",
            "type": "string",
            "description": "Free-text search query — job title or keyword (e.g. \"teacher\", \"custodian\", \"school psychologist\"). Leave empty to browse all current postings."
          },
          "category": {
            "title": "Job category (mode=search)",
            "enum": [
              "0",
              "1",
              "2",
              "3",
              "4"
            ],
            "type": "string",
            "description": "Filter by top-level job category.",
            "default": "0"
          },
          "jobTypeIds": {
            "title": "Job type (mode=search)",
            "type": "array",
            "description": "Filter by specific job type/role. Leave empty for all job types. Note: a few labels repeat across categories (e.g. \"Coach\") and are disambiguated with their internal ID.",
            "items": {
              "type": "string",
              "enum": [
                "2",
                "3",
                "6",
                "55",
                "10",
                "8",
                "5",
                "48",
                "64",
                "1",
                "56",
                "4",
                "46",
                "7",
                "63",
                "11",
                "9",
                "47",
                "17",
                "16",
                "57",
                "19",
                "20",
                "18",
                "59",
                "65",
                "49",
                "32",
                "13",
                "37",
                "38",
                "35",
                "40",
                "53",
                "68",
                "67",
                "66",
                "51",
                "41",
                "36",
                "39",
                "15",
                "14",
                "52",
                "12",
                "22",
                "33",
                "34",
                "26",
                "24",
                "28",
                "27",
                "25",
                "62",
                "58",
                "31",
                "30",
                "50",
                "23",
                "29",
                "42",
                "45",
                "54",
                "43",
                "44",
                "21"
              ],
              "enumTitles": [
                "Teacher 1-3",
                "Teacher 4-6",
                "Teacher Adult Education",
                "Teacher - Children's Center",
                "Teacher - Court/Community/Alt",
                "Teacher - Head Start",
                "Teacher - High School",
                "Teacher - K-6",
                "Teacher - K-8",
                "Teacher - Kindergarten",
                "Teacher - Library Media",
                "Teacher - Middle Grades",
                "Teacher - Middle/High",
                "Teacher - Other",
                "Teacher - Pre K",
                "Teacher - ROP",
                "Teacher - Special Education",
                "Coach (#47)",
                "Coordinator",
                "Counselor",
                "Language, Hearing and Speech (#57)",
                "Nurses/Health Services",
                "Other Certificated",
                "Program Specialist",
                "Recruitment Event Registration",
                "School Psychologist",
                "Substitute Teacher (#49)",
                "Assistant/Vice Principal",
                "Assistant/Deputy/Associate Supt. (#13)",
                "Elementary School Principal",
                "Elementary School Vice Principal",
                "High School Principal",
                "High School Vice Principal",
                "Management-Other (#53)",
                "Management - Adult School Director",
                "Management - Adult School Principal",
                "Management - Adult School Vice Principal",
                "Manager, Director Level",
                "Manager, Supervisor Level",
                "Middle School Principal",
                "Middle School Vice Principal",
                "Other Manager/Supervisor (#15)",
                "Other Principal/Site Administrator",
                "Principal/Superintendent",
                "Superintendent",
                "Clerical/Secretarial Staff/Office Tech",
                "Coach (#33)",
                "Community Development",
                "Custodial/Facilities/Maintenance",
                "Financial/Accounting/Business Staff",
                "Food Service Staff",
                "Health Service Staff",
                "Information Tech/Computer Svcs",
                "Instructor",
                "Language, Hearing and Speech (#58)",
                "Librarian",
                "Other Classified",
                "Substitute Teacher (#50)",
                "Teacher Assistant/Aide/Paraprof",
                "Transportation Staff",
                "Assistant/Deputy/Associate Supt. (#42)",
                "Confidential Employee",
                "Management-Other (#54)",
                "Manager Director Level",
                "Manager Supervisor Level",
                "Other Manager/Supervisor (#21)"
              ]
            },
            "default": []
          },
          "employmentType": {
            "title": "Employment type (mode=search)",
            "enum": [
              "",
              "Full",
              "Part"
            ],
            "type": "string",
            "description": "Filter by full-time / part-time.",
            "default": ""
          },
          "districtId": {
            "title": "District ID (mode=search, optional)",
            "minimum": 1,
            "type": "integer",
            "description": "Filter to postings from one specific school district/employer, by its numeric EdJoin district ID. Leave empty for all districts."
          },
          "states": {
            "title": "State / province (mode=search, optional)",
            "type": "array",
            "description": "Filter by employer's state/province (matched against the posting's own listed state). EdJoin postings are overwhelmingly California-based; other states/provinces occasionally appear. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Alabama",
                "Alaska",
                "Alberta",
                "American Samoa",
                "Arizona",
                "Arkansas",
                "British Columbia",
                "California",
                "Colorado",
                "Connecticut",
                "Delaware",
                "District of Columbia",
                "Federated States of Micronesia",
                "Florida",
                "Georgia",
                "Guam",
                "Hawaii",
                "Idaho",
                "Illinois",
                "Indiana",
                "Iowa",
                "Kansas",
                "Kentucky",
                "Louisiana",
                "Maine",
                "Manitoba",
                "Marshall Islands",
                "Maryland",
                "Massachusetts",
                "Michigan",
                "Minnesota",
                "Mississippi",
                "Missouri",
                "Montana",
                "Nebraska",
                "Nevada",
                "New Brunswick",
                "New Hampshire",
                "New Jersey",
                "New Mexico",
                "New York",
                "Newfoundland",
                "North Carolina",
                "North Dakota",
                "Northern Mariana Islands",
                "Northwest Territories",
                "Nova Scotia",
                "Nunavut",
                "Ohio",
                "Oklahoma",
                "Ontario",
                "Oregon",
                "Palau",
                "Pennsylvania",
                "Prince Edward Island",
                "Puerto Rico",
                "Quebec",
                "Rhode Island",
                "Saskatchewan",
                "South Carolina",
                "South Dakota",
                "Tennessee",
                "Texas",
                "Utah",
                "Vermont",
                "Virginia",
                "U.S. Virgin Islands",
                "Washington",
                "West Virginia",
                "Wisconsin",
                "Wyoming",
                "Yukon Territory",
                "US Federal"
              ]
            },
            "default": []
          },
          "counties": {
            "title": "County (mode=search, optional)",
            "type": "array",
            "description": "Filter by California county (matched against the posting's own listed county). Leave empty for all counties.",
            "items": {
              "type": "string",
              "enum": [
                "Alameda",
                "Alpine",
                "Amador",
                "Butte",
                "Calaveras",
                "Colusa",
                "Contra Costa",
                "Del Norte",
                "El Dorado",
                "Fresno",
                "Glenn",
                "Humboldt",
                "Imperial",
                "Inyo",
                "Kern",
                "Kings",
                "Lake",
                "Lassen",
                "Los Angeles",
                "Madera",
                "Marin",
                "Mariposa",
                "Mendocino",
                "Merced",
                "Modoc",
                "Mono",
                "Monterey",
                "Napa",
                "Nevada",
                "Orange",
                "Placer",
                "Plumas",
                "Riverside",
                "Sacramento",
                "San Benito",
                "San Bernardino",
                "San Diego",
                "San Francisco",
                "San Joaquin",
                "San Luis Obispo",
                "San Mateo",
                "Santa Barbara",
                "Santa Clara",
                "Santa Cruz",
                "Shasta",
                "Sierra",
                "Siskiyou",
                "Solano",
                "Sonoma",
                "Stanislaus",
                "Sutter",
                "Tehama",
                "Trinity",
                "Tulare",
                "Tuolumne",
                "Ventura",
                "Yolo",
                "Yuba"
              ]
            },
            "default": []
          },
          "onlineAppsOnly": {
            "title": "Online applications only (mode=search)",
            "type": "boolean",
            "description": "Only include postings that accept online applications through EdJoin.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within (mode=search)",
            "enum": [
              "0",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only include postings created within this many days.",
            "default": "0"
          },
          "sortBy": {
            "title": "Sort by (mode=search)",
            "enum": [
              "postingDate",
              "positionTitle",
              "districtName"
            ],
            "type": "string",
            "description": "Order of search results.",
            "default": "postingDate"
          },
          "sortOrder": {
            "title": "Sort order (mode=search)",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "Ascending or descending order for the chosen sort field.",
            "default": "desc"
          },
          "postingIds": {
            "title": "Posting IDs (mode=byPostingIds)",
            "type": "array",
            "description": "Exact numeric EdJoin posting IDs to fetch (found in the job URL, e.g. 2260175).",
            "default": []
          },
          "startUrls": {
            "title": "Posting URLs (mode=byUrls)",
            "type": "array",
            "description": "Exact EdJoin job posting page URLs to fetch (e.g. https://www.edjoin.org/Home/JobPosting/2260175).",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "fetchFullDetails": {
            "title": "Fetch full posting details",
            "type": "boolean",
            "description": "When enabled (mode=search), fetches each posting's detail page (job summary, requirements/qualifications, required documents, contact info, number of openings, length of work year, employer description/logo) in addition to the search-result summary. Adds one extra request per job. Always enabled for byPostingIds/byUrls modes.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Maximum number of job postings to return.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}