{
  "openapi": "3.0.1",
  "info": {
    "title": "SchoolSpring Scraper",
    "description": "Scrape SchoolSpring - 110K+ teaching and education jobs in the US. Search by keyword, location, category, grade level and job type, or fetch full job details (pay, contact info, requirements, coordinates) by ID or URL.",
    "version": "1.0",
    "x-build-id": "cFHoPCDNk0g42cIAk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~schoolspring-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-schoolspring-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~schoolspring-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-schoolspring-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~schoolspring-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-schoolspring-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",
              "byId",
              "byUrl"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text keyword, e.g. `math teacher` (mode=search).",
            "default": ""
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Location filter, e.g. `Ohio`, `New York`, `Chicago` (mode=search)."
          },
          "category": {
            "title": "Job category",
            "enum": [
              "",
              "8",
              "10",
              "11",
              "12",
              "13",
              "14",
              "15",
              "16",
              "17",
              "18",
              "19",
              "20",
              "21",
              "22",
              "23",
              "24",
              "25",
              "26",
              "27",
              "28",
              "29",
              "31",
              "32",
              "42",
              "43",
              "44",
              "45",
              "46",
              "47",
              "48",
              "49",
              "50",
              "51",
              "52",
              "53",
              "54",
              "55",
              "56",
              "57",
              "58",
              "59",
              "60",
              "61",
              "62",
              "63",
              "64",
              "65",
              "66",
              "67",
              "68",
              "69",
              "70",
              "71",
              "72",
              "73",
              "75",
              "76",
              "77",
              "78",
              "79",
              "80",
              "81",
              "82",
              "83",
              "84",
              "85",
              "86",
              "87",
              "88",
              "89",
              "90",
              "91",
              "92",
              "93",
              "94",
              "95",
              "96",
              "97",
              "98",
              "99",
              "100",
              "101",
              "102",
              "103",
              "104",
              "105",
              "106",
              "107",
              "108",
              "109",
              "110",
              "111",
              "112",
              "113",
              "114",
              "115",
              "116",
              "117",
              "118",
              "119",
              "120",
              "121",
              "122",
              "123",
              "124",
              "125",
              "126",
              "127",
              "128",
              "129",
              "130",
              "131",
              "132",
              "133",
              "134",
              "135",
              "136",
              "137",
              "138",
              "139",
              "140",
              "141",
              "142",
              "144",
              "145",
              "146",
              "147",
              "148",
              "149",
              "150",
              "151",
              "152",
              "153",
              "154",
              "155",
              "156",
              "157",
              "158",
              "159",
              "160",
              "161",
              "163",
              "164",
              "165",
              "166",
              "167",
              "168",
              "169",
              "170",
              "171",
              "172",
              "173",
              "174",
              "175",
              "176",
              "177",
              "178",
              "179",
              "184",
              "185",
              "186",
              "187",
              "188",
              "189",
              "190",
              "191",
              "192",
              "193",
              "194",
              "195",
              "197",
              "198",
              "199",
              "200",
              "201",
              "202",
              "203",
              "204",
              "205",
              "206",
              "207",
              "208",
              "209",
              "210",
              "211",
              "212",
              "213",
              "214",
              "215",
              "216",
              "217",
              "218",
              "219",
              "220",
              "221",
              "222",
              "223",
              "224",
              "225",
              "226",
              "227",
              "228",
              "229",
              "230",
              "231",
              "232",
              "281",
              "282",
              "283",
              "284",
              "285",
              "286",
              "287",
              "288",
              "289",
              "290",
              "291",
              "292",
              "293",
              "294",
              "295",
              "296",
              "297",
              "298",
              "299",
              "300",
              "301",
              "302",
              "303",
              "304",
              "305",
              "306",
              "307",
              "308",
              "309",
              "310",
              "311",
              "312",
              "313"
            ],
            "type": "string",
            "description": "Job category dropdown. Uses SchoolSpring's own category taxonomy (mode=search).",
            "default": ""
          },
          "categoryId": {
            "title": "Category ID (advanced)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Numeric category ID override (mode=search). Takes precedence over `category` if both given. Find IDs via the SchoolSpring category API."
          },
          "organizationName": {
            "title": "Employer organization name",
            "type": "string",
            "description": "Search jobs posted by a specific employer organization, e.g. `New Albany Plain Local` (mode=search). Resolved against SchoolSpring's organization directory."
          },
          "gradeLevel": {
            "title": "Grade level",
            "enum": [
              "",
              "3",
              "5",
              "10",
              "15",
              "20",
              "25"
            ],
            "type": "string",
            "description": "Grade level filter (mode=search).",
            "default": ""
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "",
              "0",
              "1",
              "2",
              "20",
              "40",
              "41",
              "42"
            ],
            "type": "string",
            "description": "Employment type filter (mode=search).",
            "default": ""
          },
          "sortDateAscending": {
            "title": "Sort by date (oldest first)",
            "type": "boolean",
            "description": "When false (default), newest jobs first. When true, oldest first (mode=search).",
            "default": false
          },
          "jobIds": {
            "title": "Job IDs (mode=byId)",
            "type": "array",
            "description": "SchoolSpring job IDs, e.g. `5864716`.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Job URLs (mode=byUrl)",
            "type": "array",
            "description": "Job detail URLs, e.g. `https://www.schoolspring.com/jobdetail?jobId=5864716`.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL",
                  "description": "Page URL to scrape."
                }
              }
            }
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only emit jobs posted within this many days."
          },
          "containsKeyword": {
            "title": "Keyword in title/employer",
            "type": "string",
            "description": "Only emit jobs whose title, employer or location contains this text (case-insensitive)."
          },
          "locationKeyword": {
            "title": "Location keyword",
            "type": "string",
            "description": "Only emit jobs whose location text contains this (case-insensitive)."
          },
          "minPay": {
            "title": "Min annual pay (USD)",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only emit jobs whose advertised minimum pay is at least this (detail mode)."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on emitted records.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}