{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper Pro [From $1.50/1K💰] | Posts",
    "description": "Scrape Weibo hot search, posts, comments, user profiles, fans, followers, likes and topics without login. Get text, authors, media and engagement metrics. From $1.50 per 1,000 records.",
    "version": "0.1",
    "x-build-id": "ssQdUkGKUh7wW0wj0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ahmed_jasarevic~weibo-scraper-pro/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ahmed_jasarevic-weibo-scraper-pro",
        "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/ahmed_jasarevic~weibo-scraper-pro/runs": {
      "post": {
        "operationId": "runs-sync-ahmed_jasarevic-weibo-scraper-pro",
        "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/ahmed_jasarevic~weibo-scraper-pro/run-sync": {
      "post": {
        "operationId": "run-sync-ahmed_jasarevic-weibo-scraper-pro",
        "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": {
          "hotSearch": {
            "title": "Scrape realtime hot search",
            "type": "boolean",
            "description": "Collect the live Weibo hot search board with rank, keyword, heat and topic URL.",
            "default": true
          },
          "hotTimeline": {
            "title": "Scrape hot timeline",
            "type": "boolean",
            "description": "Collect the Weibo discovery/hot timeline feed. These posts are separate from the ranked hot-search board.",
            "default": false
          },
          "rankingCategories": {
            "title": "Ranking categories",
            "type": "array",
            "description": "Collect one or more s.weibo.com ranking boards. Accepted values: realtimehot, entrank, socialevent, tech, life, sport, game, recommend. Uses a separate weibo.com visitor session; retry or use a proxy if Sina shows a visitor challenge.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Keyword searches",
            "type": "array",
            "description": "Keywords or phrases to search on Weibo. Anonymous runs can paginate through multiple result pages.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "advancedSearchQueries": {
            "title": "Advanced searches",
            "type": "array",
            "description": "Keywords searched through the weibo.com advanced search endpoint with hot sorting and optional media/date filters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "topicQueries": {
            "title": "Topic searches",
            "type": "array",
            "description": "Topic names such as 人工智能. The Actor wraps the value in #...#, returns matching posts and the topic card when available.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "pictureSearchQueries": {
            "title": "Picture searches",
            "type": "array",
            "description": "Keywords searched in Weibo's picture channel. Returns posts that contain pictures.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "videoSearchQueries": {
            "title": "Video searches",
            "type": "array",
            "description": "Keywords searched in Weibo's video channel. Returns posts that contain video.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "userSearchQueries": {
            "title": "User searches",
            "type": "array",
            "description": "Keywords used to discover Weibo accounts. Returns user records with bio, followers, verification and profile URL.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "userIds": {
            "title": "User profiles",
            "type": "array",
            "description": "Numeric Weibo UIDs or profile URLs such as https://weibo.com/u/2803301701. The actor returns the profile plus recent posts.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "fanUserIds": {
            "title": "Fans of users",
            "type": "array",
            "description": "Numeric UIDs or profile URLs whose fans/followers should be collected.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "followingUserIds": {
            "title": "Following of users",
            "type": "array",
            "description": "Numeric UIDs or profile URLs whose following list should be collected.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post URLs or IDs",
            "type": "array",
            "description": "Post URLs such as https://m.weibo.cn/detail/5360224274749386 or bare numeric post IDs. The actor returns the post and optionally its comments.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "likerPostUrls": {
            "title": "Posts whose likers to collect",
            "type": "array",
            "description": "Post IDs or URLs. Returns the accounts that liked each post. Anonymous access works for public posts.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "repostPostUrls": {
            "title": "Posts whose reposts to collect",
            "type": "array",
            "description": "Post IDs or URLs. Returns repost records. Weibo usually requires a logged-in cookie for repost timelines.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxPosts": {
            "title": "Max posts",
            "minimum": 0,
            "type": "integer",
            "description": "Target number of post records across search, profile, topic, media, advanced-search and hot-timeline targets (0 = unlimited). Hot search, reposts, users and comments are counted separately.",
            "default": 10
          },
          "fillToMaxPosts": {
            "title": "Fill to max posts",
            "type": "boolean",
            "description": "Automatically request extra search and profile pages until Max posts is reached, even beyond the page limits below. Disable to use the page limits strictly.",
            "default": true
          },
          "maxSearchPages": {
            "title": "Max search pages",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Initial result-page limit per keyword. With Fill to max posts enabled, the Actor extends this automatically when needed. Higher values can increase runtime.",
            "default": 3
          },
          "maxProfilePages": {
            "title": "Max profile pages",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Initial timeline-page limit per profile. With Fill to max posts enabled, the Actor extends this automatically when needed. Weibo exposes up to about 100 indexed pages.",
            "default": 3
          },
          "maxPagesPerTarget": {
            "title": "Max pages per additional target",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Page limit for topics, media searches, user searches, fans, following, likers and reposts.",
            "default": 3
          },
          "maxItemsPerTarget": {
            "title": "Max records per additional target",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum users, likes, reposts or topics collected for each additional target.",
            "default": 100
          },
          "maxHotTimelinePages": {
            "title": "Max hot timeline pages",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many hot-timeline batches to request. The default of 1 is usually enough for a trending snapshot.",
            "default": 1
          },
          "advancedSearchIncludeType": {
            "title": "Advanced search media filter",
            "enum": [
              "",
              "pic",
              "video"
            ],
            "type": "string",
            "description": "Optional media filter for advanced searches. Leave empty for all posts.",
            "default": ""
          },
          "advancedSearchSince": {
            "title": "Advanced search start date",
            "type": "string",
            "description": "Optional start date in YYYY-MM-DD format. Used only when both start and end dates are set.",
            "default": ""
          },
          "advancedSearchUntil": {
            "title": "Advanced search end date",
            "type": "string",
            "description": "Optional end date in YYYY-MM-DD format. Used only when both start and end dates are set.",
            "default": ""
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Fetch top-level comments for every collected post. This adds requests and dataset rows.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum new top-level comments to collect per post. In monitoring mode, already seen comments do not count toward this limit.",
            "default": 20
          },
          "maxCommentPages": {
            "title": "Max comment pages per post",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum comment pages inspected per post. Useful for finding new comments on posts that were already collected.",
            "default": 3
          },
          "includeReplies": {
            "title": "Include comment replies",
            "type": "boolean",
            "description": "Fetch replies under collected comments. This can multiply the number of requests.",
            "default": false
          },
          "maxRepliesPerComment": {
            "title": "Max replies per comment",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum new replies to collect for each top-level comment. In monitoring mode, already seen replies do not count toward this limit.",
            "default": 5
          },
          "maxReplyPages": {
            "title": "Max reply pages per comment",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum reply pages inspected per inline comment. Applies only when replies are enabled.",
            "default": 2
          },
          "includeUserProfiles": {
            "title": "Include user profile records",
            "type": "boolean",
            "description": "Push a user record with bio, followers, verification and location when loading profiles or user search results.",
            "default": true
          },
          "includeFullText": {
            "title": "Fetch full text for long posts",
            "type": "boolean",
            "description": "Use Weibo's long-text endpoint when a post is truncated. Disable to reduce requests.",
            "default": true
          },
          "onlyNewItems": {
            "title": "Only new posts and comments",
            "type": "boolean",
            "description": "Skip posts and comments seen in previous runs. Useful for scheduled brand monitoring. Hot search and user profiles are always returned.",
            "default": false
          },
          "stateKey": {
            "title": "Monitoring state key",
            "type": "string",
            "description": "Key-value store key used to remember seen IDs when Only new posts and comments is enabled. Use a different key for each independent monitor.",
            "default": "weibo-pro-monitor"
          },
          "stateStoreName": {
            "title": "Monitoring store name",
            "type": "string",
            "description": "Named key-value store that persists seen IDs across runs. Change it to keep independent monitors fully isolated.",
            "default": "weibo-monitor"
          },
          "weiboCookie": {
            "title": "Weibo cookie (optional)",
            "type": "string",
            "description": "Optional browser Cookie header for logged-in-only data. Search, profile timelines and public comments work anonymously; leave empty for normal runs. Treat this value as a secret.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy is enabled by default because Weibo can block direct Apify cloud egress. Disable it for local runs or if direct access works. Residential proxies are recommended for large or repeated runs.",
            "default": {
              "useApifyProxy": true
            }
          },
          "requestDelayMillis": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Minimum delay between Weibo requests. Keep at least 500 ms to avoid rate limits.",
            "default": 700
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry network errors, HTTP 403/429 and server errors.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}