# Changelog of Linkedin Jobs Scraper (`alvaraaz/linkedin-jobs-actor`) Actor

- **URL**: https://apify.com/alvaraaz/linkedin-jobs-actor/changelog.md
- **Full Actor documentation**: https://apify.com/alvaraaz/linkedin-jobs-actor.md

## Changelog

All notable changes to the LinkedIn Jobs Scraper Actor will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

### \[1.0.0] - 2026-03-21

#### Added

- **LinkedIn Jobs Scraper**: Complete rewrite to scrape LinkedIn instead of InfoJobs
- **Technology extraction**: Automatic detection of 400+ technologies including programming languages, frameworks, cloud platforms, and tools
- **Input validation with Zod schemas**: All input parameters validated using Zod for type safety
- **Output validation**: All scraped jobs validated before being pushed to the dataset
- **Graceful abort handling**: Actor handles the `aborting` event for clean shutdown
- **Retry logic**: Retry logic with backoff for failed requests
- **Rate limiting**: Configurable delays between requests to avoid blocking
- **Dataset schema**: Organized dataset output schema with table view
- **Documentation**: README.md and TECH.md for comprehensive documentation
- **API Filters**: Support for LinkedIn API filters:
  - Work Model (remote, hybrid, onsite)
  - Job Type (full-time, part-time, contract, temporary, volunteer, internship)
  - Experience Level (internship, entry, associate, mid-senior, director, executive)
  - Time Posted (past\_24\_hours, past\_week, past\_month)
  - Salary (40k-200k USD, only works for some locations)
  - Company ID

#### Changed

- **Package name**: Changed from `infojobs-actor` to `linkedin-jobs-actor`
- **Description**: Updated to reflect LinkedIn scraping
- **Actor name**: Changed to `linkedin-jobs-actor`
- **Runtime**: Uses Cheerio instead of Playwright for faster HTML parsing
- **Architecture**: Refactored with better SOLID principles and separated concerns

#### Removed

- **Infojobs scraper**: Removed InfojobsScraper and related code
- **JobParser (Infojobs)**: Removed Infojobs-specific JobParser
- **Province IDs**: Removed Spanish province ID mappings (not needed for LinkedIn)
- **InfoJobs base URL**: Replaced with LinkedIn base URL
- **Full details mode**: Removed fetchFullDetails option (basic mode only)
- **Extended fields**: Removed salary, experienceLevel, employmentType, applicants from output (not available in basic mode)
- **workModel in output**: Removed workModel from job output (filter only)

#### Technical

- **Dependencies**: Using Bun runtime, Cheerio for HTML parsing
- **Project structure**: Organized into classes, schemas, constants, and utils directories
- **Logging**: Proper use of `apify/log` package with appropriate log levels
- **Error handling**: Improved with `log.exception()` for caught exceptions
- **Generated by**: Updated to track actor generation source
