{
  "openapi": "3.0.1",
  "info": {
    "title": "Xing Jobs Scraper",
    "description": "Scrape Xing job ads (DE, AT, CH) by keyword, location or search URL: full description, salary, postcode, keywords, company. Export to JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "Eg2ukwB6kk9j04lj5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~xing-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-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/nice_dev~xing-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-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/nice_dev~xing-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-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": {
          "startUrls": {
            "title": "Start URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Xing search-result URLs (`https://www.xing.com/jobs/search?keywords=...&location=...`, the filters set on the site are kept) or single job URLs (`https://www.xing.com/jobs/<slug>`). When this list is not empty, the search fields below (keywords, locations) are ignored; filters, caps and monitoring still apply. Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "query": {
            "title": "Search keyword",
            "maxLength": 200,
            "type": "string",
            "description": "Free-text search, exactly as typed on xing.com (e.g. `developer`, `Buchhalter`). Empty = every job ad matching the other filters."
          },
          "searchQueries": {
            "title": "More search keywords",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several keywords in one run: one search per keyword (times each location below). Added to **Search keyword**; ads found by several searches are saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "maxLength": 200,
            "type": "string",
            "description": "City, region or country as typed on the site (e.g. `Berlin`, `Wien`, `Deutschland`). Empty = the whole DACH region. A place Xing does not recognize is silently ignored (same as empty), never an error and never zero ads — type it as it autocompletes on xing.com."
          },
          "locations": {
            "title": "More locations",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several locations in one run: every keyword is searched in every location (3 keywords × 4 locations = 12 searches, max 500). Added to **Location**.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "radius": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Distance around the location, in kilometres. 0 = the site default (about 5 km). Measured on `developer` / Berlin: 533 ads at the default, 574 with 100 km.",
            "default": 0
          },
          "maxItems": {
            "title": "Max job ads",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of job ads to save for the whole run (after deduplication and filters). 0 = no limit.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max job ads per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap for EACH search (keyword × location, or search URL), so that the first search cannot use up the whole **Max job ads** budget. 0 = no per-search cap. Xing itself never returns more than 1 000 ads per search; above that the Actor splits the search by employment type, career level and remote option to reach the rest.",
            "default": 0
          },
          "employmentType": {
            "title": "Employment type",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these contract types. Empty = all of them.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "PART_TIME",
                "CONTRACTOR",
                "INTERN",
                "SEASONAL",
                "TEMPORARY",
                "VOLUNTARY"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Self-employed",
                "Student",
                "Seasonal",
                "Temp",
                "Volunteer"
              ]
            },
            "default": []
          },
          "careerLevel": {
            "title": "Career level",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these seniority levels. Empty = all of them.",
            "items": {
              "type": "string",
              "enum": [
                "STUDENT_INTERN",
                "ENTRY_LEVEL",
                "PROFESSIONAL_EXPERIENCED",
                "MANAGER_SUPERVISOR",
                "EXECUTIVE",
                "SENIOR_EXECUTIVE"
              ],
              "enumTitles": [
                "Student/Intern",
                "Entry Level",
                "Professional/Experienced",
                "Manager/Supervisor",
                "Executive (VP, SVP, etc.)",
                "Senior Executive (CEO, CFO, President)"
              ]
            },
            "default": []
          },
          "remoteOption": {
            "title": "Remote work",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these work arrangements. Empty = all of them.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_REMOTE",
                "PARTLY_REMOTE",
                "NON_REMOTE"
              ],
              "enumTitles": [
                "Fully remote",
                "Hybrid",
                "On site"
              ]
            },
            "default": []
          },
          "companyIds": {
            "title": "Company IDs",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Only the ads of these companies. A company ID looks like `923667.9f72df`; every run returns it, so you can copy one from a first run and then watch that employer.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "benefitIds": {
            "title": "Benefit IDs",
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Only the ads offering these benefits (company car, home office, canteen…). Xing identifies them by ID only, such as `10.161507`: copy one from a Xing search URL that has the benefit ticked.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "disciplines": {
            "title": "Job fields",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the ads whose job field contains one of these words, e.g. `IT and software development`, `Sales`. Case and accents are ignored. Empty = all fields.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industries",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only the ads whose industry contains one of these words, e.g. `Software`, `Consulting`. Case and accents are ignored. Empty = all industries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "both",
              "html",
              "text"
            ],
            "type": "string",
            "description": "How the full job description is saved: HTML as published, plain text, or both (default). The description always comes with the ad — it never costs an extra request.",
            "default": "both"
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Only ads published on or after this date: `2026-09-01` (a plain date is read in Germany/Austria/Switzerland's local day, not UTC), or a period before now such as `7 days`, `2 weeks`, `1 month` (API: `24 hours` and full ISO date-times work too). The date read is the day the ad went live, not the day it was last refreshed. Xing offers no date filter of its own, so the ads are filtered after download."
          },
          "postedBefore": {
            "title": "Posted before",
            "type": "string",
            "description": "Only ads published on or before this date (the whole day is included), or older than a period such as `30 days`."
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the ads whose title contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyWithSalary": {
            "title": "Only ads with a salary",
            "type": "boolean",
            "description": "Keep only the ads that carry a salary — either published by the company or estimated by Xing (`salaryIsEstimate` tells which).",
            "default": false
          },
          "salaryMin": {
            "title": "Minimum salary",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Gross salary floor, compared with the figure Xing publishes or estimates for the ad, as it is: in EUR for most ads, in CHF for Swiss ones, yearly for most, monthly for some internships (no conversion). Checked after the ad is read (Xing's own salary filter has no effect). Ads without any salary are dropped when this is set."
          },
          "salaryMax": {
            "title": "Maximum salary",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Gross salary ceiling, checked the same way as **Minimum salary** (the ad's own figure, EUR or CHF, yearly or monthly, no conversion)."
          },
          "onlyNew": {
            "title": "Only new job ads",
            "type": "boolean",
            "description": "Skip the ads that a previous run (same **Memory key**) already delivered: they are not saved and not charged. First run = everything is new.",
            "default": false
          },
          "stateKey": {
            "title": "Memory key",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new job ads**. Give each schedule / task its own key (e.g. `berlin-developers`) so that they do not share their memory. Letters, digits, `-` and `_`.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget everything remembered under this **Memory key** before the run: this run returns (and charges) every ad again. Untick it afterwards.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy or your own proxies. Keep the default: it is included in the price. The residential Apify proxy is not available in this Actor.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of requests processed in parallel.",
            "default": 8
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 2000,
            "type": "integer",
            "description": "Global request rate. Lower it if the site answers HTTP 429 / 403 in the log.",
            "default": 120
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per request before it is marked as failed.",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Include debug messages in the run log.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}