{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper - Posts, Search, Comments & Hot Search",
    "description": "Scrape Weibo (微博) posts by keyword with a date window, by link or by account from $0.81 per 1,000: text, likes, reposts, comments, region, video, images. Plus full comment threads, profiles, likers and the hot-search boards. Monitor mode, no login.",
    "version": "0.1",
    "x-build-id": "gellp1w2ZySqOTBW7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/topapi~weibo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-topapi-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/topapi~weibo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-topapi-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/topapi~weibo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-topapi-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": {
          "searchKeywords": {
            "title": "🔎 Search keywords or #topics#",
            "type": "array",
            "description": "Posts that match each keyword, newest first, going back in time as far as your date window or Max posts per keyword allows. e.g. \"咖啡\", \"#新能源汽车#\", \"iPhone 17\".",
            "items": {
              "type": "string"
            }
          },
          "profileUrls": {
            "title": "👤 Accounts (profile links, ids or names)",
            "type": "array",
            "description": "e.g. \"https://weibo.com/u/2803301701\", \"2803301701\", \"人民日报\" or a custom address like \"rmrb\". Returns the account's profile row and posts (see Max posts per account).",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "📝 Post links or ids",
            "type": "array",
            "description": "e.g. \"https://weibo.com/2803301701/RnAv0n3IZ\", \"https://m.weibo.cn/detail/5356218505495865\", a 16-digit mid or a 9-character bid. One full post row each (long text included).",
            "items": {
              "type": "string"
            }
          },
          "hotBoards": {
            "title": "🔥 Hot-search boards",
            "type": "array",
            "description": "Weibo's live boards: rank, topic, hot value, label (新/热/沸), category. Leave empty for none.",
            "items": {
              "type": "string",
              "enum": [
                "realtime",
                "entertainment",
                "life",
                "social"
              ],
              "enumTitles": [
                "热搜榜 Realtime hot search (~50 + pinned)",
                "文娱榜 Entertainment (50)",
                "生活榜 Life (50)",
                "社会榜 Social (50)"
              ]
            }
          },
          "hotTimelineChannels": {
            "title": "📰 Hot-post feed channels",
            "type": "array",
            "description": "Weibo's 热门微博 feed and its channels: the posts Weibo is pushing right now, as full post rows. Leave empty for none.",
            "items": {
              "type": "string",
              "enum": [
                "hot",
                "social",
                "finance",
                "tech",
                "digital",
                "cars",
                "realestate",
                "stocks",
                "world",
                "military",
                "food",
                "fashion",
                "beauty",
                "stars",
                "movies",
                "tv",
                "variety",
                "shortdrama",
                "music",
                "games",
                "anime",
                "sports",
                "fitness",
                "health",
                "travel",
                "pets",
                "home",
                "parenting",
                "education",
                "books",
                "history",
                "science",
                "art",
                "photography",
                "law",
                "funny",
                "emotion",
                "local",
                "realtime",
                "ranking"
              ],
              "enumTitles": [
                "热门 Hot posts",
                "社会 Social",
                "财经 Finance",
                "科技 Tech",
                "数码 Digital",
                "汽车 Cars",
                "房产 Real estate",
                "股市 Stocks",
                "国际 World",
                "军事 Military",
                "美食 Food",
                "时尚 Fashion",
                "美妆 Beauty",
                "明星 Celebrities",
                "电影 Movies",
                "电视剧 TV series",
                "综艺 Variety shows",
                "短剧 Short dramas",
                "音乐 Music",
                "游戏 Games",
                "动漫 Anime",
                "体育 Sports",
                "运动健身 Fitness",
                "健康 Health",
                "旅游 Travel",
                "萌宠 Pets",
                "家居 Home",
                "育儿 Parenting",
                "教育 Education",
                "读书 Books",
                "历史 History",
                "科普 Science",
                "艺术 Art",
                "摄影 Photography",
                "法律 Law",
                "搞笑 Funny",
                "情感 Relationships",
                "同城 Local",
                "实时 Live",
                "榜单 Rankings"
              ]
            }
          },
          "searchUsers": {
            "title": "👥 Find accounts by keyword",
            "type": "array",
            "description": "Account search, e.g. \"咖啡\", \"小米\". Weibo shows a signed-out visitor the first 20 accounts per keyword.",
            "items": {
              "type": "string"
            }
          },
          "searchTopics": {
            "title": "#️⃣ Find topics by keyword",
            "type": "array",
            "description": "Topic (#hashtag#) search: topic name, discussions and reads, e.g. \"咖啡\" finds #咖啡#, #咖啡店#...",
            "items": {
              "type": "string"
            }
          },
          "searchSuggestions": {
            "title": "💡 Search suggestions",
            "type": "array",
            "description": "What Weibo suggests for a term (the dropdown under the search box), with Weibo's count for each suggestion.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Any Weibo links",
            "type": "array",
            "description": "Paste any mix of s.weibo.com searches, m.weibo.cn links, profile, post and t.cn short links; each is routed to the right job.",
            "items": {
              "type": "string"
            }
          },
          "searchSort": {
            "title": "↕️ Search order",
            "enum": [
              "realtime",
              "comprehensive",
              "hot"
            ],
            "type": "string",
            "description": "Which search tab to read. Latest walks back through time minute by minute; the other two follow Weibo's own ranking.",
            "default": "realtime"
          },
          "postedAfter": {
            "title": "📅 Posted after",
            "type": "string",
            "description": "Date window start, Beijing time: \"2026-09-01\", \"7 days\", \"24 hours\" or a day count (1 = today). A search walks back until here."
          },
          "postedBefore": {
            "title": "📅 Posted before",
            "type": "string",
            "description": "Date window end (the whole day counts), e.g. \"2026-09-30\". A search starts here and walks back."
          },
          "originalOnly": {
            "title": "✍️ Original posts only",
            "type": "boolean",
            "description": "Drop reposts.",
            "default": false
          },
          "verifiedOnly": {
            "title": "✔️ Verified authors only",
            "type": "boolean",
            "description": "Keep posts (and accounts) with Weibo's V verification.",
            "default": false
          },
          "contentType": {
            "title": "🖼️ Content type",
            "enum": [
              "all",
              "pictures",
              "videos",
              "media",
              "links",
              "text"
            ],
            "type": "string",
            "description": "Keep only posts of this kind.",
            "default": "all"
          },
          "adFilter": {
            "title": "📣 Promoted posts",
            "enum": [
              "all",
              "organic_only",
              "promo_only"
            ],
            "type": "string",
            "description": "Weibo marks paid placements; keep, drop or study them.",
            "default": "all"
          },
          "minLikes": {
            "title": "❤️ Min likes",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Skip posts with fewer likes. 0 = no minimum."
          },
          "minReposts": {
            "title": "🔁 Min reposts",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Skip posts with fewer reposts. 0 = no minimum."
          },
          "minComments": {
            "title": "💬 Min comments",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Skip posts with fewer comments. 0 = no minimum."
          },
          "minFollowers": {
            "title": "👥 Min author followers",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Skip posts (and accounts) whose author has fewer followers. 0 = no minimum."
          },
          "provinces": {
            "title": "📍 Posted from (provinces)",
            "type": "array",
            "description": "Keep posts Weibo shows as published from these places (发布于), e.g. \"北京\", \"广东\", \"海外\". Posts with no place shown are dropped when this is set.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "🚫 Exclude keywords",
            "type": "array",
            "description": "Drop posts whose text contains any of these, e.g. \"抽奖\", \"转发\".",
            "items": {
              "type": "string"
            }
          },
          "matchAllWords": {
            "title": "🧩 Every word must match",
            "type": "boolean",
            "description": "For a multi-word search, keep only posts that contain every word.",
            "default": false
          },
          "includeComments": {
            "title": "💬 Comments",
            "type": "boolean",
            "description": "Comments of every post delivered (and of your post links). Weibo serves full threads to signed-out visitors in newest-first order.",
            "default": false
          },
          "maxComments": {
            "title": "💬 Max comments per post",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Top-level comments per post (replies are counted separately).",
            "default": 20
          },
          "commentSort": {
            "title": "↕️ Comment order",
            "enum": [
              "time",
              "hot"
            ],
            "type": "string",
            "description": "Newest first reads a whole thread (1,218 of 1,229 measured); hottest first is shorter.",
            "default": "time"
          },
          "includeReplies": {
            "title": "↩️ Replies to comments",
            "type": "boolean",
            "description": "Also read each comment's replies.",
            "default": false
          },
          "maxRepliesPerComment": {
            "title": "↩️ Max replies per comment",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Replies per comment.",
            "default": 10
          },
          "commentsOnly": {
            "title": "💬 Comments only (no post rows)",
            "type": "boolean",
            "description": "Deliver only the comments of the posts found (post rows are not delivered or charged).",
            "default": false
          },
          "maxLikersPerPost": {
            "title": "👍 Likers per post",
            "minimum": 0,
            "maximum": 150,
            "type": "integer",
            "description": "Accounts that liked each post. Weibo shows a signed-out visitor about 150. 0 = off.",
            "default": 0
          },
          "maxFollowersPerUser": {
            "title": "👥 Fans per account",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "First page of an account's fans (Weibo shows signed-out visitors page 1 only). 0 = off.",
            "default": 0
          },
          "maxFollowingPerUser": {
            "title": "➡️ Following per account",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "First page of the accounts it follows (page 1 only for signed-out visitors). 0 = off.",
            "default": 0
          },
          "includeAuthorProfiles": {
            "title": "🪪 Author profiles",
            "type": "boolean",
            "description": "One full profile row (followers, posts, bio, birthday, company, credit level) per post author, once per run.",
            "default": false
          },
          "fetchFullText": {
            "title": "📄 Full text of long posts",
            "type": "boolean",
            "description": "Long posts arrive cut at ~140 characters; this reads the whole text (free).",
            "default": true
          },
          "sentimentAnalysis": {
            "title": "🙂 Sentiment",
            "type": "boolean",
            "description": "A lexicon sentiment label and score (-1 to 1) on every post and comment (free).",
            "default": false
          },
          "extractContacts": {
            "title": "📇 Contacts in bios",
            "type": "boolean",
            "description": "E-mail, phone, WeChat and QQ written in account bios (free).",
            "default": false
          },
          "translateTo": {
            "title": "🌐 Translate to",
            "enum": [
              "",
              "en",
              "es",
              "pt",
              "fr",
              "de",
              "ru",
              "ja",
              "ko",
              "vi",
              "id",
              "th",
              "ar",
              "tr",
              "it"
            ],
            "type": "string",
            "description": "Machine-translates post, comment and topic text into `translatedText` - the translation add-on per translated row.",
            "default": ""
          },
          "geoRollup": {
            "title": "🗺️ Province rollup",
            "type": "boolean",
            "description": "A GEO_ROLLUP record: how many posts came from each province (and how many were promoted).",
            "default": false
          },
          "monitorMode": {
            "title": "🔁 Only new rows (monitor)",
            "type": "boolean",
            "description": "Posts, comments, accounts not delivered by an earlier run with the same store; boards return NEW / CHANGED / EXPIRED topics. A run that finds nothing new delivers and charges nothing.",
            "default": false
          },
          "monitorStoreName": {
            "title": "🗄️ Monitor store name",
            "type": "string",
            "description": "Named key-value store that remembers delivered rows (one per schedule).",
            "default": "weibo-monitor"
          },
          "followUpComments": {
            "title": "💬 Follow up comments",
            "type": "boolean",
            "description": "Monitor + Comments: also read new comments on the last 20 posts earlier runs delivered for each keyword.",
            "default": false
          },
          "maxResults": {
            "title": "📦 Max rows in total",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "All row types together. 0 = no total cap (the per-keyword / per-account caps still apply).",
            "default": 0
          },
          "maxPostsPerSearch": {
            "title": "🔎 Max posts per keyword",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Posts per keyword; a search walks back in time until this or your date window is reached.",
            "default": 100
          },
          "maxPostsPerUser": {
            "title": "👤 Max posts per account",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Posts per account. Signed out, Weibo shows an account's newest 10 posts plus its video and picture posts. 0 = profile only.",
            "default": 20
          },
          "includeProfile": {
            "title": "🪪 Profile row per account",
            "type": "boolean",
            "description": "One profile row per account in Accounts.",
            "default": true
          },
          "includeMediaPosts": {
            "title": "🎞️ Older video and picture posts",
            "type": "boolean",
            "description": "Past an account's newest 10, read its video and album tabs for older posts.",
            "default": true
          },
          "maxHotTimelinePosts": {
            "title": "📰 Max hot-feed posts per channel",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Posts per hot-feed channel.",
            "default": 50
          },
          "maxTopicsPerBoard": {
            "title": "🔥 Max topics per board",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Topics per hot-search board.",
            "default": 60
          },
          "compact": {
            "title": "🤏 Compact rows",
            "type": "boolean",
            "description": "Core fields only, sized for AI agents and MCP.",
            "default": false
          },
          "includeRaw": {
            "title": "🧾 Raw Weibo object",
            "type": "boolean",
            "description": "Adds Weibo's own post / profile object as `raw`.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "Apify Proxy (datacenter) by default; the run falls back to the container's own IP, then (to finish a run) residential.",
            "default": {
              "useApifyProxy": true
            }
          },
          "residentialFallback": {
            "title": "🏠 Residential fallback",
            "type": "boolean",
            "description": "If datacenter and direct stop answering mid-run, finish on residential IPs (spend kept under 7% of what the run already billed).",
            "default": true
          },
          "maxConcurrency": {
            "title": "⚡ Max concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Parallel requests.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}