{
  "openapi": "3.0.1",
  "info": {
    "title": "Wellfound Jobs Scraper",
    "description": "Wellfound Jobs Scraper SD - Wellfound Jobs Scraper is a job data tool that extracts wellfound.com (AngelList) startup jobs by role, location or URL: salary, equity, remote policy, skills, visa sponsorship, full description, company size, stage and funding. No login.",
    "version": "1.0",
    "x-build-id": "34zH9pA9niPd2mpg3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neuro-scraper~wellfound-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neuro-scraper-wellfound-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/neuro-scraper~wellfound-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neuro-scraper-wellfound-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/neuro-scraper~wellfound-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neuro-scraper-wellfound-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": {
          "keyword": {
            "title": "Role keyword(s)",
            "type": "string",
            "description": "Wellfound role, e.g. \"software engineer\", \"data scientist\", \"product manager\". Comma-separated for several roles (OR). Each role opens Wellfound's own role page (wellfound.com/role/<role>); combine with Location, or with Remote only for the remote list."
          },
          "location": {
            "title": "Location(s)",
            "type": "array",
            "description": "Wellfound location as in its URLs, one per line, e.g. \"new-york\", \"san-francisco\", \"london\", \"bangalore\" (spaces are fine: \"New York\"). With a role keyword: wellfound.com/role/l/<role>/<location>; alone: wellfound.com/location/<location>.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Wellfound URLs (optional)",
            "type": "array",
            "description": "Wellfound search pages such as https://wellfound.com/role/l/software-engineer/new-york, https://wellfound.com/role/r/data-scientist (remote), https://wellfound.com/location/london, or single job pages https://wellfound.com/jobs/4787364-software-engineer. Every page of each search is followed.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Role keyword without a location: reads Wellfound's remote list (wellfound.com/role/r/<role>). Every search: keeps only jobs Wellfound marks as remote.",
            "default": false
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "full-time",
              "part-time",
              "contract",
              "internship",
              "cofounder"
            ],
            "type": "string",
            "description": "Keep only this Wellfound job type (applied to the listed jobs; Wellfound's role pages take no job-type parameter).",
            "default": "any"
          },
          "experience": {
            "title": "Seniority",
            "enum": [
              "any",
              "junior",
              "mid",
              "senior",
              "executive"
            ],
            "type": "string",
            "description": "Keep only this seniority. Read from the title words, else from Wellfound's minimum years of experience; also written to the seniorityLevel column.",
            "default": "any"
          },
          "jobTitle": {
            "title": "Job title contains",
            "type": "string",
            "description": "Keep only jobs whose title contains this text (case-insensitive). Comma-separated alternatives, e.g. \"backend, platform\"."
          },
          "includeCompanies": {
            "title": "Only these companies",
            "type": "array",
            "description": "Company names, Wellfound company slugs or company URLs, e.g. \"Chalk\", \"chalk-ai\", https://wellfound.com/company/chalk-ai. Other companies are skipped.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude these companies",
            "type": "array",
            "description": "Company names, slugs or company URLs to skip.",
            "items": {
              "type": "string"
            }
          },
          "companyCategories": {
            "title": "Company industries",
            "type": "array",
            "description": "Keep only companies in one of these Wellfound industries (text match), e.g. \"Machine Learning\", \"Fintech\", \"Healthcare\". Read from each job page, so the job pages are opened.",
            "items": {
              "type": "string"
            }
          },
          "minSalary": {
            "title": "Minimum salary (per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose salary range reaches at least this amount per year, in the currency Wellfound shows for the job (no conversion), e.g. 120000. 0 = off.",
            "default": 0
          },
          "maxSalary": {
            "title": "Maximum salary (per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose salary range starts at or below this amount per year (job's own currency). 0 = off.",
            "default": 0
          },
          "includeNoSalary": {
            "title": "Include jobs without salary",
            "type": "boolean",
            "description": "When a salary filter is set: also keep jobs that publish no salary range.",
            "default": true
          },
          "equityMin": {
            "title": "Minimum equity (%)",
            "minimum": 0,
            "type": "number",
            "description": "Keep jobs whose equity range reaches at least this percentage, e.g. 0.5. Jobs without equity are skipped while this is set. 0 = off.",
            "default": 0
          },
          "visaSponsorship": {
            "title": "Visa sponsorship",
            "enum": [
              "any",
              "offered",
              "not_refused"
            ],
            "type": "string",
            "description": "Wellfound's Visa Sponsorship line of each job page (the job pages are opened for this).",
            "default": "any"
          },
          "datePosted": {
            "title": "Posted in the last",
            "enum": [
              "all",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Keep only jobs whose Wellfound posting time is this recent.",
            "default": "all"
          },
          "maxAgeMinutes": {
            "title": "Max age (minutes)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs posted within this many minutes (useful for frequent scheduled runs). 0 = off.",
            "default": 0
          },
          "sort": {
            "title": "Sort by posted date",
            "enum": [
              "none",
              "newest",
              "oldest"
            ],
            "type": "string",
            "description": "Wellfound's role pages have no sort parameter: with newest / oldest every page of each search is read first (up to Max pages), then the jobs are sorted and the first Max jobs are saved.",
            "default": "none"
          },
          "enrichDetail": {
            "title": "Open each job page",
            "type": "boolean",
            "description": "Adds the job page data: HTML description, skills, visa sponsorship, relocation, remote policy, company website, industry, coordinates, company industries, funding and founders (one extra request per job).",
            "default": true
          },
          "incrementalMode": {
            "title": "Incremental mode (only new / changed jobs)",
            "type": "boolean",
            "description": "Remembers the jobs of earlier runs in a named key-value store (wellfound-jobs-state) and saves only jobs that are new or changed since then; rows get changeType, firstSeenAt, isRepost and repostOfId. Use with a schedule.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name of the remembered state for incremental mode, e.g. \"sf-engineers\". Empty = derived from the searches and filters, so the same input shares one state."
          },
          "emitUnchanged": {
            "title": "Also save unchanged jobs",
            "type": "boolean",
            "description": "Incremental mode: also save jobs seen before without changes (changeType UNCHANGED).",
            "default": false
          },
          "emitExpired": {
            "title": "Save expired jobs",
            "type": "boolean",
            "description": "Incremental mode: save one row (changeType EXPIRED) for each remembered job that is no longer listed. Only when the run read every page of every search (not stopped by Max jobs or Max pages).",
            "default": false
          },
          "skipReposts": {
            "title": "Skip reposts",
            "type": "boolean",
            "description": "Skip a job whose company and title match a job with another id (already saved in this run, or remembered by incremental mode).",
            "default": false
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many jobs in total. Each search is followed page by page (20 companies, about 40 jobs per page) up to Wellfound's last page, e.g. 17 pages for software engineer in New York.",
            "default": 50
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Read at most this many result pages per search. 0 = all pages.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential proxy is the default and recommended.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}