{
  "openapi": "3.0.1",
  "info": {
    "title": "Wellfound Jobs Scraper By Remote, Seniority & Salary Filter",
    "description": "Wellfound Jobs Scraper extracts public job listings from Wellfound, including job titles, company names, locations, salary ranges, skills, job descriptions, employment types, and application URLs. Ideal for recruitment, job market research, salary analysis, and hiring insights.",
    "version": "0.1",
    "x-build-id": "8E6WhP2fgkARYAtFj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~wellfound-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-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/scrapio~wellfound-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-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/scrapio~wellfound-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-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 search or job URLs",
            "type": "array",
            "description": "Wellfound pages to crawl. Accepts search/listing pages (https://wellfound.com/location/new-york, /role/r/software-engineer, /role/l/data-scientist/remote) and individual job pages (https://wellfound.com/jobs/123456-role-slug). Takes priority over the search builder below. Leave empty to build the URL from the fields underneath.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeKeyword": {
            "title": "🧩 Role keyword",
            "type": "string",
            "description": "Role title, stack or skill used to build the search URL when no Start URLs are given, for example software engineer, product designer or data scientist.",
            "default": ""
          },
          "locationName": {
            "title": "🗺️ Search city or region",
            "type": "string",
            "description": "City or region the search URL is built around (New York, San Francisco, Remote). This shapes WHICH Wellfound page is crawled. Per-job structured city/region/country/lat/lon comes from the Resolve exact job locations option further down.",
            "default": "New York"
          },
          "companyName": {
            "title": "🏢 Only this company",
            "type": "string",
            "description": "Keep only cards whose company name loosely matches this value. Leave empty for every company.",
            "default": ""
          },
          "pagesToFetch": {
            "title": "📄 Result pages per URL",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many result pages to open per starting URL. A Wellfound listing page carries roughly 50 job cards, so 1 page is about 50 candidates before filtering. Default is 1.",
            "default": 1
          },
          "workplaceTypes": {
            "title": "🏠 Workplace type (onsite / remote / hybrid)",
            "type": "array",
            "description": "Keep only roles whose published workplace type is one of these, read from Wellfound's own remoteConfig field. Wellfound publishes it on roughly 27-29% of listings; the other ~72% state nothing. Roles that state nothing are governed by the Keep roles that do not state it toggle below, never silently deleted. Leave empty to accept any workplace type.",
            "items": {
              "type": "string",
              "enum": [
                "ONSITE",
                "REMOTE",
                "HYBRID"
              ],
              "enumTitles": [
                "🏢 Onsite / in office",
                "🌍 Remote",
                "🔄 Hybrid"
              ]
            },
            "default": []
          },
          "remoteOnly": {
            "title": "🌍 Remote-friendly roles only",
            "type": "boolean",
            "description": "Keep only roles flagged remote by Wellfound. Unlike workplace type this rides the remote boolean present on 100% of listings, so there is no unknown case: a role either is or is not flagged remote. Default is off.",
            "default": false
          },
          "experience": {
            "title": "🎓 Seniority band (by years required)",
            "enum": [
              "",
              "entry",
              "mid",
              "senior",
              "lead"
            ],
            "type": "string",
            "description": "Keep only roles whose minimum years of experience falls in this band: Entry 0-1, Mid 2-4, Senior 5-8, Lead/Principal 9+. Bands are computed from a NUMBER (Wellfound's published yearsExperienceMin, or a clearly marked regex read of the description), never guessed from the word Senior in a job title. Wellfound publishes the number on roughly 18% of listings.",
            "default": ""
          },
          "minAnnualSalary": {
            "title": "💰 Minimum advertised salary",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Drop roles whose advertised lower bound is below this number, in the posting's own currency units (for example 120000). Reads the salary string this actor already produces from Wellfound's compensation text. 0 disables the filter.",
            "default": 0
          },
          "excludeCompanies": {
            "title": "🚫 Skip these companies",
            "type": "array",
            "description": "Company names to drop from the results (case- and punctuation-insensitive substring match). Useful for filtering out agencies, your current employer, or companies you already applied to. Example: Brex, Deel.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keepUnspecified": {
            "title": "❓ Keep roles that do not state it",
            "type": "boolean",
            "description": "Decides what the workplace-type, seniority and salary filters do with a role that does NOT PUBLISH that field. ON (default): the role is kept and its unknownFields column names what was missing, so a partial-coverage filter never silently deletes most of the market. OFF: the role is dropped and an uncharged accounting row (skipReason unknown_workplace_type / unknown_experience / unknown_salary) records it separately from genuine non-matches.",
            "default": true
          },
          "resolveJobGeo": {
            "title": "📍 Resolve exact job locations",
            "type": "boolean",
            "description": "Open each kept job page to read its schema.org listing data and emit jobLocations with city, region, country, postal code, latitude and longitude. Costs one extra request per job, so it is capped below. Off means jobLocations is null and geoStatus reads not_requested. Default is on.",
            "default": true
          },
          "maxGeoLookups": {
            "title": "🔢 Max location lookups per run",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Hard cap on job-page fetches used for location resolution. Jobs beyond the cap still appear with every listing-derived field and their geoStatus reads skipped_cap. Raise it for richer geo, lower it for speed. 0 turns location resolution off. Default is 10.",
            "default": 10
          },
          "jobType": {
            "title": "💼 Employment type",
            "enum": [
              "",
              "FULLTIME",
              "PARTTIME",
              "CONTRACTOR",
              "INTERN"
            ],
            "type": "string",
            "description": "Filter by contract shape: full-time, part-time, contract or internship.",
            "default": ""
          },
          "datePosted": {
            "title": "📅 Posted within",
            "enum": [
              "all",
              "today",
              "3days",
              "week",
              "month"
            ],
            "type": "string",
            "description": "How recently the role was posted, matched against Wellfound's relative posting age.",
            "default": "all"
          },
          "fetchDescriptions": {
            "title": "📝 Fill in missing descriptions",
            "type": "boolean",
            "description": "Wellfound already ships the full description inside the listing payload for effectively every card, so this only fires on the rare card that has none. Leaving it on costs nothing in the normal case.",
            "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. This geo-targets the CONNECTION only and does not filter which jobs are returned. Use the search city field for that.",
            "default": "United States"
          },
          "requestDelay": {
            "title": "⏱️ Delay between page loads (seconds)",
            "minimum": 0,
            "maximum": 60,
            "type": "number",
            "description": "Base pause before each result page loads, plus a small random jitter. Raise it if Wellfound starts serving anti-bot stubs. Default is 1.",
            "default": 1
          },
          "headless": {
            "title": "👁️ Run the browser headless",
            "type": "boolean",
            "description": "Leave on. Turning it off runs a headed browser inside the container virtual display, which is slower and only useful for debugging.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy configuration",
            "type": "object",
            "description": "Wellfound sits behind an anti-bot layer. With nothing configured the actor uses Apify residential sticky sessions and rotates the exit IP on a block. Configure your own proxy here to override that.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}