# Arbetsformedlingen Jobs Search Scraper (`alexist/arbetsformedlingen-jobs-search-scraper`) Actor

Automate job data extraction from Arbetsformedlingen.se (Sweden's Public Employment Service). This scraper captures job titles, occupations, workplace details, application deadlines, and more — essential for recruiters, researchers, and labor market analysts.

- **URL**: https://apify.com/alexist/arbetsformedlingen-jobs-search-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Arbetsformedlingen Scraper: Extract Swedish Job Listings Instantly
---

### What Is Arbetsformedlingen?

Arbetsformedlingen (Swedish Public Employment Service) is Sweden's official labor market platform, connecting job seekers with thousands of active vacancies. Platsbanken, its integrated job search engine, lists positions across all industries — from tech to healthcare. For recruiters, analysts, and market researchers, manually extracting this data is inefficient. The **Arbetsformedlingen Jobs Scraper** automates the process, delivering clean, structured job records in seconds.

---

### Overview

The **Arbetsformedlingen Jobs Scraper** searches Platsbanken by keyword and extracts job listing summaries from search results. It is ideal for:

- **Swedish recruiters** tracking local job market trends
- **HR consultants** building talent pipelines and market intelligence
- **Researchers** analyzing Swedish labor demand patterns
- **Job aggregators** syndicating Swedish employment data
- **Career services** monitoring opportunities by industry or region

The scraper handles multiple search queries simultaneously, continues on failed URLs via `ignore_url_failures`, and delivers up to 20 results per search by default.

---

### Input Format

The scraper accepts a JSON configuration with three main parameters:

```json
{
  "urls": [
    "https://arbetsformedlingen.se/platsbanken/annonser?q=design"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
````

#### Input Parameter Details

| Parameter | Type | Description | Example |
|-----------|------|-------------|---------|
| `urls` | array | List of Platsbanken search result URLs with keyword filters | `["https://arbetsformedlingen.se/platsbanken/annonser?q=design"]` |
| `ignore_url_failures` | boolean | If `true`, the scraper skips failed URLs and continues; if `false`, it stops on the first error | `true` |
| `max_items_per_url` | integer | Maximum number of job listings to extract per search URL | `20` |

**Usage Tips:**

- Use the `q=` parameter to filter by keyword (e.g., `q=design`, `q=systemutvecklare`, `q=sjuksköterska`)
- Add additional filters to the URL if needed (e.g., location, industry)
- Set `max_items_per_url` between 1–100 depending on your data volume needs
- Enable `ignore_url_failures` for robust, production-grade runs

***

### Output Format

**Sample output**

```json
{
  "id": "31252691",
  "last_application_date": "2026-08-31T21:59:59Z",
  "occupation": "Utvecklingsingenjör, tillverkningsindustri",
  "positions": 1,
  "published": true,
  "published_date": "2026-07-06T13:36:41Z",
  "source_links": [],
  "title": "Design Engineer",
  "unspecified_workplace": false,
  "workplace": "Landskrona",
  "workplace_name": "Haldex AB",
  "from_url": "https://arbetsformedlingen.se/platsbanken/annonser?q=design"
}
```

Each job listing captured includes 11 key fields that provide comprehensive job metadata:

#### Job Identification

| Field | Meaning |
|---|---|
| `ID` | Unique Arbetsformedlingen identifier for the job listing |
| `Title` | Job title as displayed in Platsbanken (e.g., "UX Designer", "Receptionist") |
| `Occupation` | Standardized occupational category assigned by Arbetsformedlingen |

#### Job Activity & Availability

| Field | Meaning |
|---|---|
| `Published` | Boolean indicating whether the listing is currently active/published |
| `Published Date` | Date the job was first published on Platsbanken |
| `Last Application Date` | Final deadline for submitting applications; critical for time-sensitive roles |
| `Positions` | Number of open positions available for this role |

#### Workplace & Location

| Field | Meaning |
|---|---|
| `Workplace` | Name and details of the employing organization |
| `Workplace Name` | Clean employer name (useful for aggregation and deduplication) |
| `Unspecified Workplace` | Boolean flag indicating if workplace location is hidden or unspecified |

#### Additional Data

| Field | Meaning |
|---|---|
| `Source Links` | Direct URL(s) to the original job posting or application portal |

***

### How to Use

1. **Build search URLs** — Navigate to Platsbanken and perform a keyword search. Copy the result page URL (e.g., `https://arbetsformedlingen.se/platsbanken/annonser?q=systemutvecklare`).
2. **Add URLs to input** — Paste one or more search URLs into the `urls` array.
3. **Configure limits** — Set `max_items_per_url` to the number of listings you need (default: 20). For large-scale scrapes, increase this value.
4. **Enable resilience** — Set `ignore_url_failures: true` to avoid interruption if any URL fails.
5. **Run and export** — Launch the scraper and download results as JSON, CSV, or Excel.

**Troubleshooting:**

- If no results appear, verify the URL is a Platsbanken *search results* page, not a detail page.
- Check that your keyword query returns listings (test in browser first).
- Increase `max_items_per_url` if you need more than 20 results per search.

***

### Use Cases & Business Value

- **Market intelligence:** Track hiring demand in Sweden by job title, industry, and region
- **Recruitment pipeline:** Identify promising candidates and emerging skill gaps
- **Labor analytics:** Study wage trends, application deadlines, and sector growth
- **Job aggregation:** Feed Swedish listings into multi-country job boards
- **Educational research:** Analyze employer demand and curriculum alignment

By automating data extraction from Platsbanken, you eliminate manual copying, ensure data consistency, and unlock insights that inform hiring strategy and market analysis.

***

### Conclusion

The **Arbetsformedlingen Jobs Scraper** is a powerful tool for anyone working with Swedish labor market data. Whether you're a recruiter tracking market trends or a researcher analyzing employment patterns, this scraper delivers clean, structured records from Sweden's largest public job platform. Start with a simple keyword search, scale up with bulk URLs, and turn Platsbanken listings into actionable intelligence.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Jobs list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://arbetsformedlingen.se/platsbanken/annonser?q=design"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://arbetsformedlingen.se/platsbanken/annonser?q=design"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/arbetsformedlingen-jobs-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://arbetsformedlingen.se/platsbanken/annonser?q=design"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/arbetsformedlingen-jobs-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://arbetsformedlingen.se/platsbanken/annonser?q=design"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call alexist/arbetsformedlingen-jobs-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=alexist/arbetsformedlingen-jobs-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Arbetsformedlingen Jobs Search Scraper",
        "description": "Automate job data extraction from Arbetsformedlingen.se (Sweden's Public Employment Service). This scraper captures job titles, occupations, workplace details, application deadlines, and more — essential for recruiters, researchers, and labor market analysts.",
        "version": "0.0",
        "x-build-id": "9d2I5k97Xrgc0RhcP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/alexist~arbetsformedlingen-jobs-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-alexist-arbetsformedlingen-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/alexist~arbetsformedlingen-jobs-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-alexist-arbetsformedlingen-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/alexist~arbetsformedlingen-jobs-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-alexist-arbetsformedlingen-jobs-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the Jobs list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Jobs list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
