{
  "openapi": "3.0.1",
  "info": {
    "title": "Wellfound Jobs Scraper",
    "description": "Scrape startup jobs from Wellfound (ex-AngelList Talent): full description, salary and equity as numbers, remote, company, funding and visa. Export to JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "KynKerS2w1RCxkCB8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~wellfound-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-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/nice_dev~wellfound-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-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/nice_dev~wellfound-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-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": {
          "startUrls": {
            "title": "Start URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Wellfound search URLs (`https://wellfound.com/role/software-engineer`, `/role/l/<role>/<city>`, `/role/r/<role>`, `/location/<city>`, `/remote`) or single job URLs (`https://wellfound.com/jobs/<id>-<slug>`). Pagination is automatic. When this list is not empty, the search fields below (job categories, locations) are ignored; filters, caps and monitoring still apply. Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "query": {
            "title": "Job category",
            "maxLength": 200,
            "type": "string",
            "description": "Wellfound job category, as shown on the site (e.g. `Software Engineer`, `Product Manager`, `Data Scientist`). It is the site's own browse axis, not a free-text search: Wellfound has no keyword search for visitors. To filter on words, use **Must contain keywords** below."
          },
          "searchQueries": {
            "title": "More job categories",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several categories in one run: one search per category (times each location below). Added to **Job category**; a job found by several searches is saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "maxLength": 200,
            "type": "string",
            "description": "City, region or country as named on Wellfound (e.g. `San Francisco`, `London`, `India`, `United States`). Empty = everywhere."
          },
          "locations": {
            "title": "More locations",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several locations in one run: every category is searched in every location (3 categories × 4 locations = 12 searches, max 500). Added to **Location**.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Browse Wellfound's remote pages instead of the on-site ones (`/role/r/<category>`, or `/remote` when no category is given).",
            "default": false
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of jobs to save for the whole run (after deduplication and filters). 0 = no limit — Wellfound serves every page of a search, so a category like `Software Engineer` can return about 5 000 jobs.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max jobs per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap for EACH search (category × location, or search URL), so that the first search cannot use up the whole **Max jobs** budget. 0 = no per-search cap.",
            "default": 0
          },
          "maxPages": {
            "title": "Max result pages per search",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop each search after this many result pages (about 40 jobs per page). 0 = every page the site serves. Use it to cap the number of requests rather than the number of results.",
            "default": 0
          },
          "extractDetails": {
            "title": "Extract job details",
            "type": "boolean",
            "description": "Open each job page (1 extra request per job) for: exact salary range and currency, GPS coordinates, industry, company website, visa sponsorship, relocation, recruiter activity, company size, markets, amount raised, funding rounds, founders, and the HTML description. Turn it OFF for a run about 40× faster (one request per result page of about 40 jobs), at the same price per job: the full description, the salary text and the equity are already on the result page.",
            "default": true
          },
          "enrichEmails": {
            "title": "Find company e-mails",
            "type": "boolean",
            "description": "Visit the company's own website (up to 3 pages, once per company and per run) and collect the e-mail addresses published there. Wellfound itself publishes no e-mail. Requires **Extract job details** (the company website is read from the job page).",
            "default": false
          },
          "enrichCompany": {
            "title": "Company page (description, perks, social links, open jobs)",
            "type": "boolean",
            "description": "Read each company's Wellfound page once per run and add: its long description, perks and benefits, culture photos, LinkedIn / X / Facebook / blog / Product Hunt links, and how many jobs it has open, by role. Works with or without **Extract job details**, and also fills website, amount raised, markets and locations in list-only runs. The run takes 1 GB of memory instead of 256 MB — set automatically when this box is ticked. Charged per company and once per run (see Pricing).",
            "default": false
          },
          "includeKeywords": {
            "title": "Must contain keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the jobs whose title or description contains at least one of these words (case and accents ignored). This is how you search by keyword on Wellfound: the site offers no keyword search to visitors.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the jobs whose title or description contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobTypes": {
            "title": "Job types",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these types. Empty = all. Measured on 238 jobs: full-time 228, internship 5, cofounder 3, contract 2.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "internship",
                "cofounder"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Contract",
                "Internship",
                "Cofounder"
              ]
            },
            "default": []
          },
          "minSalary": {
            "title": "Min salary",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Keep only the jobs whose salary range reaches at least this amount, in the currency Wellfound shows (mostly USD per year). Read from the compensation text of the result page, so it works without **Extract job details**."
          },
          "maxSalary": {
            "title": "Max salary",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Keep only the jobs whose salary range starts at or below this amount."
          },
          "includeNoSalary": {
            "title": "Keep jobs without a salary",
            "type": "boolean",
            "description": "Keep the jobs that show no salary when a salary filter is set. Measured: 92 % of jobs show a compensation, 8 % do not.",
            "default": true
          },
          "minEquity": {
            "title": "Min equity (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Keep only the jobs whose equity range reaches at least this percentage (e.g. `0.1` for 0.1 %). Read from the same compensation text."
          },
          "maxYearsExperience": {
            "title": "Max years of experience required",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Keep only the jobs asking for at most this many years. Jobs that state no experience requirement are kept (Wellfound shows it on 28 % of jobs only)."
          },
          "companySizes": {
            "title": "Company sizes",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the jobs of companies of these sizes (number of employees, as Wellfound groups them). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "SIZE_1_10",
                "SIZE_11_50",
                "SIZE_51_200",
                "SIZE_201_500",
                "SIZE_501_1000",
                "SIZE_1001_5000",
                "SIZE_5001_10000",
                "SIZE_10001_PLUS"
              ],
              "enumTitles": [
                "1-10",
                "11-50",
                "51-200",
                "201-500",
                "501-1000",
                "1001-5000",
                "5001-10000",
                "10001+"
              ]
            },
            "default": []
          },
          "companyStages": {
            "title": "Company stages",
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the jobs of companies at these stages, as written on the company badge (e.g. `Early Stage`, `Growth Stage`). Empty = all. Case ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "companyTypes": {
            "title": "Company type",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only B2B and/or B2C companies, as Wellfound tags them. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "B2B",
                "B2C"
              ],
              "enumTitles": [
                "B2B",
                "B2C"
              ]
            },
            "default": []
          },
          "activelyHiringOnly": {
            "title": "Actively hiring companies only",
            "type": "boolean",
            "description": "Keep only the jobs of companies carrying Wellfound's \"Actively Hiring\" badge (the site's own sign that applications are being processed).",
            "default": false
          },
          "visaSponsorshipOnly": {
            "title": "Visa sponsorship only",
            "type": "boolean",
            "description": "Keep only the jobs whose page states that visa sponsorship is available. Requires **Extract job details**: visa sponsorship is on the job page, not on the result page.",
            "default": false
          },
          "industries": {
            "title": "Industries",
            "maxItems": 30,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the jobs whose company belongs to one of these industries (e.g. `Fin Tech`, `Real Estate`). Requires **Extract job details**: the industry is on the job page, not on the result page. Case ignored, partial match.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeCompanies": {
            "title": "Only these companies",
            "maxItems": 200,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the jobs of these companies. Company name or Wellfound slug (e.g. `Boom` or `boom-app`). Case ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude these companies",
            "maxItems": 200,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the jobs of these companies. Company name or Wellfound slug. Case ignored. Applied after **Only these companies**.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Only jobs published on or after this date: `2026-09-01`, or a period before now such as `7 days`, `2 weeks`, `1 month` (API: `24 hours` and full ISO date-times work too). Reads the job's `publishedAt` (Wellfound's `liveStartAt`), present on 100 % of jobs. Note: Wellfound does not sort by date, so a recent-jobs run still reads every page of the search."
          },
          "postedBefore": {
            "title": "Posted before",
            "type": "string",
            "description": "Only jobs published on or before this date (the whole day is included), or older than a period such as `30 days`."
          },
          "onlyNew": {
            "title": "Only new jobs",
            "type": "boolean",
            "description": "Skip the jobs that a previous run (same **Memory key**) already delivered: they are not saved and not charged, and their page is not even opened. A job re-posted under the same Wellfound id is therefore not delivered twice. First run = everything is new.",
            "default": false
          },
          "stateKey": {
            "title": "Memory key",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new jobs**. Give each schedule / task its own key (e.g. `sf-engineers`) so that they do not share their memory. Letters, digits, `-` and `_`.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget everything remembered under this **Memory key** before the run: this run returns (and charges) every job again. Untick it afterwards.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy or your own proxies. Keep the default: it is included in the price. The residential Apify proxy is not available in this Actor.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of requests processed in parallel. The default is 1: with the rate below it makes one request every 1.33 seconds, a pace this site serves without refusing. Raise it only when you route the run through several IPs.",
            "default": 1
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 600,
            "type": "integer",
            "description": "Global request rate. The default (45 = 0.75 request per second) stays under the ceiling measured on Wellfound, per IP: about 0.8 request per second can be held for good, while 1 request per second triggered HTTP 429 after about 2 minutes, and then the whole site refuses for about 5 minutes. Raise it only if you route the run through many IPs.",
            "default": 45
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per request before it is marked as failed. Behind a proxy, a request the site turns away is also retried on a new proxy session up to 10 times without using up these retries.",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Include debug messages in the run log.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}