{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper 微博 - Posts, Comments, Profiles, Search, No Login",
    "description": "Returns Weibo (微博) posts with text, date, reposts, comments, likes, pictures and video links: an account's 100 newest posts without a cookie, its older posts with pictures or videos, any post by link with comments and replies, profiles, keyword search by date and the hot-search board. No login.",
    "version": "1.0",
    "x-build-id": "FzPhnaE9WQscTAAPP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/benthepythondev~weibo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-benthepythondev-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/benthepythondev~weibo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-benthepythondev-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/benthepythondev~weibo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-benthepythondev-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": {
          "accounts": {
            "title": "Accounts",
            "type": "array",
            "description": "Weibo accounts whose posts or profile you want: the numeric id (1642634100), a profile link (https://weibo.com/u/1642634100, https://weibo.com/sinatech, https://m.weibo.cn/u/1642634100) or the exact name (新浪科技). Returns the account's newest posts, up to 100 per account without any cookie, each with text, date, reposts, comments, likes, pictures and video link. Switch on `olderPosts` to continue with older posts that have pictures or videos.",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post links",
            "type": "array",
            "description": "Posts by link, id or short code: https://weibo.com/1642634100/RgdYdspWX, https://m.weibo.cn/detail/5338669536772939, 5338669536772939 or RgdYdspWX. Each returns the post with its whole text and current counts; set `maxCommentsPerPost` to add its comments. The same post given in two forms is read once. A post that is deleted or not shown to a visitor gives no row and no charge.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search Weibo posts for, in Chinese or English, for example \"比亚迪\" or \"iPhone\". Returns the posts with the words from new to old, up to the limit below. Use `postedAfter` and `postedBefore` for a period; the search reads back as far as the period and the limit ask for, past the 1,000 results Weibo's own pages end at.",
            "items": {
              "type": "string"
            }
          },
          "hotSearch": {
            "title": "Hot-search board (微博热搜)",
            "type": "boolean",
            "description": "Adds the hot-search board as it stands now: about 50 topics, each a row with rank, title, heat value, label (热, 新, 沸, 爆), category and the time it entered the board. Paid lines are marked `isPromoted`. Run it on a schedule to chart a topic's rise.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum rows per account, search or board",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Posts to save for each account and each search query, and topics of the hot-search board, up to 20,000. A post link is always one post. This is the main cost lever: every post row is charged.",
            "default": 20
          },
          "accountOutput": {
            "title": "What to return for an account",
            "enum": [
              "posts",
              "profile",
              "both"
            ],
            "type": "string",
            "description": "`profile` returns one row per account and no posts: exact follower, following and post counts, reposts, comments and likes received, verification, bio, location, creation date, company.",
            "default": "posts"
          },
          "postType": {
            "title": "Kind of posts",
            "enum": [
              "all",
              "original",
              "video",
              "picture",
              "article"
            ],
            "type": "string",
            "description": "Which posts of an account to read. Every kind is its own list on Weibo with its own newest 100, so `original` reaches further back than `all` on an account that reposts a lot.",
            "default": "all"
          },
          "olderPosts": {
            "title": "Continue with older posts that have pictures or videos",
            "type": "boolean",
            "description": "Weibo shows a visitor an account's 100 newest posts. With this on, and `maxResults` above 100, the run continues from new to old with the account's posts that carry pictures and with the videos of its video tab, as far back as the account shows them. Text-only posts and reposts older than the newest 100 are not shown to a visitor and are not returned. A picture post costs one request (two a second per address), so 1,000 older posts take a few minutes.",
            "default": false
          },
          "searchSort": {
            "title": "Search order",
            "enum": [
              "newest",
              "hot"
            ],
            "type": "string",
            "description": "`newest` returns posts from new to old and reads back as far as the limit and the dates allow. `hot` returns the 50 posts Weibo ranks hottest for the words and nothing beyond them.",
            "default": "newest"
          },
          "postedAfter": {
            "title": "Posted on or after",
            "type": "string",
            "description": "Only posts published on or after this day (2026-09-01, a day in Beijing time like every date on Weibo) or within this age (7 days, 2 weeks). Applies to searches and accounts."
          },
          "postedBefore": {
            "title": "Posted on or before",
            "type": "string",
            "description": "Only posts published up to the end of this day (Beijing time). A search starts reading at this moment, so a period years back costs no more than a current one."
          },
          "fullText": {
            "title": "Whole text of long posts",
            "type": "boolean",
            "description": "Weibo's lists cut posts longer than about 140 characters. With this on, each cut post is completed with one more request and no extra charge. Off, such a row keeps the cut text and `isTruncated: true`, and a run is faster.",
            "default": true
          },
          "maxCommentsPerPost": {
            "title": "Comments per post",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Comments to save under each post, up to 20,000; 0 saves none. Each comment and reply is a row of its own, charged at the comment price, with text, date, likes, reply count, author, the author's followers and region.",
            "default": 0
          },
          "commentsSort": {
            "title": "Comment order",
            "enum": [
              "hot",
              "newest"
            ],
            "type": "string",
            "description": "Which comments come first when the limit is smaller than the comment section.",
            "default": "hot"
          },
          "includeReplies": {
            "title": "Replies under comments",
            "type": "boolean",
            "description": "Also saves the replies under each comment, each as a row with `isReply` and `rootCommentId`. They count towards the limit per post.",
            "default": false
          },
          "debug": {
            "title": "Log every request",
            "type": "boolean",
            "description": "Writes each request with its size and time to the log, for support.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}