# Changelog of PeoplePerHour Scraper — Hourlies, Freelancers & Jobs (`logiover/peopleperhour-scraper`) Actor

- **URL**: https://apify.com/logiover/peopleperhour-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/peopleperhour-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.

- Three row types from one Actor: **hourlies** (PeoplePerHour's fixed-price services), **freelancers** (profiles) and **jobs** (client projects), plus direct hourlie / freelancer / job / listing URLs.
- Reads PeoplePerHour's own JSON API (50 records per request) over a direct connection — no browser, no proxy traffic. Falls back to Apify datacenter and then your proxy only if the API refuses the direct route.
- Hourlies: price as quoted plus PeoplePerHour's own USD / GBP / EUR price list, sales, reviews, average stars, delivery days, add-on extras, full gallery and video, category, tags, buyer requirements and a full seller block (rate, country, CERT level, feedback %, completed jobs, buyers, skills, languages).
- Freelancers: hourly rate in the freelancer's currency and in USD, feedback %, reviews, completed jobs, completion rate, buyers, endorsements, last job, CERT level, verification, skills, languages, portfolio size.
- Jobs: open board and the closed-job archive (~78,000 projects) with budget (own currency and USD), budget type, experience level, proposals, status, dates and the client's hiring history (jobs posted, hires, hire rate) with Include details.
- Filters: keyword, category / subcategory / skill (name, slug or id), country, price, delivery time, freelancer rate (GBP), job status, budget type, experience level, and PeoplePerHour's sort orders.
- Past PeoplePerHour's 10,000-results-per-search limit: searches are split automatically by subcategory, country and price band using PeoplePerHour's own facet counts; every row is de-duplicated by id.
- Fair share of Max results across several searches; exact Max results (no overshoot); stops at the run's time limit with what it has.
- Pay-per-result aware: at the start the run works out how many results its maximum cost covers, plans pages and splits only for those, and stops cleanly at that number (status message + `stoppedBy: "MAX_COST"` in `SUMMARY`) instead of having rows dropped or the run aborted.
- Honest outcomes: a search with no matches succeeds with a clear message; a run that could not reach PeoplePerHour fails with the reason. `SUMMARY` record with request counts, splits and the route used.
