{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper 微博 | Keyword Search, Date Range & Filters",
    "description": "Scrape Weibo (微博) posts by keyword with date range and filters: likes, comments, reposts, location, hashtags, images, video and author profiles. No login.",
    "version": "0.0",
    "x-build-id": "d2DnUBVvaiHZ0zYOY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~weibo-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-weibo-search-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/zen-studio~weibo-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-weibo-search-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/zen-studio~weibo-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-weibo-search-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": {
          "keywords": {
            "title": "🔎 Search keywords",
            "maxItems": 50,
            "type": "array",
            "description": "Add one or more keywords.<br><br>• Chinese works: <code>咖啡</code>, <code>美食</code>, <code>穿搭</code><br>• English works too: <code>iphone</code>, <code>lululemon</code><br>• So do hashtags (话题) like <code>#春节#</code>, brand names and emoji<br><br>Each keyword is searched independently and duplicates across keywords are removed automatically. Expect a few hundred unique posts per keyword; combine keywords for broader coverage.<br><br>Leave this empty if you only want the trending topics below.",
            "items": {
              "type": "string"
            }
          },
          "trendingTopics": {
            "title": "🔥 Weibo hot search topics",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Also scrape what is trending on Weibo right now (微博热搜).<br><br>Choose how many of the current top topics to add, taken in the order Weibo ranks them. They are <b>added to</b> your keywords above, not used instead of them, so you can leave the keywords empty to scrape only what is trending. Advertisements on the board are skipped, never scraped.<br><br>Keywords and topics together are capped at 50. The board moves through the day, so each run picks up whatever is hot at the moment it starts. Set to 0 to ignore trending topics."
          },
          "trendingSection": {
            "title": "📈 Which trending board",
            "enum": [
              "hot",
              "rising"
            ],
            "type": "string",
            "description": "Which hot search board the topics above come from.<br><br><b>Hot right now</b> is 实时热点, the main board: what is already big.<br><b>Rising</b> is 实时上升热点, topics climbing fast but not yet at the top, which is where you catch a story early."
          },
          "maxResultsPerKeyword": {
            "title": "📝 Maximum posts per keyword",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "How many posts to collect for each keyword. Set this to what you actually need; cost scales linearly.<br><br><ul><li>Default: <code>100</code>. Maximum: <code>5000</code>. Set <code>0</code> to fetch <b>all available</b> posts.</li></ul>",
            "default": 100
          },
          "sortBy": {
            "title": "📊 Sort order",
            "enum": [
              "comprehensive",
              "realtime"
            ],
            "type": "string",
            "description": "<b>Top posts</b> (综合) ranks by engagement and is the standard Weibo search ordering. When the ranking runs out before your maximum, the run continues with the newest posts. <b>Newest first</b> (实时) starts at the latest posts and works back through time. Recent posts have far lower engagement, so use it for live monitoring, not for finding the biggest conversations. On very busy keywords it collects a sample of each hour rather than every post.",
            "default": "comprehensive"
          },
          "fetchFullText": {
            "title": "📄 Retrieve full text for long posts",
            "type": "boolean",
            "description": "Weibo clips roughly a third of posts at about 150 characters. Turn this on to retrieve the complete text (全文) for those posts.<br><br>Every row always tells you where it stands via <code>isLongText</code> and <code>textTruncated</code>, so you can leave this off, check your results, and enable it only if the clipped posts matter for your analysis.<br><br><b>Billed separately: $2.49 per 1,000 successfully expanded posts.</b> The add-on applies only when a clipped post's full text is retrieved, not to every search result.",
            "default": false
          },
          "startDate": {
            "title": "📅 Posted after",
            "type": "string",
            "description": "Only posts published on or after this date (China time).<br><br>Pick a date, or enter a period such as <code>7 days</code> to count back from when the run starts. Leave empty for no lower limit.<br><br>With <b>Top posts</b>, the most popular posts of the period come first."
          },
          "endDate": {
            "title": "📅 Posted before",
            "type": "string",
            "description": "Only posts published on or before this date (China time). Leave empty to search up to now."
          },
          "authorType": {
            "title": "👤 Author type",
            "enum": [
              "all",
              "verified",
              "media"
            ],
            "type": "string",
            "description": "Keep only posts from verified accounts, or only from news and media outlets.",
            "default": "all"
          },
          "contentType": {
            "title": "🖼️ Content type",
            "enum": [
              "all",
              "pictures",
              "videos"
            ],
            "type": "string",
            "description": "Keep only posts that include pictures, or only posts that include a video.",
            "default": "all"
          },
          "originalOnly": {
            "title": "✍️ Original posts only",
            "type": "boolean",
            "description": "Skip reposts (转发) and keep only posts the author wrote.",
            "default": false
          },
          "excludePromoted": {
            "title": "🚫 Exclude promoted posts",
            "type": "boolean",
            "description": "Skip advertisements and promoted posts (推广).",
            "default": false
          },
          "onlyNewPosts": {
            "title": "🔁 Only new posts",
            "type": "boolean",
            "description": "Return only posts this Actor has not already delivered to you in earlier runs for the same keyword. Ideal for scheduled monitoring: each run adds just what is new.<br><br>Delivered posts are remembered in a storage in your own account named <code>weibo-search-delivered</code>. Delete it to start over.",
            "default": false
          },
          "feedback": {
            "title": "Feedback to the maintainers",
            "type": "string",
            "description": "For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}