{
  "openapi": "3.0.1",
  "info": {
    "title": "Eleduck (电鸭社区) Jobs & Posts Scraper",
    "description": "Scrape remote job listings and community posts from eleduck.com — China's largest remote-work community. Full text, tags, author, engagement metrics. No login required.",
    "version": "1.2",
    "x-build-id": "RCMW5RaS5Y1HwL303"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lxlsj~eleduck-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lxlsj-eleduck-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/lxlsj~eleduck-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lxlsj-eleduck-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/lxlsj~eleduck-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lxlsj-eleduck-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": {
          "board": {
            "title": "抓取范围 / What to scrape",
            "enum": [
              "jobs_channel",
              "community"
            ],
            "type": "string",
            "description": "Jobs Channel (招聘专区) has 11,000+ structured job posts with rich filters — recommended. Community posts is the free-form discussion board.",
            "default": "jobs_channel"
          },
          "jobTypes": {
            "title": "工作方式 / Work arrangement (多选 · multi-select)",
            "type": "array",
            "description": "Pick one or more. Selecting multiple runs a separate query per combination and merges + deduplicates the results — the website itself only supports one at a time.",
            "items": {
              "type": "string",
              "enum": [
                "19",
                "17",
                "18",
                "157",
                "168"
              ],
              "enumTitles": [
                "全职远程 Full-time remote",
                "全职坐班 Full-time on-site",
                "线上兼职 Part-time online",
                "线下兼职 Part-time on-site",
                "混合办公 Hybrid"
              ]
            },
            "default": []
          },
          "skillTypes": {
            "title": "职业 / Job function (多选 · multi-select)",
            "type": "array",
            "description": "Pick one or more. Combined with Work arrangement as a cross-product (e.g. 2 arrangements x 2 functions = 4 queries, deduplicated).",
            "items": {
              "type": "string",
              "enum": [
                "162",
                "10",
                "11",
                "12",
                "13",
                "68",
                "131",
                "16"
              ],
              "enumTitles": [
                "AI工程师 AI Engineer",
                "开发 Developer",
                "产品 Product",
                "设计 Design",
                "运营 Operations",
                "写作 Writing",
                "运维 DevOps",
                "其它 Other"
              ]
            },
            "default": []
          },
          "hireTypes": {
            "title": "招聘类型 / Hiring type (多选 · multi-select)",
            "type": "array",
            "description": "Who is hiring: direct employer, outsourced gig, employee referral, co-founder search, or recruiter. Multi-select expands into separate queries.",
            "items": {
              "type": "string",
              "enum": [
                "8",
                "43",
                "44",
                "7",
                "145"
              ],
              "enumTitles": [
                "企业直招 Direct employer",
                "外包零活 Outsourced/gig",
                "员工内推 Referral",
                "组队合伙 Co-founder",
                "猎头中介 Recruiter"
              ]
            },
            "default": []
          },
          "cities": {
            "title": "城市 / City (多选 · multi-select)",
            "type": "array",
            "description": "Job location. 海外 = overseas. Remote roles often leave this empty, so use it together with Work arrangement rather than instead of it.",
            "items": {
              "type": "string",
              "enum": [
                "56",
                "57",
                "58",
                "59",
                "60",
                "54",
                "38",
                "36",
                "61",
                "41",
                "42",
                "69",
                "53",
                "70",
                "123",
                "129",
                "139",
                "55"
              ],
              "enumTitles": [
                "海外 Overseas",
                "北京 Beijing",
                "上海 Shanghai",
                "广州 Guangzhou",
                "深圳 Shenzhen",
                "杭州 Hangzhou",
                "成都 Chengdu",
                "西安 Xi'an",
                "厦门 Xiamen",
                "武汉 Wuhan",
                "长沙 Changsha",
                "苏州 Suzhou",
                "郑州 Zhengzhou",
                "南京 Nanjing",
                "云南 Yunnan",
                "海南 Hainan",
                "大理 Dali",
                "其他 Other"
              ]
            },
            "default": []
          },
          "fields": {
            "title": "领域 / Industry (多选 · multi-select)",
            "type": "array",
            "description": "Industry / domain of the hiring company. Multi-select expands into separate queries.",
            "items": {
              "type": "string",
              "enum": [
                "130",
                "118",
                "119",
                "121",
                "163",
                "89",
                "120",
                "122",
                "164",
                "165",
                "166",
                "117"
              ],
              "enumTitles": [
                "AI/人工智能 AI",
                "企业服务 Enterprise",
                "技术/开源 Tech/OSS",
                "内容/媒体 Content/Media",
                "跨境/出海 Cross-border",
                "区块链&Web3",
                "电商/消费 E-commerce",
                "工具/应用 Tools/Apps",
                "社交/游戏 Social/Gaming",
                "金融/投资 Fintech",
                "健康/医疗 Health",
                "其他 Other"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "最多抓取条数 / Max items",
            "minimum": 0,
            "maximum": 25000,
            "type": "integer",
            "description": "Total across all filter combinations, after deduplication. 0 = unlimited.",
            "default": 100
          },
          "fetchFullContent": {
            "title": "抓取正文全文 / Fetch full job description",
            "type": "boolean",
            "description": "Fetch complete post body (HTML + Markdown) — salary, requirements, contact info. Costs 1 extra request per post.",
            "default": true
          },
          "lastDays": {
            "title": "最近多少天 / Only jobs from the last N days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Relative window, recalculated on every run — 60 means the last 60 days from today, so scheduled runs never go stale. Set 0 to disable. Paging stops at the cutoff, which makes daily incremental runs very cheap.",
            "default": 60
          },
          "publishedAfter": {
            "title": "只要这天之后的 / Only posts published after",
            "type": "string",
            "description": "Absolute cutoff date (YYYY-MM-DD). Optional — normally just use the N-days field above. If both are set, the stricter (later) one wins.",
            "default": ""
          },
          "keywords": {
            "title": "关键词过滤 / Keyword filter",
            "type": "array",
            "description": "Keep only posts whose title or summary contains ANY of these (OR logic). Pre-filled with common AI/automation topics — edit or clear as needed.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minMonthlySalaryCny": {
            "title": "最低月薪 (人民币) / Min monthly salary in CNY",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only keep jobs whose parsed max salary reaches this monthly CNY figure. Yearly/hourly rates and foreign currencies are normalised automatically. Jobs with no parseable salary are kept unless you enable the option below.",
            "default": 0
          },
          "requireSalary": {
            "title": "只要写明薪资的岗位 / Only jobs with a stated salary",
            "type": "boolean",
            "description": "Drop posts where no salary could be parsed from the text.",
            "default": false
          },
          "excludeClosed": {
            "title": "排除已关闭的岗位 / Exclude closed positions",
            "type": "boolean",
            "description": "Skip positions the poster has already marked as filled. Recommended — closed jobs are dead leads.",
            "default": true
          },
          "sort": {
            "title": "排序 / Sort",
            "enum": [
              "new",
              "hot"
            ],
            "type": "string",
            "description": "Newest first is best for incremental daily runs; Hottest surfaces the most-viewed posts.",
            "default": "new"
          },
          "minRequestDelayMs": {
            "title": "请求间隔 (毫秒) / Request delay",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Eleduck rate-limits aggressively — keep >= 500.",
            "default": 600
          },
          "maxConcurrency": {
            "title": "并发数 / Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Tested: 5+ triggers rate limiting (server returns HTML). 3 is stable.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "代理 / Proxy",
            "type": "object",
            "description": "Eleduck is China-hosted and usually works without proxy.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}