{
  "openapi": "3.0.1",
  "info": {
    "title": "Weibo Scraper - Posts, Search, Profiles & AI Translation",
    "description": "Weibo scraper (微博) without login: keyword search, account posts, profiles, post links, comments and the hot search board. One row per post, $0.004 each (first page as a visitor; more pages with your own cookies). Paid: AI translation to English or Korean and AI topic summaries.",
    "version": "0.1",
    "x-build-id": "NfIDf4Zupb5gMjdpB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ntriqpro~weibo-scraper-translate/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ntriqpro-weibo-scraper-translate",
        "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/ntriqpro~weibo-scraper-translate/runs": {
      "post": {
        "operationId": "runs-sync-ntriqpro-weibo-scraper-translate",
        "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/ntriqpro~weibo-scraper-translate/run-sync": {
      "post": {
        "operationId": "run-sync-ntriqpro-weibo-scraper-translate",
        "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": {
          "searchQueries": {
            "title": "Search Weibo",
            "type": "array",
            "description": "Keywords to search (1-100 characters each, Chinese or any language). Each search made is charged once as search-query, also one that returns no posts; every post it returns is its own row (post). Without cookies Weibo shows visitors the first page of its real-time and top feeds (about 20 posts). The search row comes after its posts; its totals are of the posts delivered. Free plan: the first entry of the whole input only (one post of it in full; the others are counted, not shown).",
            "items": {
              "type": "string"
            }
          },
          "users": {
            "title": "Weibo accounts",
            "type": "array",
            "description": "Accounts to read: uid (1195230310), profile address (weibo.com/u/1195230310, m.weibo.cn/u/…, weibo.com/n/name), alias address (weibo.com/renminribao) or @name. Each gives a profile row (profile) and its latest posts (post). Without cookies Weibo shows visitors the first page (about 10 posts). An account Weibo says does not exist is a charged profile row with exists: false. Free plan: the first entry of the whole input only (its profile and one post in full).",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post addresses",
            "type": "array",
            "description": "Posts to read: weibo.com/<uid>/<mblogid>, m.weibo.cn/detail/<mid>, m.weibo.cn/status/<id>, a mid or an mblogid. Each is one post row with its full text. A post Weibo says does not exist is a charged row with exists: false. Free plan: the first entry of the whole input only.",
            "items": {
              "type": "string"
            }
          },
          "trendingTopics": {
            "title": "Search the hot search board (top N)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Read Weibo's hot search board (微博热搜) and search its top N topics (0-50), each like a search you entered (search-query + posts), with its rank and heat on the search row. Free plan: counts as one entry (one topic).",
            "default": 0
          },
          "maxPostsPerSearch": {
            "title": "Posts per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "The most posts taken from one search (1-1,000). Without cookies a search gives about 20; more needs `cookies`. Pages are read only while more posts are wanted and the run's maximum charge pays for them. Free plan: 1 post in the whole run.",
            "default": 20
          },
          "maxPostsPerUser": {
            "title": "Posts per account",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "The most posts taken from one account (1-1,000). Without cookies an account gives about 10; more needs `cookies`. Pages are read only while more posts are wanted and the run's maximum charge pays for them. Free plan: 1 post in the whole run.",
            "default": 20
          },
          "commentsPerPost": {
            "title": "Comments per post (paid plans only)",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Read up to this many comments of every delivered post (0-1,000, about 20 a page, hot order), page by page while the run's maximum charge pays for them. Each comment is its own row (comment). Each post whose comments Weibo answered also gets one comment-thread row listing the pages asked for, charged once as comment-thread-checked — also when it holds no comment or Weibo refused it (a failure on our side is not charged). Posts that show no comments are not asked about. (paid plans only)",
            "default": 0
          },
          "aiTranslate": {
            "title": "AI translation (paid plans only)",
            "type": "boolean",
            "description": "Translate each post with Chinese text into English or Korean (`aiLanguage`) with a language model; the translation goes on the post row and is charged as post-translated only when it passes our checks. The first 2,000 characters of a post are translated. When on, post text is sent to Anthropic's API (USA). (paid plans only)",
            "default": false
          },
          "aiSummary": {
            "title": "AI topic summary (paid plans only)",
            "type": "boolean",
            "description": "One AI summary row per search and per account (3+ posts); it reads at most 30 posts, the first 300 characters of each: what the posts are about, sentiment and up to 5 themes, each citing posts of this run; charged as topic-summary only when it passes our checks. When on, post text is sent to Anthropic's API (USA). (paid plans only)",
            "default": false
          },
          "aiLanguage": {
            "title": "AI language",
            "enum": [
              "en",
              "ko"
            ],
            "type": "string",
            "description": "The language of AI translations and summaries.",
            "default": "en"
          },
          "aiMaxItems": {
            "title": "AI items per run",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "The most posts and summaries sent to the model in one run (1-5,000). Past it posts are delivered without translation and without that charge.",
            "default": 300
          },
          "cookies": {
            "title": "Your Weibo cookies (optional, paid plans only)",
            "type": "string",
            "description": "Optional: the cookies of YOUR OWN logged-in weibo.com session (\"SUB=…; SUBP=…\" or a cookie export in JSON), to read past the first page of searches and accounts. Never a password. They are used only for those pages and never logged, saved or put in a row. Weibo may limit or lock an account used for automated reading: use one you accept that risk for. (paid plans only)"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Off by default: the run connects directly and, if Weibo refuses, moves once to a residential proxy (Hong Kong) on its own. Turn a proxy on here to send every request through it. Proxy usage is included in the event prices.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}