{
  "openapi": "3.0.1",
  "info": {
    "title": "Handshake Jobs Scraper: Job & Internship Listings",
    "description": "Scrape public Handshake job and internship listings by keyword, location, role, employer, employment type, workplace status, date posted, and compensation. Export titles, employers, salaries, deadlines, and application links. No login required.",
    "version": "1.0",
    "x-build-id": "hmZJyq9CNIGTxxTL9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~handshake-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-handshake-jobs-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/getascraper~handshake-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-handshake-jobs-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/getascraper~handshake-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-handshake-jobs-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",
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Optional free-text keywords matched against job title and description (case-insensitive). Leave empty to browse without a keyword filter.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "roles": {
            "title": "Role Categories",
            "maxItems": 10,
            "type": "array",
            "description": "Handshake role-category slugs (e.g. \"accounting\", \"software-engineering\"). Each maps to a public /find-jobs/role/<slug>/ page. Up to 10 roles are queried.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "locations": {
            "title": "Locations",
            "maxItems": 10,
            "type": "array",
            "description": "City-state slugs (e.g. \"new-york-ny\", \"austin-tx\") or \"remote\". Each maps to a public /find-jobs/<location>/ page. Up to 10 locations are queried.",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "employerNames": {
            "title": "Employer Names",
            "type": "array",
            "description": "Keep only jobs whose employer name contains one of these strings (case-insensitive).",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "default": []
          },
          "employmentTypes": {
            "title": "Employment Type",
            "type": "array",
            "description": "Keep only listings matching these employment types. Type is only known for jobs where the source page publishes it (JSON-LD employmentType); leave empty to keep all types.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "PART_TIME",
                "INTERNSHIP",
                "TEMPORARY",
                "CONTRACTOR",
                "VOLUNTEER"
              ]
            },
            "default": []
          },
          "workplaceTypes": {
            "title": "Workplace Status",
            "type": "array",
            "description": "Keep only listings matching this workplace status. Only jobs with a source-confirmed remote/on-site flag are labeled; leave empty to keep all (including unlabeled).",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "on_site"
              ]
            },
            "default": []
          },
          "datePostedAfter": {
            "title": "Posted After",
            "type": "string",
            "description": "Optional ISO date. Keep jobs first posted on or after this date.",
            "default": ""
          },
          "datePostedBefore": {
            "title": "Posted Before",
            "type": "string",
            "description": "Optional ISO date. Keep jobs first posted on or before this date.",
            "default": ""
          },
          "minCompensation": {
            "title": "Minimum Compensation",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose published salary (in its own pay-schedule unit, e.g. per hour or per year) is at least this amount. Jobs without a published salary are excluded when this is set.",
            "default": 0
          },
          "maxCompensation": {
            "title": "Maximum Compensation",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose published salary is at most this amount. Leave at 0 for no upper bound.",
            "default": 0
          },
          "fetchJobDetails": {
            "title": "Fetch Full Job Details",
            "type": "boolean",
            "description": "Visit each job's public detail page to add description, employment type, salary, and application deadline. Uses one extra request per job. Turn off for a faster, lighter-weight listing-only run.",
            "default": true
          },
          "maxItems": {
            "title": "Maximum Jobs",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Maximum number of job listings to return across all searches.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Datacenter proxy is used by default and is sufficient for Handshake's public pages. Only switch to residential if you see blocking.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}