# Changelog of Wellfound Scraper — Startup Jobs, Salaries & Companies (`logiover/wellfound-scraper`) Actor

- **URL**: https://apify.com/logiover/wellfound-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/wellfound-scraper.md

## Changelog

### 2026-10-15

- A run that reaches its maximum cost per run now stops cleanly with its results saved and a status message, instead of ending as aborted.
- A proxy group your account cannot use no longer stops the run at start-up; it falls back to the default Apify Proxy.

### 2026-10-13

First release.

- Role × location search with plain-word aliases (SWE, PM, ML engineer, NYC, SF, DC, UK, USA …); `all` searches every Wellfound role page (115) plus the remote board — 10,000 jobs measured in about 100 s.
- When Wellfound has no role × location page, the smaller of the role's pages and the location's pages is read and filtered, so the search still returns the right jobs.
- Multi-pass reading: Wellfound shuffles its result pages on every request, so the scraper keeps walking a search while new jobs keep appearing (software engineer: 1,757 of 1,768 startups reached).
- The row limit is shared fairly between searches; de-duplication by job ID (company ID in Companies mode); stops at exactly Max results.
- Jobs mode and Companies mode (one row per hiring startup with its matching jobs).
- Parsed salary (min / max / currency / period) and equity (min / max %), workplace type, experience, applicant tracking system.
- Options: job details (visa sponsorship, relocation, skills, hiring contact, exact salary), company profile (website, HQ, industries, total raised, latest round, founders, team background), company links (LinkedIn, X/Twitter, Facebook, blog, Product Hunt, open-job count) and all open jobs of each company.
- Residential proxy with sticky sessions and hedged requests; company pages through the unblocking proxy in their own lane.
- Unknown role or location ends as a successful empty run with an explanation and suggestions; a site that cannot be reached fails with the reason. `SUMMARY` record with per-search totals.
- Reads the run's "Maximum cost per run" at start and collects exactly the results it covers, then stops as SUCCEEDED with a message (never ABORTED, no pages fetched for rows that could not be saved). `SUMMARY` gains `stoppedBy`, `requestedResults`, `affordableResults`.
- Default memory 2 GB: the scraper is CPU-bound, so long runs finish about twice as fast for the same compute cost.
