{
  "openapi": "3.0.1",
  "info": {
    "title": "Jobui Scraper 职友集: China Jobs with CNY Salary & Employer Data",
    "description": "Scrape Jobui 职友集 China job listings by keyword and city, with pay converted to monthly and yearly CNY numbers. Add employer profiles, market salary benchmarks or original posting links. Filter by salary, experience, education and company size. Scheduled runs return only new jobs. 中国招聘数据采集.",
    "version": "0.3",
    "x-build-id": "ELv3GzKpzdcKNJeba"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~jobui-china-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-jobui-china-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/getascraper~jobui-china-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-jobui-china-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/getascraper~jobui-china-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-jobui-china-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": {
          "searchKeywords": {
            "title": "Job keywords",
            "type": "array",
            "description": "Job titles or skills to search for, one per row. Chinese works best (for example 销售工程师 or 会计), and English terms such as Java also work. Each keyword is searched in every city below.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Cities to search, one per row. Use Chinese names (广州, 上海) or English (Shanghai, Shenzhen). Use 全国 or Nationwide for all of China. If you give keywords but no city, the search covers all of China.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Jobui links",
            "type": "array",
            "description": "Paste any public Jobui link: a job search (jobui.com/jobs...), a company page (jobui.com/company/...), or a company directory page (jobui.com/rank/company/view/...). The type is detected for you.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "companyUrls": {
            "title": "Companies",
            "type": "array",
            "description": "Jobui company links or numeric company ids, one per row. Every public opening of each company is collected. Example: 11960098.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort job searches by",
            "enum": [
              "relevance",
              "newest"
            ],
            "type": "string",
            "description": "Relevance is Jobui's default order. Newest puts the most recently posted jobs first, which is best for monitoring.",
            "default": "relevance"
          },
          "relatedRolesPerSearch": {
            "title": "Related roles to add per search",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Also search the closest related job titles that Jobui suggests for each keyword (for example 技术销售工程师 next to 销售工程师). Each related role adds up to 20 more jobs. Set 0 to search only what you asked for.",
            "default": 0
          },
          "companyJobPages": {
            "title": "Pages of openings per company",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many pages of openings to read for each company page or company id. Each page holds about 15 jobs.",
            "default": 1
          },
          "includeKeywords": {
            "title": "Must mention any of",
            "type": "array",
            "description": "Keep a job only if its title, company name, company tagline or industry contains at least one of these words. Leave empty to keep everything.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip jobs mentioning",
            "type": "array",
            "description": "Drop a job if its title, company name, company tagline or industry contains any of these words, for example 实习 to skip internships.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minMonthlySalary": {
            "title": "Minimum monthly salary (CNY)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Keep jobs whose top published monthly pay is at least this many yuan. Daily and yearly pay are converted to a monthly estimate. Jobs with negotiable pay are dropped when this is set. Use 0 for no minimum.",
            "default": 0
          },
          "maxMonthlySalary": {
            "title": "Maximum monthly salary (CNY)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Keep jobs whose lowest published monthly pay is at most this many yuan. Jobs with negotiable pay are dropped when this is set. Use 0 for no maximum.",
            "default": 0
          },
          "onlyWithSalary": {
            "title": "Only jobs with a published salary",
            "type": "boolean",
            "description": "Drop jobs that only say 面议 (negotiable) instead of showing a pay range.",
            "default": false
          },
          "experienceLevels": {
            "title": "Experience required",
            "type": "array",
            "description": "Keep jobs asking for one of the chosen experience levels. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "不限",
                "应届生",
                "1年以下",
                "1-3年",
                "3-5年",
                "5-10年",
                "10年以上"
              ],
              "enumTitles": [
                "No requirement",
                "Fresh graduate",
                "Under 1 year",
                "1 to 3 years",
                "3 to 5 years",
                "5 to 10 years",
                "10+ years"
              ]
            },
            "default": []
          },
          "educationLevels": {
            "title": "Education required",
            "type": "array",
            "description": "Keep jobs whose minimum education requirement is one of the chosen levels. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "不限",
                "初中",
                "中专/中技",
                "高中",
                "大专",
                "本科",
                "硕士",
                "博士"
              ],
              "enumTitles": [
                "No requirement",
                "Junior high",
                "Vocational school",
                "High school",
                "Associate degree",
                "Bachelor",
                "Master",
                "Doctorate"
              ]
            },
            "default": []
          },
          "companySizes": {
            "title": "Company size",
            "type": "array",
            "description": "Keep jobs from employers in the chosen headcount bands. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "少于50人",
                "50-99人",
                "100-499人",
                "500-999人",
                "1000-4999人",
                "5000-9999人",
                "10000人以上"
              ],
              "enumTitles": [
                "Under 50",
                "50 to 99",
                "100 to 499",
                "500 to 999",
                "1,000 to 4,999",
                "5,000 to 9,999",
                "10,000+"
              ]
            },
            "default": []
          },
          "industryKeywords": {
            "title": "Industry contains",
            "type": "array",
            "description": "Keep jobs whose employer industry contains one of these Chinese words, for example 互联网 or 房地产. Leave empty for all industries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only jobs posted in the last this many days. Use 0 to ignore posting age.",
            "default": 0
          },
          "minCompanyViews": {
            "title": "Minimum employer popularity",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Keep jobs from employers that Jobui users have viewed at least this many times, a simple signal of how well known the employer is. Use 0 for no minimum.",
            "default": 0
          },
          "includeEmployerProfile": {
            "title": "Add employer profile",
            "type": "boolean",
            "description": "Adds a company profile to each row: legal name, ownership type, size, founding age, funding stage, hiring trend by year, pay bands, education and city mix, offices, honors, business registration and competitors. Loads one extra page per employer, so runs take longer.",
            "default": false
          },
          "includeSalaryBenchmark": {
            "title": "Add market salary benchmark",
            "type": "boolean",
            "description": "Adds the Jobui salary report for the searched role and city to each job: how many pay samples, the most common monthly pay band and its share, the year-on-year pay change, openings this year and the busiest districts. Only available for keyword and search-link sources.",
            "default": false
          },
          "resolveApplyUrl": {
            "title": "Find the original posting link",
            "type": "boolean",
            "description": "Looks up the job board where each listing was originally posted and adds the apply link (applyUrl) and board name (sourceBoard). Loads one extra page per job.",
            "default": false
          },
          "onlyNewSinceLastRun": {
            "title": "Only new or changed jobs since last run",
            "type": "boolean",
            "description": "Returns only jobs you have not received before, plus jobs whose pay text changed. Each row is marked NEW or UPDATED. Schedule the same input daily to get a change feed.",
            "default": false
          },
          "monitorScope": {
            "title": "Tracking name",
            "type": "string",
            "description": "A name for this saved feed. Use different names to keep separate watches (for example guangzhou-sales and shanghai-finance) from sharing one memory. Only used when change tracking is on.",
            "default": "default"
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop after this many job rows are saved. Jobs are counted after filters and change tracking.",
            "default": 20
          },
          "maxEmployers": {
            "title": "Maximum employers",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Stop after this many employer rows are saved. Only used when you paste a Jobui company directory link.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Jobui limits repeated visits from one address. Apify datacenter proxies work for normal runs. If runs report a verification page, switch to residential proxies.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}