{
  "openapi": "3.0.1",
  "info": {
    "title": "Xing.com Scraper — DACH Jobs with Salary & Remote Filter",
    "description": "Scrape xing.com — DACH jobs across Germany, Austria, Switzerland, Luxembourg, and the Netherlands. Extract salary ranges and contact details, then monitor recurring searches with incremental updates.",
    "version": "0.2",
    "x-build-id": "fQgagT9QDEgfscIcR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blackfalcondata~xing-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blackfalcondata-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/blackfalcondata~xing-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blackfalcondata-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/blackfalcondata~xing-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blackfalcondata-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": {
          "mode": {
            "title": "📂 Mode",
            "enum": [
              "jobs",
              "companyProfiles",
              "companyEmployees"
            ],
            "type": "string",
            "description": "Which vertical to scrape on this run. One mode per run.",
            "default": "jobs"
          },
          "companyInputs": {
            "title": "🏢 Company URLs or slugs",
            "type": "array",
            "description": "Used by `companyProfiles` and `companyEmployees` modes. Accepts:\n- bare slug: `sap`\n- full URL: `https://www.xing.com/pages/sap`\n- subpath URL: `https://www.xing.com/pages/sap/employees`\n\nLeave empty for `jobs` mode.",
            "items": {
              "type": "string"
            }
          },
          "maxEmployees": {
            "title": "👥 Max Employees per Company",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Hard cap on rows returned per company in `companyEmployees` mode. Default 100 keeps cost predictable on probe runs. Raise it for full enumeration.",
            "default": 100
          },
          "employeeSort": {
            "title": "🔢 Employee Sort Order",
            "enum": [
              "CONNECTION_DEGREE",
              "ALPHABETICAL"
            ],
            "type": "string",
            "description": "How the employee list is ordered.",
            "default": "CONNECTION_DEGREE"
          },
          "employeeFilters": {
            "title": "🖼️ Employee Filters",
            "type": "object",
            "description": "Optional filters applied to the employee list. Currently supported: `{ \"hasPhoto\": true }` to limit results to employees with a profile photo.",
            "default": {}
          },
          "queries": {
            "title": "🔍 Search Queries",
            "type": "array",
            "description": "Job search keywords (used by `jobs` mode). Provide multiple for batch mode (cartesian product with locations).",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "Cities or regions to search in (e.g. 'Berlin', 'Wien', 'Zürich'). Leave empty for country-wide search.",
            "items": {
              "type": "string"
            }
          },
          "locationRadius": {
            "title": "📡 Location Radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Radius around each location in kilometers.",
            "default": 30
          },
          "startUrls": {
            "title": "🔗 Start URLs",
            "type": "array",
            "description": "Direct Xing URLs: job detail (xing.com/jobs/...) or search URL (xing.com/jobs/search?...). Company URLs scraped when Include Company Profile is enabled.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "employmentType": {
            "title": "💼 Employment Type",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by employment type (one or more).",
            "items": {
              "type": "string",
              "enum": [
                "FULL_TIME",
                "PART_TIME",
                "INTERN",
                "CONTRACTOR"
              ],
              "enumTitles": [
                "Vollzeit (Full-time)",
                "Teilzeit (Part-time)",
                "Studierende (Intern)",
                "Selbstständig (Contractor)"
              ]
            }
          },
          "careerLevel": {
            "title": "📈 Career Level",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by career level (one or more).",
            "items": {
              "type": "string",
              "enum": [
                "STUDENT",
                "ENTRY_LEVEL",
                "PROFESSIONAL",
                "MANAGER",
                "DIRECTOR"
              ],
              "enumTitles": [
                "Student / Praktikant",
                "Berufseinsteiger (Entry)",
                "Mit Berufserfahrung (Professional)",
                "Manager",
                "Direktor / VP / SVP"
              ]
            }
          },
          "discipline": {
            "title": "🧑‍💼 Discipline",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by functional area (one or more).",
            "items": {
              "type": "string",
              "enum": [
                "IT_SOFTWARE",
                "ENGINEERING",
                "SALES",
                "MARKETING_ADVERTISING",
                "CONSULTING",
                "FINANCE_ACCOUNTING",
                "HR",
                "LEGAL",
                "PROJECT_MANAGEMENT",
                "PRODUCT_MANAGEMENT",
                "ANALYSIS_STATISTICS",
                "CUSTOMER_SERVICE",
                "RESEARCH_DEVELOPMENT",
                "HEALTHCARE",
                "DESIGN_ARCHITECTURE",
                "PRODUCTION_CRAFTS",
                "PURCHASING_LOGISTICS",
                "MANAGEMENT",
                "PROCESS_QUALITY",
                "OTHER"
              ],
              "enumTitles": [
                "IT und Softwareentwicklung",
                "Ingenieurwesen",
                "Vertrieb und Handel",
                "Marketing und Werbung",
                "Beratung / Consulting",
                "Finanzen, Rechnungswesen",
                "Personalwesen und HR",
                "Recht",
                "Projektmanagement",
                "Produktmanagement",
                "Analyse und Statistik",
                "Kundenbetreuung",
                "Forschung und Entwicklung",
                "Gesundheit und Medizin",
                "Grafik, Design und Architektur",
                "Produktion und Handwerk",
                "Einkauf und Logistik",
                "Management",
                "Prozessplanung und Qualitätssicherung",
                "Sonstige"
              ]
            }
          },
          "industry": {
            "title": "🏭 Industry",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by industry (one or more; 72 available — first 20 shown, see docs for full list).",
            "items": {
              "type": "string",
              "enum": [
                "COMPUTER_SOFTWARE",
                "INTERNET_IT",
                "IT_SERVICES",
                "BANKING_FINANCE",
                "BANKING",
                "FINANCIAL_SERVICES",
                "INSURANCE",
                "CONSULTING",
                "MARKETING_ADVERTISING",
                "MARKETING_PR_DESIGN",
                "AUTOMOTIVE_MANUFACTURING",
                "MECHANICAL_ENGINEERING",
                "ELECTRICAL_ENGINEERING",
                "PHARMA_MEDTECH",
                "HEALTHCARE",
                "HOSPITALS",
                "RETAIL",
                "TELECOMMUNICATIONS",
                "PUBLISHING",
                "PUBLIC_SECTOR",
                "ARCHITECTURE_CONSTRUCTION",
                "REAL_ESTATE",
                "TRANSPORT_LOGISTICS",
                "TOURISM_GASTRONOMY",
                "COMPUTER_GAMES",
                "ONLINE_MEDIA",
                "CHEMISTRY",
                "AEROSPACE",
                "RENEWABLE_ENERGY",
                "ENERGY",
                "HR_SERVICES",
                "UNIVERSITIES",
                "LEGAL_CONSULTING",
                "AUDITING_LEGAL",
                "NON_PROFIT",
                "DESIGN_GRAPHICS",
                "NURSING",
                "MEDICAL_TECHNOLOGY",
                "PHARMACEUTICALS",
                "SEMICONDUCTORS_ELECTRONICS",
                "CONSUMER_ELECTRONICS",
                "CONSUMER_GOODS_TRADE",
                "FOOD",
                "FASHION_TEXTILES",
                "FURNITURE_WOOD",
                "WHOLESALE",
                "IMPORT_EXPORT",
                "CONSTRUCTION_TRADES",
                "BUILDING_MATERIALS",
                "AUTOMOTIVE_VEHICLES",
                "MEASUREMENT_CONTROL",
                "PRINTING",
                "METAL_INDUSTRY",
                "PLASTICS_RUBBER",
                "OPTICS_PHOTOGRAPHY",
                "PASSENGER_TRANSPORT",
                "AIR_TRANSPORT",
                "WAREHOUSING",
                "HOTELS",
                "GASTRONOMY",
                "INFORMATION_SERVICES",
                "REAL_ESTATE_MANAGEMENT",
                "REAL_ESTATE_BROKERAGE",
                "COACHING_EDUCATION",
                "PSYCHOLOGY",
                "MEDICAL_SERVICES",
                "ARTS_CULTURE_SPORTS",
                "AGRICULTURE",
                "PUBLIC_ADMINISTRATION",
                "INDUSTRY_MACHINERY",
                "OTHER_INDUSTRIES",
                "OTHER_SERVICES"
              ]
            }
          },
          "remote": {
            "title": "🏠 Remote only",
            "type": "boolean",
            "description": "Shortcut to keep remote-compatible jobs.",
            "default": false
          },
          "remoteOption": {
            "title": "🏠 Remote Option (post-filter)",
            "uniqueItems": true,
            "type": "array",
            "description": "Fine-grained filter by remote type.",
            "items": {
              "type": "string",
              "enum": [
                "FULL_REMOTE",
                "PARTLY_REMOTE",
                "NON_REMOTE"
              ],
              "enumTitles": [
                "Fully remote",
                "Hybrid / partly remote",
                "On-site"
              ]
            }
          },
          "country": {
            "title": "🌍 Country",
            "uniqueItems": true,
            "type": "array",
            "description": "Filter by job country code.",
            "items": {
              "type": "string",
              "enum": [
                "DE",
                "AT",
                "CH",
                "LU",
                "NL"
              ],
              "enumTitles": [
                "Germany",
                "Austria",
                "Switzerland",
                "Luxembourg",
                "Netherlands"
              ]
            }
          },
          "salaryMin": {
            "title": "💰 Salary Min (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum annual salary in EUR (indicative — Xing filter is lenient)."
          },
          "salaryMax": {
            "title": "💰 Salary Max (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum annual salary in EUR."
          },
          "daysOld": {
            "title": "⏰ Days Old",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs posted within the last N days."
          },
          "maxResults": {
            "title": "💯 Max Results",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum total results across all queries (0 = unlimited).",
            "default": 50
          },
          "maxPages": {
            "title": "📄 Max Pages per Query",
            "minimum": 0,
            "type": "integer",
            "description": "Cap pages per query × location combination (0 = unlimited). Automatically raised when Max Results requires more pages, so this is rarely a hard cap.",
            "default": 0
          },
          "includeDetails": {
            "title": "📋 Include Full Details",
            "type": "boolean",
            "description": "Include full job description in output.",
            "default": true
          },
          "descriptionMaxLength": {
            "title": "✂️ Description Max Length",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate description to N chars (0 = no truncation).",
            "default": 0
          },
          "includeCompanyProfile": {
            "title": "🏢 Include Company Profile",
            "type": "boolean",
            "description": "Enrich with deep company data (followers, offices with GPS, top employees, description) via HTML Apollo-state scrape. Adds ~1s per unique company.",
            "default": false
          },
          "compact": {
            "title": "📦 Compact Output",
            "type": "boolean",
            "description": "Core fields only — optimized for AI-agent and MCP workflows.",
            "default": false
          },
          "incrementalMode": {
            "title": "♻️ Incremental Mode",
            "type": "boolean",
            "description": "Compare against previous run — emit only NEW, UPDATED, REAPPEARED jobs.",
            "default": false
          },
          "stateKey": {
            "title": "🔑 State Key",
            "type": "string",
            "description": "Stable identifier for the tracked universe (auto-derived from the query if omitted)."
          },
          "skipReposts": {
            "title": "🚫 Skip Reposts",
            "type": "boolean",
            "description": "Exclude listings detected as reposts of previously seen jobs (requires incremental mode).",
            "default": false
          },
          "emitUnchanged": {
            "title": "♻️ Emit Unchanged Jobs",
            "type": "boolean",
            "description": "In incremental mode, also emit jobs whose content has not changed.",
            "default": false
          },
          "emitExpired": {
            "title": "⚰️ Emit Expired Jobs",
            "type": "boolean",
            "description": "In incremental mode, emit EXPIRED records for jobs no longer in search results.",
            "default": false
          },
          "telegramToken": {
            "title": "🤖 Telegram Bot Token",
            "type": "string",
            "description": "Telegram bot token from @BotFather. Required for Telegram notifications."
          },
          "telegramChatId": {
            "title": "💬 Telegram Chat ID",
            "type": "string",
            "description": "Telegram chat or channel ID where alerts are sent (e.g. \"-100123456789\" for a private group, or \"@yourchannel\")."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord Webhook URL",
            "type": "string",
            "description": "Discord incoming webhook URL. Get one from Server Settings → Integrations → Webhooks."
          },
          "slackWebhookUrl": {
            "title": "💼 Slack Webhook URL",
            "type": "string",
            "description": "Slack incoming webhook URL. Create at api.slack.com/messaging/webhooks."
          },
          "whatsappPhoneNumberId": {
            "title": "📱 WhatsApp Phone Number ID",
            "type": "string",
            "description": "WhatsApp Business phone number ID from Meta Business Manager (NOT the phone number itself — the numeric ID shown next to your business number). Free service-conversation messages within 24 hours of last user-initiated contact."
          },
          "whatsappAccessToken": {
            "title": "🔐 WhatsApp Access Token",
            "type": "string",
            "description": "Meta Cloud API access token with `whatsapp_business_messaging` scope. Get a permanent token from a system user in Meta Business Manager."
          },
          "whatsappTo": {
            "title": "📨 WhatsApp Recipient",
            "type": "string",
            "description": "Recipient phone in E.164 format (e.g. +4915123456789). Recipient must have messaged your business number within the last 24 hours — outside that window, free-form text is rejected by Meta."
          },
          "webhookUrl": {
            "title": "🪝 Generic Webhook URL",
            "type": "string",
            "description": "Generic webhook URL that receives a JSON POST with the full job payload + run metadata. Universal escape hatch for n8n / Make / Zapier / your own backend."
          },
          "webhookHeaders": {
            "title": "🔑 Webhook Headers",
            "type": "object",
            "description": "Optional headers (e.g. {\"Authorization\": \"Bearer xyz\"}) sent with the webhook POST."
          },
          "notificationLimit": {
            "title": "📊 Max Jobs Per Notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of jobs included in each notification message (1–20). Excess jobs are still in the dataset; notifications get a summary line.",
            "default": 5
          },
          "notifyOnlyChanges": {
            "title": "🔄 Notify Only New/Updated",
            "type": "boolean",
            "description": "When Incremental Mode is on, only send notifications for NEW / UPDATED / REAPPEARED jobs. Has no effect outside incremental mode.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "Optional proxy configuration for request routing."
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "Pick a single description representation. `all` keeps every variant; `text` / `html` / `markdown` drop the others.",
            "default": "all"
          },
          "excludeEmptyFields": {
            "title": "Exclude empty fields from output",
            "type": "boolean",
            "description": "Drop null, empty-string, and empty-array fields from each record before push. Smaller payloads for AI agents and dashboards.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}