{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper ✅ Posts, Comments, Reposts",
    "description": "Scrape Weibo (微博) by keyword or URL: posts, comments, profiles, and hot search. Plus the virality and audience graph other tools only show as counts: who reposted, who liked, followers, and following, each a full profile. No cookies, no login. Failed lookups are free.",
    "version": "1.0",
    "x-build-id": "W8iYANN1uHGTwNQ4t"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/atomus~weibo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-atomus-weibo-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/atomus~weibo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-atomus-weibo-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/atomus~weibo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-atomus-weibo-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",
        "required": [
          "searchType"
        ],
        "properties": {
          "searchType": {
            "title": "🎯 What to scrape (mode) / 抓取模式",
            "enum": [
              "search",
              "timeline",
              "post-detail",
              "comments",
              "reposts",
              "likes",
              "profile",
              "fans",
              "following",
              "trending"
            ],
            "type": "string",
            "description": "Choose the mode. 💲 Each mode is its own PAID event — the price is shown on every option below. Then fill ONLY the input field in the section for your mode. Prices are per result, with a per-target minimum: 2 results for the post-list modes (comments, reposts, likes, fans, following, trending) and 1 for the rest. The minimum applies even when a target returns nothing — Weibo charges us for the request either way — but a request that ERRORS is free. // 选择模式。💲 每种模式为独立的付费事件，价格已标注在下方每个选项上；然后只需填写你所选模式对应分组里的输入字段。按结果计费，并设每个目标的最低计费条数：评论/转发/点赞/粉丝/关注/热搜为2条，其余模式为1条。即使该目标无任何结果也按最低条数计费（微博对该请求同样向我们收费）；但请求出错则免费。",
            "default": "search"
          },
          "keywords": {
            "title": "🔍 Keywords ($) / 关键词",
            "type": "array",
            "description": "💲 Billed post-scraped ($0.02 per post returned). One or more search terms, e.g. \"科技\" (tech), \"财经\" (finance). // 💲 按 post-scraped 计费（$0.02/条）。可填写一个或多个关键词。",
            "items": {
              "type": "string"
            }
          },
          "timeFilter": {
            "title": "🕒 Time range, free / 时间范围（免费）",
            "enum": [
              "all",
              "1d",
              "7d",
              "30d",
              "180d",
              "365d"
            ],
            "type": "string",
            "description": "Only for \"Keyword search\". FREE — restrict results to a recent time window, no extra charge (filtered server-side by Weibo, so you are billed only for the posts returned). // 仅用于「关键词搜索」，免费，按时间范围筛选，不额外计费（由微博服务端过滤，仅对返回的结果计费）。",
            "default": "all"
          },
          "searchScope": {
            "title": "🎯 Result scope, free / 结果范围（免费）",
            "enum": [
              "all",
              "hot",
              "original",
              "verified",
              "media",
              "viewpoint"
            ],
            "type": "string",
            "description": "Only for \"Keyword search\". FREE — restrict which posts are returned, no extra charge. // 仅用于「关键词搜索」，免费，限定返回的微博类型，不额外计费。",
            "default": "all"
          },
          "mediaType": {
            "title": "🎬 Media type, free / 媒体类型（免费）",
            "enum": [
              "all",
              "pic",
              "video",
              "music",
              "link"
            ],
            "type": "string",
            "description": "Only for \"Keyword search\". FREE — restrict results to posts containing a media type, no extra charge. // 仅用于「关键词搜索」，免费，按包含的媒体类型筛选，不额外计费。",
            "default": "all"
          },
          "postUrls": {
            "title": "🔗 Post URLs or IDs ($) / 微博链接或ID",
            "type": "array",
            "description": "💲 Paid per selected mode: post detail $0.04/post, comments $0.01/comment (min 2), reposts $0.012/repost (min 2), likes $0.01/like (min 2). Paste Weibo post URLs (https://weibo.com/<uid>/<mblogid>), m.weibo.cn/detail/<id> links, a base62 mblogid, or a numeric mid. // 💲 按所选模式计费：详情 $0.04/条，评论 $0.01/条（最低2），转发 $0.012/条（最低2），点赞 $0.01/条（最低2）。可粘贴微博链接、mblogid 或数字 mid。",
            "items": {
              "type": "string"
            }
          },
          "userUrls": {
            "title": "👤 Profile URLs or user IDs ($) / 用户主页链接或ID",
            "type": "array",
            "description": "💲 Paid per selected mode: timeline $0.02/post, profile $0.04/profile, fans $0.012/fan (min 2), following $0.01/user (min 2). Paste profile URLs (https://weibo.com/u/<uid>) or a bare numeric user id. Note: some accounts keep their fans/following lists private. // 💲 按所选模式计费：时间线 $0.02/条，资料 $0.04/个，粉丝 $0.012/个（最低2），关注 $0.01/个（最低2）。可粘贴主页链接或数字用户ID。部分账号的粉丝/关注列表不公开。",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "💯 Max results per keyword/target ($) / 每个关键词或目标的最大结果数",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many results to return per keyword or target. 💲 Affects cost: per-item modes (search, timeline, comments, reposts, likes, fans, following, trending) bill per result, so a higher value costs more (post-list modes bill a minimum of 2 per target). Post detail and profile return one billed record per target regardless. Why there is a minimum: one request is one lookup, and that lookup does the same work whether it comes back with 50 results, with 1, or with none. The minimum covers the request itself, which is what keeps thin targets worth running instead of being refused outright. Requests that fail are free. // 每个关键词或目标返回的最大结果数。💲 影响费用：按条计费的模式（搜索/时间线/评论/转发/点赞/粉丝/关注/热搜）按结果数计费，数值越大费用越高（列表类每目标最低计费2条）；详情/资料每个目标只计一条记录。 为什么有最低计费：一次请求就是一次查询，无论返回 50 条、1 条还是 0 条，工作量都相同。最低计费覆盖的是这次请求本身，这样结果很少的目标依然值得抓取，而不是被直接拒绝。请求失败不收费。",
            "default": 20
          },
          "includeRankings": {
            "title": "📈 Also include the social ranking board ($) / 同时包含社会榜单",
            "type": "boolean",
            "description": "💲 PAID — in addition to the hot-search board, also return the social ranking board; the extra topics are billed as trend-scraped ($0.01/topic) within the same trend event. Off by default. // 💲 付费——在热搜榜之外额外返回社会榜单，额外条目按 trend-scraped 计费（$0.01/条），计入同一 trend 事件。默认关闭。",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}