# Changelog of Upwork Job Scraper | Live Jobs, No Login, Filters & Scoring (`apivault_labs/upwork-job-scraper`) Actor

- **URL**: https://apify.com/apivault_labs/upwork-job-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/apivault_labs/upwork-job-scraper.md

### 2026-10-11

- Distinguish source access failures from a valid empty search and report failed collection explicitly.
- Stop after denied initialization instead of repeating requests.
- Align the conservative job-event budget estimate with existing published rates.
- Document the current service interruption and charges applicable to empty failed runs.

### 2026-10-05

- Read public client and competition details with bounded lookups and qualification filters.
- Include observation dates and explicit private/blocked page statuses.
- Improve request cleanup, source-error handling and accurate dataset billing.
- Move diagnostics out of the dataset and offer a small first run.

## Changelog

### \[0.1.1] — 2026-06-26

- **Lower running cost** — leaner fetching and a 512 MB memory cap (this Actor is
  network-bound, not CPU-bound) for cheaper, predictable runs.
- Keyless by design — no login, no account, no cookies to manage.

### \[0.1.0] — 2026-06-26 — initial release

- **Keyless Upwork job scraping** — pulls public Upwork job listings with no
  login, no account and no cookies.
- **Search** by keyword (`searchQuery`) with recency / relevance sort.
- **Filters**: job type (hourly/fixed), experience level, min budget, required
  skills, urgent-only, min opportunity score.
- **AI-free intelligence**: `opportunityScore` (0-100), `budgetTier`,
  `complexity`, `isUrgent`, `isLongTerm`.
- **Incremental mode** (`onlyNewJobs`) — returns only jobs new since the last run.
- **Pay-per-result** (`job-scraped`): only delivered jobs are billed; filtered /
  duplicate / empty = free. Hard `maxResults` / `maxCostUsd` cost guard.
- Never fails on an empty result; CSV-friendly `flatOutput`; per-run `_summary`.
