{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper - Search, Accounts, Comments & Hot List",
    "description": "Search Weibo, read an account's latest posts, pull the comments under a post, or take the real-time hot search list. One row per post, comment or hot topic: text, author, followers, likes, reposts, pictures and place. A search gives the 50 to 90 posts Weibo shows without signing in.",
    "version": "0.1",
    "x-build-id": "cILJYbsKOR71eup0i"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~weibo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-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/dami_studio~weibo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-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/dami_studio~weibo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-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": {
          "searchTerms": {
            "title": "Search terms",
            "maxItems": 100,
            "type": "array",
            "description": "Words to search Weibo for, one per line, in Chinese or any other language. Weibo shows people who aren't signed in the first page of each of its five result tabs (top, latest, hot, video, pictures), which usually comes to 50 to 90 different posts per search. Up to 100 searches a run.",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerSearch": {
            "title": "Posts per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Stop a search after this many posts. Weibo rarely has more than about 90 to show for one search, so a higher number returns what there is.",
            "default": 50
          },
          "matchAllWords": {
            "title": "Only posts that contain every word",
            "type": "boolean",
            "description": "Weibo's search also returns posts that match only part of a phrase, or match on a picture. On: a post is kept only when its text, the post it reposts or its topic card contains every word you searched (words are split on spaces, so 蔚来汽车 is one word and 蔚来 汽车 is two). Off: everything Weibo's search returns. Posts left out are never charged.",
            "default": true
          },
          "users": {
            "title": "Accounts",
            "maxItems": 100,
            "type": "array",
            "description": "Accounts to read, one per line: the numeric id (1749127163), a profile link (weibo.com/u/1749127163, weibo.com/n/雷军, weibo.com/rmrb, m.weibo.cn/u/1749127163) or the screen name, with or without @. Weibo shows people who aren't signed in an account's latest ten or so posts plus the latest of each kind (original, video, photo, article), usually 25 to 35 posts in all.",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerUser": {
            "title": "Posts per account",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Stop an account after this many posts, newest first.",
            "default": 30
          },
          "postUrls": {
            "title": "Posts for comments",
            "maxItems": 100,
            "type": "array",
            "description": "Posts whose comments you want, one per line: the post's link (weibo.com/2803301701/RkyFjzhSX, m.weibo.cn/detail/5348998178410235) or its id.",
            "items": {
              "type": "string"
            }
          },
          "maxCommentsPerPost": {
            "title": "Comments per post",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Stop a post after this many comments. Replies, when you ask for them, come on top of this.",
            "default": 100
          },
          "commentsOrder": {
            "title": "Comments order",
            "enum": [
              "newest",
              "hot"
            ],
            "type": "string",
            "description": "Newest first goes through every comment Weibo lists, latest at the top. Hot follows Weibo's ranking, which ends after about 300 comments.",
            "default": "newest"
          },
          "includeReplies": {
            "title": "Include replies",
            "type": "boolean",
            "description": "Also return the replies under each comment, as comment rows with parentCommentId set. Each reply is charged as a comment.",
            "default": false
          },
          "maxRepliesPerComment": {
            "title": "Replies per comment",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Weibo lists up to about 100 replies under one comment to people who aren't signed in.",
            "default": 20
          },
          "hotList": {
            "title": "Hot search list",
            "type": "boolean",
            "description": "Return Weibo's real-time hot search list: about 50 ranked topics with their heat figure and category, plus the pinned topic above them. The promoted slot in the list is left out.",
            "default": false
          },
          "fullText": {
            "title": "Full text of long posts",
            "type": "boolean",
            "description": "Weibo cuts long posts short in its lists. On: the whole text is fetched for each one. Off: those rows carry the shortened text, with textIsComplete set to false.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}