{
  "openapi": "3.0.1",
  "info": {
    "title": "Platsbanken & Arbetsförmedlingen Jobs Scraper - Sweden",
    "description": "Search all ~40,000 live Swedish job ads on Platsbanken / Arbetsförmedlingen (Arbetsformedlingen) by keyword and city name, no region IDs. Input: keywords, cities, employer, remote, posted-within days. Returns per ad: title, employer, city, SEK salary, deadline, URL. Default: 20. $0.80/1K.",
    "version": "1.0",
    "x-build-id": "cgZjolbWIwBDmKblS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kadi_bence~sweden-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kadi_bence-sweden-jobs-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/kadi_bence~sweden-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kadi_bence-sweden-jobs-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/kadi_bence~sweden-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kadi_bence-sweden-jobs-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "One search per line: job titles, skills or employer names, in Swedish or English (e.g. 'utvecklare', 'data engineer', 'sjuksköterska'). Each line is a separate search; an ad found by several lines is saved once. Most ads are in Swedish, so add Swedish terms too. Put places in 'Locations', not here. Leave empty to get all jobs matching the filters below.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (municipality or county)",
            "type": "array",
            "description": "Swedish municipalities (Stockholm, Göteborg / Gothenburg, Malmö...) or counties (Skåne län, Västra Götalands län...). Codes like 0180 (municipality) or 12 (county) work too. A bare name means the municipality: 'Stockholm' is the city, 'Stockholms län' the whole county. Unknown names are ignored with a warning; if none is known, the run stops. Leave empty for all of Sweden.",
            "items": {
              "type": "string"
            }
          },
          "occupationFields": {
            "title": "Occupation fields",
            "type": "array",
            "description": "Only jobs in these occupation fields (yrkesområden). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "it",
                "healthcare",
                "education",
                "engineering_technical",
                "construction",
                "transport_logistics",
                "sales_purchasing_marketing",
                "administration_finance_law",
                "hospitality_restaurants",
                "manufacturing",
                "installation_maintenance",
                "social_work",
                "management",
                "culture_media_design",
                "natural_sciences",
                "crafts",
                "agriculture_forestry",
                "beauty_personal_care",
                "cleaning_sanitation",
                "security",
                "military"
              ],
              "enumTitles": [
                "IT (Data/IT)",
                "Healthcare (Hälso- och sjukvård)",
                "Education (Pedagogik)",
                "Engineering / technical (Teknisk inriktning)",
                "Construction (Bygg och anläggning)",
                "Transport, logistics, warehouse",
                "Sales, purchasing, marketing",
                "Administration, finance, law",
                "Hotels, restaurants, catering",
                "Manufacturing (Industriell tillverkning)",
                "Installation, operations, maintenance",
                "Social work (Social inriktning)",
                "Management (Chefer)",
                "Culture, media, design",
                "Natural sciences",
                "Crafts (Hantverk)",
                "Agriculture, forestry, animals (Naturbruk)",
                "Beauty and personal care",
                "Cleaning and sanitation",
                "Security",
                "Military"
              ]
            }
          },
          "employer": {
            "title": "Employer",
            "type": "string",
            "description": "Only jobs from this employer: name (e.g. 'Volvo Car Corporation') or organisation number (e.g. 556074-3089)."
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "permanent",
                "fixed_term",
                "substitute",
                "on_call",
                "seasonal"
              ],
              "enumTitles": [
                "Permanent (tillsvidare)",
                "Fixed-term (tidsbegränsad)",
                "Substitute (vikariat)",
                "On call (behovsanställning)",
                "Seasonal (säsong)"
              ]
            }
          },
          "workingTime": {
            "title": "Working time",
            "enum": [
              "any",
              "full_time",
              "part_time"
            ],
            "type": "string",
            "description": "Full-time or part-time.",
            "default": "any"
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Only ads that mention remote work (distans / hemifrån), as classified by Arbetsförmedlingen.",
            "default": false
          },
          "noExperienceRequired": {
            "title": "No experience required",
            "type": "boolean",
            "description": "Only jobs that do not require previous work experience (good for students and juniors).",
            "default": false
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only ads published in the last N days. Leave empty for any date."
          },
          "coordinates": {
            "title": "Near coordinates (lat,lon)",
            "type": "string",
            "description": "Optional radius search around a point, e.g. '59.33,18.07' (central Stockholm). Use together with 'Radius'."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Radius around the coordinates above.",
            "default": 10
          },
          "dataSource": {
            "title": "Data source",
            "enum": [
              "current",
              "historical"
            ],
            "type": "string",
            "description": "'Current ads' = live Platsbanken ads. 'Historical ads' = Arbetsförmedlingen's archive of every ad since 2016 (8M+), for research and trend analysis. Always set a date range below (or a keyword / location) when you use the archive.",
            "default": "current"
          },
          "publishedFrom": {
            "title": "Published from (date)",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2}.*)?$",
            "type": "string",
            "description": "Only ads published on or after this date, YYYY-MM-DD. Works for both sources."
          },
          "publishedTo": {
            "title": "Published to (date)",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2}.*)?$",
            "type": "string",
            "description": "Only ads published on or before this date, YYYY-MM-DD."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many jobs in total, across all keywords. 0 = no limit (all ~40,000 live ads without filters). You pay per saved job, so this also caps the cost. The default without input (API, MCP and AI-agent calls) is 20.",
            "default": 20
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "text",
              "html",
              "both",
              "none"
            ],
            "type": "string",
            "description": "Full job description as plain text, HTML, both, or none (smaller dataset).",
            "default": "text"
          },
          "stripContactInfo": {
            "title": "Remove contact persons, e-mails and phone numbers",
            "type": "boolean",
            "description": "Recommended (GDPR). Removes the names of listed contact persons, e-mail addresses and phone numbers from descriptions.",
            "default": true
          },
          "onlyNewJobs": {
            "title": "Only new jobs (monitoring mode)",
            "type": "boolean",
            "description": "Remember returned jobs and output only NEW ones on the next runs with the same search (items get isNew: true). The first run outputs all matching ads as a baseline. Ideal for daily schedules. You only pay for new jobs.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Separate 'already seen' lists for different schedules with the same search. Use a new name to start over.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed: Arbetsförmedlingen's official API is open and needs no key. Leave it off.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}