{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper - Posts, Profiles, Hashtags & Hot Search",
    "description": "Scrape Weibo (微博) without login: keyword search, a profile's public posts, post URLs, hashtags and topics, and the live hot search board. Likes, comments, reposts, pictures, video links, region, hashtags and the author's public profile. US$ 4 per 1,000 items; error rows are free.",
    "version": "0.1",
    "x-build-id": "5gsmDhjbgYg7hLHma"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~weibo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-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/scrapewise~weibo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-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/scrapewise~weibo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "user",
              "posts",
              "hashtag",
              "hot"
            ],
            "type": "string",
            "description": "What to scrape. If you leave it on 'search' but fill another field, the Actor uses the field you filled, so API and MCP calls never fail on the mode.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search keyword",
            "type": "string",
            "description": "Keyword for 'search' mode. Chinese (小米) and Latin keywords (Tesla) both work. The Actor queries four Weibo search tabs for the same keyword and merges the results."
          },
          "searchQueries": {
            "title": "More search keywords (optional)",
            "type": "array",
            "description": "Extra keywords for 'search' mode. Each keyword returns up to 'Max items' posts; duplicates across keywords are removed and never charged twice.",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtags or topics",
            "type": "array",
            "description": "For 'hashtag' mode: topic names with or without the # marks (小米18 or #小米18#). Each topic returns up to 'Max items' posts from its public topic timeline.",
            "items": {
              "type": "string"
            }
          },
          "userIds": {
            "title": "Profiles (uid, URL or display name)",
            "type": "array",
            "description": "For 'user' mode: the numeric uid (1749127163), a profile URL (m.weibo.cn/u/1749127163 or weibo.com/u/1749127163) or the display name, which is resolved through Weibo's public profile search.",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post URLs or ids",
            "type": "array",
            "description": "For 'posts' mode: m.weibo.cn/detail/<id> or weibo.com/<uid>/<bid> URLs, the numeric id, or the short bid (RibKS4kEl). Each line returns one post with full stats.",
            "items": {
              "type": "string"
            }
          },
          "publishedAfter": {
            "title": "Published after",
            "type": "string",
            "description": "YYYY-MM-DD. Drops posts published before this day. It filters what Weibo returns; it does not make Weibo serve older posts, because the deslogged API only serves the first page."
          },
          "publishedBefore": {
            "title": "Published before",
            "type": "string",
            "description": "YYYY-MM-DD, inclusive. Drops posts published after this day. Same caveat as 'Published after'."
          },
          "includeComments": {
            "title": "Public comments",
            "type": "boolean",
            "description": "Adds the public comments Weibo shows on each post as extra rows with type 'comment'. Only the comment text, date, likes and the commenter's display name are returned, never their id, link or picture. Each comment counts as one delivered item.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many public comments to take from each post when comments are on. Weibo serves up to 20 without login.",
            "default": 20
          },
          "includeProfile": {
            "title": "Profile row in user mode",
            "type": "boolean",
            "description": "In 'user' mode, adds one row with type 'profile' per profile: followers, following, post count, bio, verification and avatar. Counts as one delivered item.",
            "default": true
          },
          "includeLongText": {
            "title": "Full text of long posts",
            "type": "boolean",
            "description": "Weibo truncates long posts in lists. When on, every truncated post is opened once to bring the full text. No extra charge.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum items per keyword, per hashtag or per profile; the run total for 'posts' and 'hot'. Weibo only serves the first page of every list without login, so one keyword returns about 40 to 60 distinct posts; use several keywords for more volume.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy is the default and works for Weibo. Blocked requests are retried on a new IP with a new visitor session, and residential is used as a reserve after three blocked datacenter attempts.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}