{
  "openapi": "3.0.1",
  "info": {
    "title": "Swedish Jobs Scraper - Platsbanken API",
    "description": "Scrape all Swedish job ads from Platsbanken via Arbetsförmedlingen's official JobTech API. Get title, employer, org number, occupation, location, salary type, skills and apply URL. New/removed-ad tracking and 'companies hiring' lists. JSON/CSV/Excel, API or MCP.",
    "version": "1.0",
    "x-build-id": "M0SXbzkNWUGwyEpQ9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/teddythebuilder~swedish-jobs-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-teddythebuilder-swedish-jobs-monitor",
        "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/teddythebuilder~swedish-jobs-monitor/runs": {
      "post": {
        "operationId": "runs-sync-teddythebuilder-swedish-jobs-monitor",
        "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/teddythebuilder~swedish-jobs-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-teddythebuilder-swedish-jobs-monitor",
        "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": {
          "outputType": {
            "title": "Output",
            "enum": [
              "ads",
              "employers"
            ],
            "type": "string",
            "description": "ads = clean job-ad records. employers = 'companies hiring now' lead list: one row per employer org number with open ads, occupations and locations.",
            "default": "ads"
          },
          "query": {
            "title": "Search text",
            "type": "string",
            "description": "Free text, same as the Platsbanken search box. Example: 'python', 'sjuksköterska' or 'lagerarbetare göteborg'. Leave empty for all ads."
          },
          "occupationFields": {
            "title": "Occupation fields",
            "type": "array",
            "description": "Arbetsförmedlingen occupation fields. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "X82t_awd_Qyc",
                "VuuL_7CH_adj",
                "Uuf1_GMh_Uvw",
                "whao_Q6A_ScE",
                "j7Cq_ZJe_GkT",
                "PaxQ_o1G_wWH",
                "9puE_nYg_crq",
                "MVqp_eS8_kDZ",
                "6Hq3_tKo_V57",
                "NYW6_mP6_vwf",
                "ScKy_FHB_7wT",
                "apaJ_2ja_LuF",
                "yhCP_AqT_tns",
                "bh3H_Y3h_5eD",
                "wTEr_CBC_bqh",
                "bH5L_uXD_ZAX",
                "kJeN_wmw_9wX",
                "RPTn_bxG_ExZ",
                "E7hm_BLq_fqZ",
                "GazW_2TU_kJw",
                "ASGV_zcE_bWf"
              ],
              "enumTitles": [
                "Administration, finance, legal (Administration, ekonomi, juridik)",
                "Agriculture, forestry, nature (Naturbruk)",
                "Beauty and body care (Kropps- och skönhetsvård)",
                "Cleaning and sanitation (Sanering och renhållning)",
                "Construction (Bygg och anläggning)",
                "Crafts (Hantverk)",
                "Culture, media, design (Kultur, media, design)",
                "Education (Pedagogik)",
                "Engineering / technical (Yrken med teknisk inriktning)",
                "Healthcare (Hälso- och sjukvård)",
                "Hotel, restaurant, catering (Hotell, restaurang, storhushåll)",
                "IT / software (Data/IT)",
                "Installation, operation, maintenance (Installation, drift, underhåll)",
                "Managers (Chefer och verksamhetsledare)",
                "Manufacturing (Industriell tillverkning)",
                "Military (Militära yrken)",
                "Natural sciences (Naturvetenskap)",
                "Sales, purchasing, marketing (Försäljning, inköp, marknadsföring)",
                "Security (Säkerhet och bevakning)",
                "Social work (Yrken med social inriktning)",
                "Transport, logistics, warehouse (Transport, distribution, lager)"
              ]
            }
          },
          "regions": {
            "title": "Regions (län)",
            "type": "array",
            "description": "Empty = whole Sweden.",
            "items": {
              "type": "string",
              "enum": [
                "CifL_Rzy_Mku",
                "zdoY_6u5_Krt",
                "CaRE_1nn_cSU",
                "zBon_eET_fFU",
                "oLT3_Q9p_3nn",
                "MtbE_xWT_eMi",
                "s93u_BEb_sx2",
                "G6DV_fKE_Viz",
                "xTCk_nT5_Zjm",
                "wjee_qH2_yb6",
                "EVVp_h6U_GSZ",
                "oDpK_oZ2_WYt",
                "zupA_8Nt_xcD",
                "NvUF_SP1_1zo",
                "65Ms_7r1_RTG",
                "g5Tt_CAV_zBd",
                "9hXe_F4g_eTG",
                "9QUH_2bb_6Np",
                "tF3y_MF9_h5G",
                "DQZd_uYs_oKb",
                "K8iD_VQv_2BA"
              ],
              "enumTitles": [
                "Stockholms län",
                "Västra Götalands län",
                "Skåne län",
                "Uppsala län",
                "Östergötlands län",
                "Jönköpings län",
                "Södermanlands län",
                "Västmanlands län",
                "Örebro län",
                "Hallands län",
                "Värmlands län",
                "Dalarnas län",
                "Gävleborgs län",
                "Västernorrlands län",
                "Jämtlands län",
                "Västerbottens län",
                "Norrbottens län",
                "Kalmar län",
                "Kronobergs län",
                "Blekinge län",
                "Gotlands län"
              ]
            }
          },
          "municipalityCodes": {
            "title": "Municipality codes",
            "type": "array",
            "description": "Optional 4-digit kommun codes, e.g. 0180 Stockholm, 1480 Göteborg, 1280 Malmö.",
            "items": {
              "type": "string"
            }
          },
          "employerOrgNumbers": {
            "title": "Employer org numbers",
            "type": "array",
            "description": "Only ads from these employers (e.g. track competitors' or customers' hiring).",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Only ads marked as remote work.",
            "default": false
          },
          "publishedWithinDays": {
            "title": "Published within last N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only ads published in the last N days. Use 365 to include all currently open ads (~40,000).",
            "default": 3
          },
          "onlyNew": {
            "title": "Monitor mode: only new since last run (+ removed ads)",
            "type": "boolean",
            "description": "Outputs only ads you have not received before (eventType 'new') and, for ads you received earlier, a 'removed' event when they are taken down (usually = position filled). Schedule daily.",
            "default": false
          },
          "includeRemoved": {
            "title": "Include removed-ad events (monitor mode)",
            "type": "boolean",
            "description": "Emit eventType 'removed' rows for previously delivered ads that were unpublished since the last run.",
            "default": true
          },
          "monitorId": {
            "title": "Monitor ID",
            "type": "string",
            "description": "Name of this saved search for monitor mode.",
            "default": "default"
          },
          "includeDescription": {
            "title": "Include ad description text",
            "type": "boolean",
            "description": "E-mail addresses and phone numbers in the text are redacted.",
            "default": true
          },
          "descriptionMaxChars": {
            "title": "Max description length",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Truncate descriptions (0 = no limit).",
            "default": 3000
          },
          "maxAdsToScan": {
            "title": "Max ads to scan (employers mode)",
            "minimum": 100,
            "maximum": 100000,
            "type": "integer",
            "description": "How many ads to read when aggregating employers. Scanning is free; you pay per employer row.",
            "default": 5000
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Maximum rows to output; each row is one billable result. Example: 20 for a quick test, 5000 for a full daily export.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}