{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse Jobs Scraper & API",
    "description": "Scrape jobs directly from Greenhouse ATS via one fast API. Pull live roles from top tech companies like Airbnb, Stripe & Discord. Zero ghost jobs, verified daily — built for job boards, AI agents & tech hiring research.",
    "version": "2.6",
    "x-build-id": "lVSz6QHGpAg2ZXsNb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jobo.world~greenhouse-jobs-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jobo.world-greenhouse-jobs-scraper-api",
        "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/jobo.world~greenhouse-jobs-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-jobo.world-greenhouse-jobs-scraper-api",
        "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/jobo.world~greenhouse-jobs-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-jobo.world-greenhouse-jobs-scraper-api",
        "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": {
          "queries": {
            "title": "Search Queries",
            "maxItems": 5,
            "type": "array",
            "description": "Job titles or keywords (e.g., 'Software Engineer', 'Backend Developer'). Multiple values are OR-ed. Up to 5 keywords. Adding more rarely improves results — narrow your filters (skills, companies, locations) for better matches.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, regions, or countries (e.g., 'San Francisco', 'United Kingdom'). Geocoded server-side for better matching.",
            "items": {
              "type": "string"
            }
          },
          "work_models": {
            "title": "Work Model",
            "type": "array",
            "description": "Where the work is performed. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ]
            }
          },
          "employment_types": {
            "title": "Employment Type",
            "type": "array",
            "description": "Filter by employment type. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "internship",
                "freelance",
                "temporary"
              ]
            }
          },
          "experience_levels": {
            "title": "Experience Level",
            "type": "array",
            "description": "Filter by seniority. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "entry",
                "mid",
                "senior",
                "lead",
                "executive"
              ]
            }
          },
          "skills_include": {
            "title": "Skills (Include)",
            "type": "array",
            "description": "Only return jobs that require ANY of these skills (e.g., 'Python', 'React', 'AWS'). Matched case-insensitively against the AI-extracted qualifications.",
            "items": {
              "type": "string"
            }
          },
          "skills_exclude": {
            "title": "Skills (Exclude)",
            "type": "array",
            "description": "Exclude jobs that require ANY of these skills.",
            "items": {
              "type": "string"
            }
          },
          "companies_include": {
            "title": "Companies (Include) — must be on Greenhouse",
            "type": "array",
            "description": "Only return jobs from these companies — and only companies whose jobs are indexed on Greenhouse. Each entry can be the company's FULL name as stored in the Jobo index, its website domain (e.g. fedex.com), or its Jobo company id; name matching is on the whole name and case-insensitive, not partial (\"Glenmark\" will not find \"Glenmark Pharmaceuticals\"), though common legal suffixes are handled. A company hosted on a DIFFERENT ATS returns zero results here even when the name is spelled correctly — use the ATS Jobs API actor for cross-platform coverage. If a run returns nothing, open Output → Company match report. Tip: the exact stored name is the company.name field on any job result. To build a list, run a search without this filter and copy the company.name values from the output instead of typing names by hand.",
            "items": {
              "type": "string"
            }
          },
          "companies_exclude": {
            "title": "Companies (Exclude)",
            "type": "array",
            "description": "Exclude jobs from these companies. Useful for filtering out staffing agencies or companies you have already applied to. Entries take the same forms as the include filter: a whole company name, a website domain, or a Jobo company id. An entry that matches no stored company is a silent no-op: it excludes nothing and the run does not fail.",
            "items": {
              "type": "string"
            }
          },
          "min_salary_usd": {
            "title": "Minimum Salary (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum annual salary in USD. Jobs without disclosed salary are excluded when this filter is set."
          },
          "max_salary_usd": {
            "title": "Maximum Salary (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum annual salary in USD. Combine with min_salary_usd for a range."
          },
          "posted_after": {
            "title": "Posted After",
            "type": "string",
            "description": "Only show jobs whose employer posting date is after this date. Jobs without an ATS posting date use the Jobo first-indexed date. Accepts ISO 8601 (e.g. '2026-01-01T00:00:00Z') or relative strings ('7 days ago', '1 month')."
          },
          "posted_before": {
            "title": "Posted Before",
            "type": "string",
            "description": "Only show jobs whose employer posting date is before this date. Jobs without an ATS posting date use the Jobo first-indexed date. Accepts ISO 8601 dates or relative strings."
          },
          "page": {
            "title": "Page Number",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Page number for paginated results. Up to page 100.",
            "default": 1
          },
          "page_size": {
            "title": "Page Size",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Number of results per page (1-100).",
            "default": 50
          },
          "include_company_details": {
            "title": "Include full company details",
            "type": "boolean",
            "description": "When enabled, replaces the lightweight company preview on each job with the fully enriched company profile (funding, leadership, ratings, tech stack, H1B stats, etc.) fetched from GET /api/companies/{id}. Companies are deduplicated, so each unique company is fetched only once per run. Slower and uses more API calls — leave off if you only need basic company info.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}