{
  "openapi": "3.0.1",
  "info": {
    "title": "Wellfound Jobs Scraper — Salary Breakdown & Benefits",
    "description": "Wellfound Jobs Scraper: Extract job titles, salary ranges, equity, benefits, locations, experience, company details, and job URLs. Analyze compensation, benefits, hiring trends, and startup opportunities for recruitment and market research.",
    "version": "0.7",
    "x-build-id": "MRFozlUPo4gvjdaTN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~wellfound-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-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/api-empire~wellfound-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-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/api-empire~wellfound-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-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": "🔗 Wellfound URLs (jobs or search pages)",
            "type": "array",
            "description": "Paste Wellfound listing URLs (https://wellfound.com/location/new-york, https://wellfound.com/role/r/software-engineer, https://wellfound.com/role/l/software-engineer/new-york) or individual job pages (https://wellfound.com/jobs/123456-role). Each job page is opened for its published pay and Perks block. Takes priority over the search fields below. Note: /company/<slug>/jobs is not supported — Wellfound answers 403 there.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "payLocation": {
            "title": "📍 Market / city to price",
            "type": "string",
            "description": "City or region whose pay you want to benchmark, e.g. New York, San Francisco, Remote. Builds the Wellfound search URL when no URLs are supplied. Example: New York builds /location/new-york.",
            "default": "New York"
          },
          "roleKeyword": {
            "title": "🔍 Role or skill to price",
            "type": "string",
            "description": "Role title, skill or stack to narrow the pay sample, e.g. software engineer, product designer, python. Combined with the market above.",
            "default": ""
          },
          "employerName": {
            "title": "🏢 Single employer (optional)",
            "type": "string",
            "description": "Restrict the pay sample to one hiring company. Loose match against the company name on each result card. NOTE: Wellfound publishes no company-scoped job search — /company/<slug>/jobs answers 403 and /jobs?keywords=<company> is ignored by the server — so this filter is applied client-side over whichever market/role search you configure. Combine it with the market/role fields and raise 'Listing pages to scan' for a meaningful sample. Leave empty to price the whole market.",
            "default": ""
          },
          "listingPagesToScan": {
            "title": "📄 Listing pages to scan",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many result pages to walk per URL. A page carries roughly 50 job cards. A bigger sample makes the run's payDisclosureRate more meaningful. Default is 1.",
            "default": 1
          },
          "maxItems": {
            "title": "🧮 Max priced jobs",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on job rows across all URLs. 0 = no cap. Example: maxItems=25 stops after 25 jobs have passed your pay filters.",
            "default": 0
          },
          "minSalary": {
            "title": "💵 Minimum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose published pay band reaches at least this amount, in the posting's own currency and period (usually USD per year). A band of 100,000-200,000 passes minSalary=150000 because its top reaches it. 0 = off.",
            "default": 0
          },
          "maxSalary": {
            "title": "💴 Maximum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose published pay band starts at or below this amount. Use with minSalary to target a band, e.g. minSalary=120000 plus maxSalary=180000. 0 = off.",
            "default": 0
          },
          "includeNoSalary": {
            "title": "🕶️ Keep jobs with no published pay",
            "type": "boolean",
            "description": "Wellfound postings do not all publish a number. Leave on to keep them (salaryMin/salaryMax stay null, never guessed). Turn off for a pay-transparency-only dataset; the skipped jobs are still listed as uncharged rows with errorReason no_salary_disclosed.",
            "default": true
          },
          "roleType": {
            "title": "💼 Employment type",
            "enum": [
              "",
              "FULLTIME",
              "PARTTIME",
              "CONTRACTOR",
              "INTERN"
            ],
            "type": "string",
            "description": "Restrict the sample to one employment type. Pay bands are not comparable across full-time and contract work, so set this before benchmarking.",
            "default": ""
          },
          "postedWindow": {
            "title": "📅 Posting age",
            "enum": [
              "all",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "How recent the postings in the pay sample must be. Older bands drift, so narrow this when benchmarking a live market.",
            "default": "all"
          },
          "fetchPayDetails": {
            "title": "🧾 Read each job's published pay & benefits block",
            "type": "boolean",
            "description": "Opens every job page to read its schema.org JobPosting block (the only place Wellfound publishes exact salaryMin/salaryMax/currency/period) and its rendered Perks card (the only place the benefits list is structured as discrete tags). Turn off for a fast listing-only pass; salary then falls back to parsing the compensation string, salarySource says so, and benefits stay empty.",
            "default": true
          },
          "detailPageDelay": {
            "title": "⏱️ Delay between job pages (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Pause before each job-page request. The job page is where the published salaryMin/salaryMax/currency/period and the Perks (benefits) block live. Job pages are fetched up to 4 at a time; this delay paces each worker. 0 is safe for small runs, 1-2 for large ones. Default is 2.",
            "default": 1
          },
          "fetchDescriptions": {
            "title": "📝 Include the job description text",
            "type": "boolean",
            "description": "Fill the description column. Wellfound already ships the description in the search payload, so this rarely costs an extra request.",
            "default": true
          },
          "emitSkippedRows": {
            "title": "🧾 Write uncharged rows for filtered-out jobs",
            "type": "boolean",
            "description": "Adds a type=skipped row (never billed) for every job your pay filters removed, so a run that returns 8 of 100 jobs shows why. Turn off for a clean jobs-only dataset.",
            "default": true
          },
          "requestDelay": {
            "title": "⏱️ Delay between listing pages (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "number",
            "description": "Pause before each search-results page load. Default is 1.",
            "default": 1
          },
          "headless": {
            "title": "👁️ Headless mode (legacy, no effect)",
            "type": "boolean",
            "description": "Kept for input compatibility only. Since v0.6 this Actor reads Wellfound's server-rendered payloads over plain HTTP and starts no browser, so this switch does nothing.",
            "default": true
          },
          "countryName": {
            "title": "🌍 Proxy exit country",
            "enum": [
              "Afghanistan",
              "Albania",
              "Algeria",
              "American Samoa",
              "Andorra",
              "Angola",
              "Anguilla",
              "Antarctica",
              "Antigua and Barbuda",
              "Argentina",
              "Armenia",
              "Aruba",
              "Australia",
              "Austria",
              "Azerbaijan",
              "Bahamas",
              "Bahrain",
              "Bangladesh",
              "Barbados",
              "Belarus",
              "Belgium",
              "Belize",
              "Benin",
              "Bermuda",
              "Bhutan",
              "Bolivia, Plurinational State of",
              "Bonaire, Sint Eustatius and Saba",
              "Bosnia and Herzegovina",
              "Botswana",
              "Bouvet Island",
              "Brazil",
              "British Indian Ocean Territory",
              "Brunei Darussalam",
              "Bulgaria",
              "Burkina Faso",
              "Burundi",
              "Cabo Verde",
              "Cambodia",
              "Cameroon",
              "Canada",
              "Cayman Islands",
              "Central African Republic",
              "Chad",
              "Chile",
              "China",
              "Christmas Island",
              "Cocos (Keeling) Islands",
              "Colombia",
              "Comoros",
              "Congo",
              "Congo, The Democratic Republic of the",
              "Cook Islands",
              "Costa Rica",
              "Croatia",
              "Cuba",
              "Curaçao",
              "Cyprus",
              "Czechia",
              "Côte d'Ivoire",
              "Denmark",
              "Djibouti",
              "Dominica",
              "Dominican Republic",
              "Ecuador",
              "Egypt",
              "El Salvador",
              "Equatorial Guinea",
              "Eritrea",
              "Estonia",
              "Eswatini",
              "Ethiopia",
              "Falkland Islands (Malvinas)",
              "Faroe Islands",
              "Fiji",
              "Finland",
              "France",
              "French Guiana",
              "French Polynesia",
              "French Southern Territories",
              "Gabon",
              "Gambia",
              "Georgia",
              "Germany",
              "Ghana",
              "Gibraltar",
              "Greece",
              "Greenland",
              "Grenada",
              "Guadeloupe",
              "Guam",
              "Guatemala",
              "Guernsey",
              "Guinea",
              "Guinea-Bissau",
              "Guyana",
              "Haiti",
              "Heard Island and McDonald Islands",
              "Holy See (Vatican City State)",
              "Honduras",
              "Hong Kong",
              "Hungary",
              "Iceland",
              "India",
              "Indonesia",
              "Iran, Islamic Republic of",
              "Iraq",
              "Ireland",
              "Isle of Man",
              "Israel",
              "Italy",
              "Jamaica",
              "Japan",
              "Jersey",
              "Jordan",
              "Kazakhstan",
              "Kenya",
              "Kiribati",
              "Korea, Democratic People's Republic of",
              "Korea, Republic of",
              "Kuwait",
              "Kyrgyzstan",
              "Lao People's Democratic Republic",
              "Latvia",
              "Lebanon",
              "Lesotho",
              "Liberia",
              "Libya",
              "Liechtenstein",
              "Lithuania",
              "Luxembourg",
              "Macao",
              "Madagascar",
              "Malawi",
              "Malaysia",
              "Maldives",
              "Mali",
              "Malta",
              "Marshall Islands",
              "Martinique",
              "Mauritania",
              "Mauritius",
              "Mayotte",
              "Mexico",
              "Micronesia, Federated States of",
              "Moldova, Republic of",
              "Monaco",
              "Mongolia",
              "Montenegro",
              "Montserrat",
              "Morocco",
              "Mozambique",
              "Myanmar",
              "Namibia",
              "Nauru",
              "Nepal",
              "Netherlands",
              "New Caledonia",
              "New Zealand",
              "Nicaragua",
              "Niger",
              "Nigeria",
              "Niue",
              "Norfolk Island",
              "North Macedonia",
              "Northern Mariana Islands",
              "Norway",
              "Oman",
              "Pakistan",
              "Palau",
              "Palestine, State of",
              "Panama",
              "Papua New Guinea",
              "Paraguay",
              "Peru",
              "Philippines",
              "Pitcairn",
              "Poland",
              "Portugal",
              "Puerto Rico",
              "Qatar",
              "Romania",
              "Russian Federation",
              "Rwanda",
              "Réunion",
              "Saint Barthélemy",
              "Saint Helena, Ascension and Tristan da Cunha",
              "Saint Kitts and Nevis",
              "Saint Lucia",
              "Saint Martin (French part)",
              "Saint Pierre and Miquelon",
              "Saint Vincent and the Grenadines",
              "Samoa",
              "San Marino",
              "Sao Tome and Principe",
              "Saudi Arabia",
              "Senegal",
              "Serbia",
              "Seychelles",
              "Sierra Leone",
              "Singapore",
              "Sint Maarten (Dutch part)",
              "Slovakia",
              "Slovenia",
              "Solomon Islands",
              "Somalia",
              "South Africa",
              "South Georgia and the South Sandwich Islands",
              "South Sudan",
              "Spain",
              "Sri Lanka",
              "Sudan",
              "Suriname",
              "Svalbard and Jan Mayen",
              "Sweden",
              "Switzerland",
              "Syrian Arab Republic",
              "Taiwan, Province of China",
              "Tajikistan",
              "Tanzania, United Republic of",
              "Thailand",
              "Timor-Leste",
              "Togo",
              "Tokelau",
              "Tonga",
              "Trinidad and Tobago",
              "Tunisia",
              "Turkmenistan",
              "Turks and Caicos Islands",
              "Tuvalu",
              "Türkiye",
              "Uganda",
              "Ukraine",
              "United Arab Emirates",
              "United Kingdom",
              "United States",
              "United States Minor Outlying Islands",
              "Uruguay",
              "Uzbekistan",
              "Vanuatu",
              "Venezuela, Bolivarian Republic of",
              "Viet Nam",
              "Virgin Islands, British",
              "Virgin Islands, U.S.",
              "Wallis and Futuna",
              "Western Sahara",
              "Yemen",
              "Zambia",
              "Zimbabwe",
              "Åland Islands"
            ],
            "type": "string",
            "description": "Country the proxy exit nodes should appear in (249 supported). This geo-targets the connection only, it does NOT filter which jobs are returned. Use the market field above for that.",
            "default": "United States"
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy configuration",
            "type": "object",
            "description": "Wellfound's anti-bot layer serves a 403 'Security Check' page to clients it dislikes. Apify RESIDENTIAL is the most reliable tier and is the default; the Actor steps down to datacenter and then to a direct connection on its own if a tier keeps getting blocked.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}