{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper",
    "description": "Weibo Scraper SD - Weibo Scraper is a social media data tool that extracts public Sina Weibo posts (text, reposts, comments, likes, images, video URLs, hashtags, IP region), comments, user profiles, the hot feed and the hot-search board by keyword, user or post, with no login.",
    "version": "1.0",
    "x-build-id": "D6Dy8XND7EqN1jvUN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neuro-scraper~weibo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neuro-scraper-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/neuro-scraper~weibo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neuro-scraper-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/neuro-scraper~weibo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neuro-scraper-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",
        "properties": {
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Keywords or #hashtags# to search Weibo posts for, one per line, e.g. 科技, 新能源汽车, #iPhone#. Chinese keywords return far more posts than English ones. Logged out, Weibo shows the first page of each search tab (5-11 posts per tab, measured 2026-10-09); 'Search order' picks the tabs.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword (single)",
            "type": "string",
            "description": "One search keyword, e.g. 北京. Same as one line of 'Search keywords' (kept for users of other Weibo scrapers)."
          },
          "sortBy": {
            "title": "Search order (tabs)",
            "enum": [
              "mixed",
              "relevance",
              "latest",
              "hot",
              "video",
              "image"
            ],
            "type": "string",
            "description": "Which of Weibo's own search tabs to read. 'All post tabs merged' reads 综合 + 实时 + 热门 + 视频 + 图片 and dedupes them - about 25-35 posts per keyword logged out.",
            "default": "mixed"
          },
          "userIds": {
            "title": "User IDs or profile URLs",
            "type": "array",
            "description": "Weibo users, one per line: a numeric user id (2803301701), a profile URL (https://weibo.com/u/2803301701, https://m.weibo.cn/u/2803301701) a custom profile address (https://weibo.com/rmrb) or a screen name (人民日报). Gives one profile row (exact followers, following, posts, verification, bio, location, birthday, company, credit level, account creation date) plus the user's latest posts.",
            "items": {
              "type": "string"
            }
          },
          "userId": {
            "title": "User ID (single)",
            "type": "string",
            "description": "One user id or profile URL, e.g. 2760523085. Same as one line of 'User IDs or profile URLs'."
          },
          "maxPostsPerUser": {
            "title": "Latest posts per user",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Latest posts added after each profile row. Logged out, Weibo shows the first 10 posts of a profile; the next page asks for a login (measured 2026-10-09). 0 = profile row only.",
            "default": 10
          },
          "postIds": {
            "title": "Post IDs or URLs",
            "type": "array",
            "description": "Weibo posts, one per line: a post URL (https://weibo.com/1893892941/RlJJ9nYSH, https://m.weibo.cn/detail/5351806675715575, https://m.weibo.cn/status/RlJJ9nYSH), a 16-digit mid or a 9-character bid. Returns the post's current full text and counts.",
            "items": {
              "type": "string"
            }
          },
          "weiboId": {
            "title": "Weibo ID (single)",
            "type": "string",
            "description": "One post id or URL, e.g. 5351806675715575. Same as one line of 'Post IDs or URLs'."
          },
          "includeHotTimeline": {
            "title": "Hot feed posts (热门微博)",
            "type": "boolean",
            "description": "Also read the posts Weibo's own hot feed (https://weibo.com/hot/weibo/102803) is pushing now: 10 new posts per page, paged with the feed's cursor up to 'Max pages'.",
            "default": false
          },
          "includeHotSearch": {
            "title": "Hot-search board (微博热搜)",
            "type": "boolean",
            "description": "Also return the realtime hot-search board: about 50 trending topics with rank, heat value and label (热, 新, 爆 ...).",
            "default": false
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Adds the comments of every post row (one row per comment, linked by weiboId): text, likes, replies, IP region, author. Logged out, Weibo serves the first hot page (about 20) and the first 2 newest pages (about 20) per post; deeper pages ask for a login (measured 2026-10-09).",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Upper limit of comment rows per post when 'Include comments' is on (about 40 reachable logged out).",
            "default": 20
          },
          "commentSort": {
            "title": "Comment order",
            "enum": [
              "hot",
              "latest"
            ],
            "type": "string",
            "description": "Which comment list is read first: Weibo's hot order or newest first. The other list fills up to the limit.",
            "default": "hot"
          },
          "includeLikers": {
            "title": "Include likers",
            "type": "boolean",
            "description": "Adds the accounts that liked every post row (one row per liker, linked by weiboId): user id, name, verification, followers, bio, when they liked and from which client.",
            "default": false
          },
          "maxLikersPerPost": {
            "title": "Max likers per post",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Upper limit of liker rows per post when 'Include likers' is on; the Actor follows Weibo's liker pages up to 'Max pages'.",
            "default": 20
          },
          "startDay": {
            "title": "Start date",
            "type": "string",
            "description": "Keep only posts published on or after this day (YYYY-MM-DD, Beijing time). Applied by the Actor to the posts it reads (Weibo's logged-out search has no working date parameter - measured 2026-10-09); posts outside the window are not charged."
          },
          "endDay": {
            "title": "End date",
            "type": "string",
            "description": "Keep only posts published on or before this day (YYYY-MM-DD, Beijing time). Applied by the Actor, like 'Start date'."
          },
          "adFilter": {
            "title": "Promoted posts",
            "enum": [
              "all",
              "organic_only",
              "promo_only"
            ],
            "type": "string",
            "description": "Keep, drop or isolate posts Weibo marks as promoted / ads (isAd).",
            "default": "all"
          },
          "fetchFullText": {
            "title": "Full text of long posts",
            "type": "boolean",
            "description": "Long posts (isLongText) arrive cut at about 140 characters in search and profile lists; on = one extra request per long post for the full text.",
            "default": true
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Pages read per paged list: hot-feed pages (10 posts each), comment pages and liker pages per post.",
            "default": 5
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stops after this many rows in total (posts, comments, likers, profiles and hot-search topics).",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential proxies (the default) are recommended. Weibo answered from a home connection in Bangladesh without any block (measured 2026-10-09); pick country CN if you want Chinese IPs.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}