# Scrape Personio and Recruitee Job Boards

**Use case:** 

Extract open roles from Personio and Recruitee career boards into one normalized dataset with job IDs, locations, departments, descriptions, and compensation.

## Input

```json
{
  "boards": [
    {
      "url": "https://personio.jobs.personio.de/xml",
      "company": "Personio"
    },
    {
      "url": "https://jobs.recruitee.com/api/offers",
      "company": "Tellent"
    }
  ],
  "companyUrls": [],
  "catalog": {
    "enabled": false,
    "key": "default",
    "bootstrapBundled": false,
    "process": true,
    "chunkSize": 100,
    "staleAfterDays": 7,
    "expireAfterDays": 30,
    "maxConsecutiveFailures": 5,
    "retryAfterMinutes": 60,
    "includeStatuses": [
      "PENDING",
      "ACTIVE",
      "RETRY",
      "STALE"
    ]
  },
  "outputMode": "jobs",
  "stateKey": "task-scrape-personio-recruitee-jobs",
  "includeDescriptions": true,
  "includeCompensation": true,
  "emitInitialSnapshotChanges": true,
  "maxConcurrency": 4,
  "requestTimeoutSecs": 30,
  "maxRequestRetries": 2,
  "failOnBoardError": false,
  "discoveryMaxPages": 5,
  "failOnDiscoveryError": false,
  "freshnessSlaMinutes": 10
}
```

## Output

```json
{
  "recordType": {
    "label": "Record type",
    "format": "string"
  },
  "eventType": {
    "label": "Event type",
    "format": "string"
  },
  "status": {
    "label": "Status",
    "format": "string"
  },
  "title": {
    "label": "Title",
    "format": "string"
  },
  "company": {
    "label": "Company",
    "format": "string"
  },
  "ats": {
    "label": "Ats",
    "format": "string"
  },
  "boardSlug": {
    "label": "Board slug",
    "format": "string"
  },
  "boardOrigin": {
    "label": "Board origin",
    "format": "string"
  },
  "companyId": {
    "label": "Company id",
    "format": "string"
  },
  "isDuplicate": {
    "label": "Is duplicate",
    "format": "boolean"
  },
  "duplicateGroupId": {
    "label": "Duplicate group id",
    "format": "string"
  },
  "primaryLocation": {
    "label": "Primary location",
    "format": "string"
  },
  "dachRegion": {
    "label": "Dach region",
    "format": "string"
  },
  "employmentType": {
    "label": "Employment type",
    "format": "string"
  },
  "workplaceType": {
    "label": "Workplace type",
    "format": "string"
  },
  "kldb": {
    "label": "Kldb",
    "format": "object"
  },
  "publishedAt": {
    "label": "Published at",
    "format": "string"
  },
  "detectedAt": {
    "label": "Detected at",
    "format": "string"
  },
  "sourceUrl": {
    "label": "Source",
    "format": "string"
  }
}
```

## About this Actor

This example demonstrates how to use [ATS Jobs Scraper API - Greenhouse, Workday, Lever & Ashby](https://apify.com/kamerozkan/ats-job-change-feed) with a specific input configuration. Visit the [Actor detail page](https://apify.com/kamerozkan/ats-job-change-feed) to learn more, explore other use cases, and run it yourself.