# Changelog of LinkedIn Recruiter Pro (`fixitfoundry/linkedin-recruiter-pro`) Actor

- **URL**: https://apify.com/fixitfoundry/linkedin-recruiter-pro/changelog.md
- **Full Actor documentation**: https://apify.com/fixitfoundry/linkedin-recruiter-pro.md

## Changelog

All notable changes to this project will be documented in this file.

### \[0.2] — 2026-07-05

#### Added

- **Apify proxy integration** — Automatic proxy configuration via `Actor.createProxyConfiguration()`. Reduces Google CAPTCHA blocking in production.
- **Google CAPTCHA detection** — Detects CAPTCHA challenges and logs clear warnings with suggested remediation.
- **Per-query error boundaries** — If one search query fails (CAPTCHA, timeout, etc.), the actor logs the error and continues with remaining queries. No more single-failure-kills-all-runs.
- **Per-profile error handling** — Individual profile processing failures are caught and logged without crashing the run. Partial results are preserved.
- **URL deduplication** — Same profile URL found across multiple search queries is only saved once, preventing duplicate dataset entries and double charging.
- **Configurable email verification API key** — New input field `emailVerificationApiKey` so users can provide their own AbstractAPI key instead of relying on the public demo key.
- **`Actor.log`** — All console output now uses proper Apify logging (`Actor.log.info`, `.warning`, `.error`, `.debug`). Integrates with Apify platform log viewer.
- **Multi-stage Dockerfile** — Smaller final image size, proper non-root user, faster deployments.
- **CHANGELOG.md** — Formal version tracking.

#### Fixed

- **Schema field name alignment** — `dataset_schema.json` and `output_schema.json` field names now match actual code output (`currentCompany`, `currentTitle`, `url`, `estimatedEmail`, `extractedAt`). Previously the schemas used different names causing empty Apify table previews.
- **Unused `cheerio` import** — Removed the unused `const cheerio = require('cheerio')` import.
- **Email verification now uses user-provided API key** — Falls back to Disify free API if no key is provided, instead of silently failing with the public `demo` key.
- **Email enrichment no longer strictly requires company input** — Will attempt enrichment using `currentCompany` extracted from search results if the `company` filter isn't provided.
- **Charging errors are caught** — If `Actor.charge()` fails, it logs a warning instead of crashing the run.

#### Changed

- **README.md** — Now accurately describes what the actor does (and does not do). Removed misleading claims about scraping work history, education, and skills from individual profile pages. Added clear notes about data source limitations.
- **`maxResults` is now capped at 1000** — Prevents accidental runaway runs.
- **Actor metadata** — Updated to include error count and corrected data source disclaimer.

### \[0.1] — Original LinkedIn Recruiter Pro V2

- Email verification integration with confidence scoring
- AI candidate fit scoring (keyword overlap against job description)
- Three search modes: googleDork, directSearch, companyEmployees
- Bulk export: CSV, JSON, JSONL
- Rate limiting & politeness controls
- Pricing and input schema
