{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper: Posts, Comments, Hot Search & Users",
    "description": "Scrape Weibo (微博) posts by keyword, the realtime hot search board (热搜), topic board, full comment threads with replies and user profiles. Likes, reposts, IP region, images and video. No login or cookies.",
    "version": "0.1",
    "x-build-id": "6MdQsQ8YZcnx6por2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cirkit~weibo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cirkit-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/cirkit~weibo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cirkit-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/cirkit~weibo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cirkit-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "search",
              "trending",
              "posts",
              "comments",
              "users"
            ],
            "type": "string",
            "description": "Search posts by keyword, read a trending board, fetch posts by URL, read the comments under posts, or pull user profiles with their latest posts.",
            "default": "search"
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Keywords or hashtags to search Weibo for, in Chinese or English. Used in 'search' mode. Each keyword returns up to about 100 posts, merged from Weibo's All, Latest, Hot, Video and Media tabs plus the #topic# page.",
            "items": {
              "type": "string"
            }
          },
          "trendingSource": {
            "title": "Trending board",
            "enum": [
              "hotSearch",
              "topics",
              "hotPosts"
            ],
            "type": "string",
            "description": "Used in 'trending' mode. Hot search is the realtime 热搜 board of about 50 topics with heat values. Topics is the 话题榜 with read and discussion counts. Hot posts is the 热门微博 feed of the most viral posts right now.",
            "default": "hotSearch"
          },
          "postUrls": {
            "title": "Post URLs or ids",
            "type": "array",
            "description": "Weibo post links (weibo.com/<user>/<code>, m.weibo.cn/status/<id>, m.weibo.cn/detail/<id>), numeric post ids or base62 codes. Used in 'posts' and 'comments' modes.",
            "items": {
              "type": "string"
            }
          },
          "userUrls": {
            "title": "User URLs, ids or screen names",
            "type": "array",
            "description": "Weibo profile links (weibo.com/u/<id>, weibo.com/<custom>, m.weibo.cn/u/<id>), numeric user ids or exact screen names. Used in 'users' mode.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerSource": {
            "title": "Max results per keyword, board or user",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on posts per keyword, rows per trending board, or latest posts per user. Weibo shows logged-out visitors about 100 posts per keyword and the 10 most recent posts per user. Set 0 in 'users' mode to get profiles only.",
            "default": 100
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Cap on comment rows (including replies) per post in 'comments' mode.",
            "default": 200
          },
          "commentSort": {
            "title": "Comment order",
            "enum": [
              "hot",
              "latest"
            ],
            "type": "string",
            "description": "Hot puts the most liked comments first, the way Weibo shows them. Latest lists newest first.",
            "default": "hot"
          },
          "includeReplies": {
            "title": "Include replies to comments",
            "type": "boolean",
            "description": "Also fetch every reply under each comment, as rows with parentCommentId set. Replies count toward Max comments per post.",
            "default": false
          },
          "fetchFullText": {
            "title": "Fetch full text of long posts",
            "type": "boolean",
            "description": "Search results and timelines cut long posts short with '全文'. When on, the full text is fetched for those posts (one extra request each).",
            "default": true
          },
          "includeUserDetails": {
            "title": "Include extended profile details",
            "type": "boolean",
            "description": "In 'users' mode, also fetch registration date, birthday, company, school, credit level and influence labels (one extra request per user).",
            "default": true
          },
          "maxItems": {
            "title": "Max total rows",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on rows written by this run across all inputs. Leave empty for no cap."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy is required. The default datacenter pool works; no residential proxy needed.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}