{
  "openapi": "3.0.1",
  "info": {
    "title": "Platsbanken Jobs API: Sweden Arbetsförmedlingen",
    "description": "Swedish job ads from Platsbanken via Arbetsformedlingen's official JobTech API. Filter by keyword, occupation, county, municipality, remote, employment type and date. Employer, org number, salary, deadline, skills, apply link and full ad text. Only-new mode for daily job alerts.",
    "version": "1.0",
    "x-build-id": "4yuUyCR8jBtas5Bt2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/adamhaleworks~platsbanken-jobs-api-sweden/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-adamhaleworks-platsbanken-jobs-api-sweden",
        "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/adamhaleworks~platsbanken-jobs-api-sweden/runs": {
      "post": {
        "operationId": "runs-sync-adamhaleworks-platsbanken-jobs-api-sweden",
        "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/adamhaleworks~platsbanken-jobs-api-sweden/run-sync": {
      "post": {
        "operationId": "run-sync-adamhaleworks-platsbanken-jobs-api-sweden",
        "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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Free-text search, the same as the Platsbanken search box: headline, ad text and employer name. Several keywords widen the search (any of them), and Swedish or English job titles work (utvecklare, developer, sjuksköterska). A place name in a keyword narrows the search to that place. Multi-word entries are searched as phrases; a trailing * matches word endings (muse*). Empty = all ads.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Counties (län)",
            "type": "array",
            "description": "Swedish counties by name (Stockholm, Västra Götaland, Skåne, Uppsala, Östergötland, Norrbotten, …) or two-digit code (01 = Stockholm, 14 = Västra Götaland, 12 = Skåne). Counties and municipalities together are combined with OR.",
            "items": {
              "type": "string"
            }
          },
          "municipalities": {
            "title": "Municipalities (kommun)",
            "type": "array",
            "description": "Swedish municipalities by name (Göteborg or Gothenburg, Malmö, Uppsala, Linköping, …) or four-digit code (0180 = Stockholm, 1480 = Göteborg, 1280 = Malmö).",
            "items": {
              "type": "string"
            }
          },
          "publishedWithinDays": {
            "title": "Published in the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only ads published in the last N days. 0 = all currently published ads. Ignored when \"Published after\" is set. For daily alerts use 2 together with \"Only new ads\".",
            "default": 0
          },
          "occupations": {
            "title": "Occupations",
            "type": "array",
            "description": "Arbetsförmedlingen's occupation taxonomy (Swedish names): an occupation field (Data/IT, Hälso- och sjukvård, Pedagogik, Bygg och anläggning), an occupation group (Mjukvaru- och systemutvecklare m.fl.), an occupation (Systemutvecklare/Programmerare), a four-digit SSYK code (2512) or a concept id. Matching is stricter than keywords because it uses the occupation the employer chose. Several values = any of them.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop ads that contain any of these words or phrases in the headline, ad text or employer name (for example senior, konsult).",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Only remote-friendly ads",
            "type": "boolean",
            "description": "Arbetsförmedlingen's remote filter: ads that mention working remotely or from home (arbeta på distans, jobba hemifrån, remote work, delvis på distans, …). It is phrase-based, so it also includes partly remote jobs.",
            "default": false
          },
          "workplaceModels": {
            "title": "Workplace model",
            "type": "array",
            "description": "The workplace model set by the employer: remote, hybrid or on site. Few ads set it (about 6% in our checks), so this filter returns far fewer ads than \"Only remote-friendly ads\".",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onSite"
              ],
              "enumTitles": [
                "Remote (distansarbete)",
                "Hybrid (hybridarbete)",
                "On site (arbete på plats)"
              ]
            }
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Permanent includes ads marked as regular employment (vanlig anställning). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "permanent",
                "temporary",
                "substitute",
                "onCall",
                "seasonal",
                "summerJob"
              ],
              "enumTitles": [
                "Permanent (tillsvidare)",
                "Fixed-term (tidsbegränsad)",
                "Substitute (vikariat)",
                "On call (behovsanställning)",
                "Seasonal (säsongsanställning)",
                "Summer job (sommarjobb)"
              ]
            }
          },
          "workingHours": {
            "title": "Working hours",
            "type": "array",
            "description": "Full time (heltid) or part time (deltid). Empty = both.",
            "items": {
              "type": "string",
              "enum": [
                "fullTime",
                "partTime"
              ],
              "enumTitles": [
                "Full time (heltid)",
                "Part time (deltid)"
              ]
            }
          },
          "experience": {
            "title": "Experience",
            "enum": [
              "any",
              "required",
              "notRequired"
            ],
            "type": "string",
            "description": "\"Not required\" keeps ads where the employer ticked that no experience is needed (good for juniors and students).",
            "default": "any"
          },
          "drivingLicence": {
            "title": "Driving licence",
            "enum": [
              "any",
              "required",
              "notRequired"
            ],
            "type": "string",
            "description": "Whether the ad requires a driving licence.",
            "default": "any"
          },
          "employers": {
            "title": "Employers (organisation number or name)",
            "type": "array",
            "description": "Swedish organisation numbers (556036-0793 or 5560360793) or employer names. Numbers match as a prefix, so 2 = all public-sector employers (state, regions and municipalities).",
            "items": {
              "type": "string"
            }
          },
          "publishedAfter": {
            "title": "Published after (date)",
            "type": "string",
            "description": "Only ads published after this date or time, for example 2026-10-01 or 2026-10-01T08:00 (Swedish time). Overrides \"Published in the last N days\"."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "relevance",
              "deadlineSoonest",
              "deadlineLatest"
            ],
            "type": "string",
            "description": "Newest first is the default. Relevance and deadline sorting reach at most 2,100 ads per search (an API limit); newest and oldest have no such limit.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max job ads",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many ads. 0 = up to 50,000.",
            "default": 1000
          },
          "onlyNew": {
            "title": "Only new ads since the last run (job alerts)",
            "type": "boolean",
            "description": "Remember which ads were already output for this search and skip them next time. Schedule the actor daily with \"Published in the last N days\" = 2 to get a job alert. The first run outputs all matches.",
            "default": false
          },
          "stateStoreName": {
            "title": "Alert memory store name",
            "type": "string",
            "description": "Named key-value store that remembers output ads for \"Only new\" mode. Each different search keeps its own memory inside it.",
            "default": "platsbanken-jobs-state"
          },
          "includeDescription": {
            "title": "Include ad text",
            "type": "boolean",
            "description": "Add the full ad text (description) and conditions. E-mail addresses, phone numbers and personal identity numbers are removed.",
            "default": true
          },
          "descriptionMaxLength": {
            "title": "Max ad text length (characters)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cut the ad text after this many characters. 0 = full text.",
            "default": 0
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 10,
            "maximum": 300,
            "type": "integer",
            "description": "Timeout for one API request.",
            "default": 60
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Retries for network errors, rate limits (HTTP 429, waiting as long as the API asks) and server errors.",
            "default": 4
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}