{
  "openapi": "3.0.1",
  "info": {
    "title": "Chinese Social Listening — Weibo, RedNote, Bilibili, Douban",
    "description": "Chinese social listening in one API call: brand mentions from Weibo, Bilibili and Douban groups with no login, Xiaohongshu (RedNote) and Xueqiu with your cookie, plus Black Cat (黑猫投诉) consumer complaints. Sentiment, share of voice vs competitors, deduplicated. $0.06 per mention.",
    "version": "0.10",
    "x-build-id": "35TTD47o89WMR1Y7G"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zhorex~chinese-brand-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zhorex-chinese-brand-monitor",
        "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/zhorex~chinese-brand-monitor/runs": {
      "post": {
        "operationId": "runs-sync-zhorex-chinese-brand-monitor",
        "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/zhorex~chinese-brand-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-zhorex-chinese-brand-monitor",
        "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",
        "required": [
          "brandKeyword"
        ],
        "properties": {
          "brandKeyword": {
            "title": "Brand keyword",
            "type": "string",
            "description": "Brand name in Chinese or English. Accepts both — e.g. '李宁', 'Li-Ning', 'Apple', '耐克', 'NIKE'. For best recall on bilingual brands, run twice (once per language) and merge."
          },
          "competitorBrands": {
            "title": "Competitor brands (share-of-voice)",
            "type": "array",
            "description": "Optional. Add competitor brand names to track alongside your brand in the SAME run — the Actor returns all of them and adds a share-of-voice rollup (mentions, share %, and reach-weighted sentiment per brand) to the SUMMARY. Chinese or English. Leave empty to monitor a single brand. Capped at 5 competitors per run.",
            "items": {
              "type": "string"
            }
          },
          "autoLocalize": {
            "title": "Auto-localize brand name (Nike to the Chinese term)",
            "type": "boolean",
            "description": "When the brand is a known global name (Nike, Adidas, Apple, Tesla, BYD, Pop Mart, and ~50 more), also search its Chinese name (Nike to 耐克) and merge the results — Chinese platforms index by the native name, so this matters a lot for recall on a Latin brand input. On by default. Add your own mappings via searchAliases.",
            "default": true
          },
          "searchAliases": {
            "title": "Extra search aliases (primary brand only)",
            "type": "array",
            "description": "Optional extra terms to search and merge into your primary brand's mentions — its Chinese name (if not in the built-in dictionary), sub-brands, product lines, or common spellings. Applied to brandKeyword only; merged and deduplicated into one result set.",
            "items": {
              "type": "string"
            }
          },
          "platforms": {
            "title": "Platforms",
            "uniqueItems": true,
            "type": "array",
            "description": "Subset of platforms to query. Default: the five social platforms (Weibo, Bilibili, RedNote, Douban, Xueqiu). Black Cat (黑猫投诉, consumer complaints) is opt-in: it runs only when you add 'blackcat' here, and its complaints are billed like any mention. Disabling platforms lowers cost and runtime.",
            "items": {
              "type": "string",
              "enum": [
                "weibo",
                "bilibili",
                "rednote",
                "douban",
                "xueqiu",
                "blackcat"
              ],
              "enumTitles": [
                "Weibo (微博) — microblog",
                "Bilibili (B站) — video",
                "RedNote (小红书 / Xiaohongshu) — lifestyle",
                "Douban (豆瓣) — group discussions",
                "Xueqiu (雪球) — stock/cashtag sentiment",
                "Black Cat (黑猫投诉) — consumer complaints (opt-in)"
              ]
            },
            "default": [
              "weibo",
              "bilibili",
              "rednote",
              "douban",
              "xueqiu"
            ]
          },
          "blackCatCompanyIds": {
            "title": "Black Cat company IDs (optional, needs 'blackcat' in platforms)",
            "type": "array",
            "description": "Optional, used only when 'blackcat' is in platforms. Your brand's company pages on Black Cat (黑猫投诉): the number after couid= in the company page URL, or the URL itself (e.g. https://tousu.sina.com.cn/company/view/?couid=2092643773). Each company's complaint list is read, most recently active first, keeping complaints filed inside lookbackDays, up to maxMentionsPerPlatform (shared with the feed matches, which come first). These rows are attributed to brandKeyword (competitors are matched in Black Cat's public feed only). Leave empty to match your brand in the public latest-complaints feed only.",
            "items": {
              "type": "string"
            }
          },
          "maxMentionsPerPlatform": {
            "title": "Max mentions per platform",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on mentions returned per platform. Controls cost and runtime.",
            "default": 100
          },
          "lookbackDays": {
            "title": "Lookback window (days)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Recency filter. Applied per platform on a best-effort basis — some platforms don't expose a server-side date filter (we discard older mentions client-side).",
            "default": 7
          },
          "sentimentAnalysis": {
            "title": "Sentiment analysis",
            "type": "boolean",
            "description": "Run lexicon-based Chinese sentiment scoring on each mention. Adds polarity (positive/neutral/negative) and a -1.0…+1.0 score. Disable to reduce runtime by ~5%.",
            "default": true
          },
          "deduplication": {
            "title": "Cross-platform deduplication",
            "type": "boolean",
            "description": "Detect near-duplicate brand mentions reposted across platforms within 24h. Duplicates are merged into the canonical mention's crossPlatformReposts array. Billed only on canonical records.",
            "default": true
          },
          "deltaMode": {
            "title": "Delta mode — only new since last run",
            "type": "boolean",
            "description": "Returns and bills ONLY mentions that are new since this Actor's previous run for the same brand, so a scheduled monitor hands you a clean brand-health delta with no de-duplication on your side. <b>Understand the trade before you switch it on:</b> a full run sweeps every platform and returns the whole current mention set; a delta run returns only what has appeared since last time, so on a quiet day it returns nothing and bills nothing. Most brands are mentioned in bursts, not continuously, so a daily delta monitor is a trickle by design, not a broken run. Pick delta when you want to be told what is NEW; leave it off when you want the mention set itself — for a first baseline, for a report, or for sentiment over a period.",
            "default": false
          },
          "velocityTracking": {
            "title": "Velocity / spike tracking",
            "type": "boolean",
            "description": "For scheduled monitoring: track mention volume run-over-run and flag spikes. Adds a 'velocity' block to the SUMMARY (current count vs trailing baseline, % change, and a spike flag per brand) so an hourly schedule becomes an early-warning signal for crises, viral moments, or pre-earnings ticker surges. Works best on a steady cron cadence.",
            "default": false
          },
          "cookieStrings": {
            "title": "Per-platform cookies (optional)",
            "type": "object",
            "description": "Optional cookie strings keyed by platform name (weibo / bilibili / rednote / douban / xueqiu). RedNote and Xueqiu keyword search answer only to a signed-in session, so those two return nothing without one; Weibo, Bilibili and Douban work without cookies (a Weibo cookie raises recall). Format: paste the raw Cookie header value from your browser's DevTools."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy configuration. RESIDENTIAL with CN country is recommended for the highest recall and lowest rate-limit risk.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "CN"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}