{
  "openapi": "3.0.1",
  "info": {
    "title": "XING Jobs Scraper - German Job Listings & Salary Data API",
    "description": "Extract public XING job postings across the DACH market: title, company, location, employment type, career level, industry and XING's own structured salary estimate with minimum, median and maximum.",
    "version": "0.1",
    "x-build-id": "YZYEmK8UVK6iuyaDK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~xing-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-xing-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/parseforge~xing-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-xing-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/parseforge~xing-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-xing-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": {
          "keyword": {
            "title": "Job keyword",
            "type": "string",
            "description": "Job title, skill or keyword. Matched against the posting title and XING's own keyword list. Leave empty to take every job in the scanned sitemap shards."
          },
          "keywords": {
            "title": "More keywords",
            "type": "array",
            "description": "Run several keyword filters in one go. A job matching any of them is kept.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "German, Austrian or Swiss city name, for example Berlin, Hamburg, Wien or Zürich."
          },
          "cities": {
            "title": "More cities",
            "type": "array",
            "description": "Several cities in one run. A job in any of them is kept.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobUrls": {
            "title": "Job URLs",
            "type": "array",
            "description": "Specific XING job URLs or slugs to fetch, skipping discovery entirely. Accepts https://www.xing.com/jobs/<slug>, a bare slug, or the numeric job id.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of jobs written to the dataset. A ceiling, not a target — a narrow filter returns fewer.",
            "default": 100
          },
          "maxSitemapShards": {
            "title": "Sitemap shards to scan",
            "minimum": 1,
            "maximum": 13,
            "type": "integer",
            "description": "Upper bound on how deep discovery digs. XING publishes its jobs across 13 sitemap shards of 50,000 URLs each, oldest first, and this Actor reads them newest-first. It stops as soon as it has enough candidates, so a broad run touches one shard and only a narrow filter reaches the full 13. Each shard actually read is one sitemap-scan event.",
            "default": 13
          },
          "salaryMin": {
            "title": "Minimum salary (EUR/CHF per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose salary range reaches at least this figure. Jobs with no salary published are dropped by this filter."
          },
          "salaryMax": {
            "title": "Maximum salary (EUR/CHF per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose salary range starts at or below this figure."
          },
          "onlyWithSalary": {
            "title": "Only jobs with a salary band",
            "type": "boolean",
            "description": "Drop postings where XING publishes no salary figures. Around 85 percent of postings carry one.",
            "default": false
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only these employment types. XING labels these in German on every posting, whatever language the ad is written in.",
            "items": {
              "type": "string",
              "enum": [
                "Vollzeit",
                "Teilzeit",
                "Studierende",
                "Aushilfe",
                "Selbstständig",
                "Praktikum"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Working student",
                "Temporary help",
                "Self-employed",
                "Internship"
              ]
            },
            "default": []
          },
          "careerLevels": {
            "title": "Career level",
            "type": "array",
            "description": "Keep only these seniority levels.",
            "items": {
              "type": "string",
              "enum": [
                "Berufseinsteiger·in",
                "Mit Berufserfahrung",
                "Manager (mit und ohne Personalverantwortung)",
                "Student·in / Praktikant·in",
                "Direktor·in / Bereichsleiter·in",
                "Geschäftsführer·in / Vorstand"
              ],
              "enumTitles": [
                "Entry level",
                "Experienced professional",
                "Manager",
                "Student / intern",
                "Director / head of division",
                "Executive board"
              ]
            },
            "default": []
          },
          "remoteOptions": {
            "title": "Remote options",
            "type": "array",
            "description": "Keep only jobs offering these working arrangements.",
            "items": {
              "type": "string",
              "enum": [
                "NON_REMOTE",
                "PARTLY_REMOTE",
                "FULL_REMOTE"
              ],
              "enumTitles": [
                "On site",
                "Hybrid / partly remote",
                "Fully remote"
              ]
            },
            "default": []
          },
          "disciplines": {
            "title": "Discipline",
            "type": "array",
            "description": "Keep only these job families. Matched as a substring, so \"IT\" also finds \"IT und Softwareentwicklung\".",
            "items": {
              "type": "string",
              "enum": [
                "IT und Softwareentwicklung",
                "Ingenieurwesen und technische Berufe",
                "Produktion und Handwerk",
                "Gesundheit, Medizin und Soziales",
                "Vertrieb und Handel",
                "Einkauf, Materialwirtschaft und Logistik",
                "Finanzen, Rechnungswesen und Controlling",
                "Marketing und Werbung",
                "Personalwesen und HR",
                "Administration, Sachbearbeitung und Verwaltung",
                "Forschung, Lehre und Entwicklung",
                "Kundenbetreuung",
                "Recht",
                "Prozessplanung und Qualitätssicherung",
                "Grafik, Design und Architektur",
                "Produktmanagement",
                "Sonstige Tätigkeitsfelder"
              ],
              "enumTitles": [
                "IT and software development",
                "Engineering and technical",
                "Production and skilled trades",
                "Health, medicine and social care",
                "Sales and retail",
                "Purchasing, materials and logistics",
                "Finance, accounting and controlling",
                "Marketing and advertising",
                "HR and people",
                "Administration and office management",
                "Research, teaching and development",
                "Customer service",
                "Legal",
                "Process planning and quality assurance",
                "Design and architecture",
                "Product management",
                "Other"
              ]
            },
            "default": []
          },
          "industries": {
            "title": "Industry",
            "type": "array",
            "description": "Keep only jobs in industries whose XING label contains any of these strings, for example \"Software\", \"Gesundheit\" or \"Automobil\". XING uses around 55 German industry labels.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Country",
            "type": "array",
            "description": "Keep only jobs in these countries. XING is the DACH network, so postings are overwhelmingly German.",
            "items": {
              "type": "string",
              "enum": [
                "DE",
                "AT",
                "CH"
              ],
              "enumTitles": [
                "Germany",
                "Austria",
                "Switzerland"
              ]
            },
            "default": []
          },
          "languages": {
            "title": "Ad language",
            "type": "array",
            "description": "Keep only postings written in these languages.",
            "items": {
              "type": "string",
              "enum": [
                "de",
                "en"
              ],
              "enumTitles": [
                "German",
                "English"
              ]
            },
            "default": []
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only jobs activated in the last N days. Sitemap shards are ordered oldest to newest, so pair a tight window with a low shard count."
          },
          "onlyDirectEmployer": {
            "title": "Only direct XING applications",
            "type": "boolean",
            "description": "Drop postings that hand the applicant off to an external site, keeping only jobs you can apply to on XING itself.",
            "default": false
          },
          "includeSalary": {
            "title": "Include the salary band",
            "type": "boolean",
            "description": "Adds XING's salary estimate — minimum, median and maximum with a currency — to every job that publishes one. Billed per row that actually carries a band, around 85% of postings. Off by default so a run costs only the base row price. The salaryMin and salaryMax filters work whether or not this is on.",
            "default": false
          },
          "includeCompanyProfile": {
            "title": "Include the employer profile",
            "type": "boolean",
            "description": "Adds the XING company id, company page URL, headcount bracket and industry. Billed per row that carries them, around 67% of postings. The employer's name is always included and costs nothing extra.",
            "default": false
          },
          "includeLocationDetail": {
            "title": "Include the full address",
            "type": "boolean",
            "description": "Adds street, postal code, federal state or canton, and XING's internal city id. Billed per row that carries them. City, country and country code are always included.",
            "default": false
          },
          "includeDescription": {
            "title": "Include the job description",
            "type": "boolean",
            "description": "Adds the full advert body. Billed per row that carries one, around 91% of postings. Leaving it off also makes the run noticeably faster, because XING does not have to send the body.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "html",
              "text"
            ],
            "type": "string",
            "description": "Only applies when the description is switched on. HTML keeps XING's markup; plain text flattens it.",
            "default": "html"
          },
          "sortBy": {
            "title": "Sort results",
            "enum": [
              "none",
              "activatedAt",
              "salary",
              "title"
            ],
            "type": "string",
            "description": "Sorting collects candidates before writing, so the run takes longer than the default streaming order.",
            "default": "none"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. XING answers plain requests, so this Actor runs without a proxy by default and costs you nothing in proxy traffic. Enable it only if your runs start getting rate-limited.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}