{
  "openapi": "3.0.1",
  "info": {
    "title": "XING Jobs Scraper API - Germany, Austria, Switzerland",
    "description": "Scrape jobs from XING in Germany, Austria and Switzerland. Each row has the company, employment type, career level and the apply link. It says if the job is remote, hybrid or on-site. You get the posted time, and the salary when XING shows one. Estimated salaries are flagged. $0.51 per 1,000 jobs.",
    "version": "0.1",
    "x-build-id": "mVHqDBTfutoM3A1Fb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~xing-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-xing-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/dami_studio~xing-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-xing-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/dami_studio~xing-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-xing-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": {
          "searchQueries": {
            "title": "Job keywords",
            "type": "array",
            "description": "One or more job searches, exactly as you would type them into XING. German or English both work. Each keyword is walked separately, so [\"Softwareentwickler\", \"Data Analyst\"] runs two searches.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "A city in the DACH area, for example \"Berlin\", \"Wien\" or \"Zürich\". Leave empty to search all of XING.\n\nA country name (\"Deutschland\", \"Österreich\", \"Schweiz\") also works, but note what XING does with it: XING's own location filter only resolves places, so it accepts a country name and then ignores it, returning its whole Germany + Austria + Switzerland ranking. This actor therefore keeps only the postings XING itself labels with that country - see \"Keep only jobs in the country you named\" below. A city is far more precise, so prefer one where you can."
          },
          "radius": {
            "title": "Radius (km)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Search radius around the location, in kilometres. Only used when a location is set. XING applies this to cities only; it has no meaning for a country."
          },
          "restrictToCountry": {
            "title": "Keep only jobs in the country you named",
            "type": "boolean",
            "description": "Applies only when \"Location\" names a country. XING ignores a country in its location box and returns postings from all of Germany, Austria and Switzerland, so with this on the actor drops the ones whose XING-reported country is not the one you asked for. Skipped postings are never charged, and the run keeps reading until it has the number you asked for.\n\nTurn this off if you want everything XING returns - for example if you are happy to see Austrian and Swiss postings in a German search. A city location is never filtered either way, so a cross-border search like \"Basel\" with a 50 km radius always keeps its German results.",
            "default": true
          },
          "remoteOption": {
            "title": "Workplace",
            "enum": [
              "",
              "remote",
              "hybrid",
              "onsite"
            ],
            "type": "string",
            "description": "Restrict to fully remote, hybrid (home office part of the week) or on-site postings.",
            "default": ""
          },
          "employmentType": {
            "title": "Employment type",
            "enum": [
              "",
              "full-time",
              "part-time",
              "contractor",
              "intern",
              "temporary",
              "seasonal",
              "voluntary"
            ],
            "type": "string",
            "description": "Restrict to one contract type. The labels in brackets are XING's own German wording.",
            "default": ""
          },
          "careerLevel": {
            "title": "Career level",
            "enum": [
              "",
              "student",
              "entry-level",
              "experienced",
              "manager",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Restrict to XING's seniority band for the role.",
            "default": ""
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "",
              "day",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only postings XING refreshed inside this window. Every row also carries the exact posted date, so you can filter afterwards too.",
            "default": ""
          },
          "salaryMin": {
            "title": "Minimum salary (EUR / year)",
            "minimum": 0,
            "type": "integer",
            "description": "Only postings at or above this yearly salary. XING applies this to the figure it holds for the posting, which is often its own estimate rather than an employer-published number."
          },
          "startUrls": {
            "title": "XING URLs",
            "type": "array",
            "description": "Paste XING URLs instead of building a search. Works with a single posting (https://www.xing.com/jobs/berlin-data-analyst-155853218) and with a search page (https://www.xing.com/jobs/search?keywords=data%20analyst&location=Berlin).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "includeDescription": {
            "title": "Include the full job description",
            "type": "boolean",
            "description": "Adds the complete posting text as HTML and as plain text. It comes from the same request, so this costs no extra time and no extra charge - it only makes the rows larger.",
            "default": false
          },
          "resultLanguage": {
            "title": "Label language",
            "enum": [
              "de",
              "en"
            ],
            "type": "string",
            "description": "Language for XING's own labels (employment type, career level, industry). The posting text itself is always in whatever language the employer wrote it.",
            "default": "de"
          },
          "maxItems": {
            "title": "Maximum postings",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many postings. XING serves at most ~1,000 results per individual search, so use several keywords or locations to go beyond that.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave as is. The actor already routes through addresses XING answers in full; supply your own servers here only if you have a reason to.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}