# Xigua 西瓜视频 Detail Scraper - 70+ Fields + MP4 下载 (`zen-studio/xigua-video-detail-scraper`) Actor

Extract 70+ fields from Xigua (西瓜视频) videos by URL or ID. Title, author, stats, 1080p/720p/480p MP4 download URLs, hashtags, covers, related videos, comments. Cross-app linkage to Douyin (抖音) via awemeUserId/secUserId. ByteDance sibling platform. 西瓜视频下载.

- **URL**: https://apify.com/zen-studio/xigua-video-detail-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Social media, Videos, Automation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.99 / 1,000 videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 西瓜视频详情爬虫 Xigua Video Detail Scraper | URL / ID → 70+ Fields (2026)

<blockquote style="border-left:4px solid #4C945E;background:#F0FDF4;padding:12px 16px">
<span style="font-size:16px;font-weight:700;color:#1C1917">70+ fields per video + 20 related videos free per call</span> <span style="font-size:15px;color:#57534E"> — title, author, engagement stats, resolved 1080p/720p/480p playback URLs, hashtags, covers, and optional comments with nested replies. Paste a URL or ID and hit Start.</span>
</blockquote>

<table style="width:100%">
<tr>
<td colspan="3" style="padding:10px 14px;background:#4C945E;border:none;border-radius:4px 4px 0 0">
<span style="color:#FAFAF9;font-size:14px;font-weight:700;letter-spacing:0.5px">Zen Studio Xigua 西瓜视频</span>
<span style="color:#D7F4DD;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Complete video data from China's long-form video platform</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;border-right:none;border-top:none;vertical-align:top;width:33%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-dexCSKEZtKS8hg4fT-lD4weyiYga-shigua-____-scraper-logo.jpg" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/zen-studio/xigua-video-search-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Xigua Search Scraper</a><br>
<span style="color:#78716C;font-size:11px">Keyword / hashtag → up to 1,000 videos</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;background:#E8F5E9;vertical-align:top;width:33%">
<span style="color:#4C945E;text-decoration:none;font-weight:700;font-size:13px">Xigua Video Detail</span><br>
<span style="color:#4C945E;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:33%">
<span style="color:#78716C;font-size:13px;font-weight:600">Creator Scraper</span><br>
<span style="color:#78716C;font-size:11px">Coming soon — all videos by creator</span>
</td>
</tr>
</table>

#### Copy to your AI assistant

````

zen-studio/xigua-video-detail-scraper on Apify. Fetches Xigua (西瓜视频) video details by URL or ID: 70+ fields per video including title, abstract, author profile, engagement stats (plays, likes, comments, shares, repins), resolved playback URLs at multiple resolutions, cover images, hashtags, download-blocked status, up to 20 related videos, and optional comments with nested replies. Call ApifyClient("TOKEN").actor("zen-studio/xigua-video-detail-scraper").call(run\_input={"videoInputs":\["7544552088903175464"]}), then client.dataset(run\["defaultDatasetId"]).list\_items().items. Full spec: GET https://api.apify.com/v2/acts/zen-studio~xigua-video-detail-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

````

![Xigua Video Detail Scraper](https://iili.io/BP2yLKv.png)

### Key Features

- **70+ fields per video** — title, abstract, engagement stats (plays, likes, comments, shares, repins), author profile, hashtags, cover images, and resolved multi-resolution playback URLs
- **5 input formats supported** — bare 19-digit ID, www.ixigua.com, m.ixigua.com, toutiao.com/group/, and short share links (v.ixigua.com)
- **20 related videos free per call** — each with title, author, duration, stats, and playback info, included at no extra cost
- **Optional comments and replies** — fetch top-level comments and nested reply threads; billed separately at $3.99 per 1,000 events

### How to Scrape Xigua Video Details

If you have a list of video URLs or IDs, use this actor.

If you want to discover videos by keyword or hashtag first, use the [Xigua Video Search Scraper](https://apify.com/zen-studio/xigua-video-search-scraper) instead.

#### Basic — single video by ID

```json
{
    "videoInputs": ["7544552088903175464"]
}
````

#### Batch — multiple URLs at once

```json
{
    "videoInputs": [
        "https://www.ixigua.com/7591466246211677363",
        "https://m.ixigua.com/7544552088903175464",
        "https://toutiao.com/group/7370341525168849434/"
    ]
}
```

#### With comments (no replies)

```json
{
    "videoInputs": ["7544552088903175464"],
    "includeComments": true,
    "maxCommentsPerVideo": 100
}
```

#### Full output — comments + replies + related videos

```json
{
    "videoInputs": [
        "7544552088903175464",
        "https://www.ixigua.com/7591466246211677363"
    ],
    "includeRelatedVideos": true,
    "includeComments": true,
    "maxCommentsPerVideo": 50,
    "includeReplies": true,
    "maxRepliesPerComment": 20
}
```

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `videoInputs` | array | *required* | Video URLs or IDs to fetch (up to 1,000 per run) |
| `startUrls` | array | — | Fallback input for URL list widgets; ignored when `videoInputs` is set |
| `includeRelatedVideos` | boolean | `true` | Include up to 20 related videos per result (free, no extra billing) |
| `includeComments` | boolean | `false` | Fetch top-level comments per video (billed at $3.99/1K events) |
| `maxCommentsPerVideo` | integer | `50` | Max comments per video; `0` = unlimited (see cost warning below) |
| `includeReplies` | boolean | `false` | Fetch reply threads for comments that have replies |
| `maxRepliesPerComment` | integer | `50` | Max replies per comment; `0` = unlimited |

**⚠️ Cost warning:** Setting `maxCommentsPerVideo` to `0` fetches every comment for every video.

Viral videos with 10K+ comments can produce thousands of comment events at $3.99 per 1K — bills can grow quickly.

Default 50 is safe for casual use.

### What Data Can You Extract from Xigua Videos?

Every result includes:

**Video identity**

- `groupId`, `itemId`, `awemeId`, `videoId` — all ID variants returned
- `entityType`, `aggrType` — content classification
- `inputUrl`, `inputType`, `inputIndex` — echoes back which input produced this row

**Content**

- `title`, `abstract`, `content` — full text fields
- `mediaName` — source channel name if set
- `hashtags` — array with name, position (`start`/`end`), and `rank` per tag
- `isOriginal`, `isKeyVideo`, `downloadBlocked`, `downloadBlockedReason`

**URLs**

- `videoUrl`, `shareUrl`, `articleUrl`, `displayUrl`
- `firstFrameImageUrls`, `middleImageUrls`, `largeImageUrls`, `verticalImageUrls`, `detailVideoLargeImageUrls`, `covers` — multiple cover image arrays

**Engagement stats** (inside `stats.*`)

- `playCount`, `commentCount`, `diggCount`, `buryCount`, `shareCount`, `repinCount`, `videoLikeCount`
- Note: `playCount` and `impressionCount` are not populated for seed videos (same limitation as the search actor)

**Author** (inside `author.*`)

- `userId`, `awemeUserId`, `secUserId`, `name`, `description`
- `avatarUrl`, `followerCount`, `followerCountText`, `videoTotalCount`
- `isLiving`, `userVerified`, `verifiedContent`

**Playback** (inside `playback.*`)

- `resolved` — whether playback info was fetched
- `variants` — array of resolution options (1080p, 720p, 480p, etc.) with direct HTTPS URLs (plain, no decoding needed)
- `variants[*].urlExpire` — Unix timestamp when the URL expires (typically ~24 hours from fetch time)
- `adaptiveUrls.dynamicVideoList`, `adaptiveUrls.dynamicAudioList` — HLS/DASH manifests (plain HTTPS URLs)
- `videoDuration`, `urlExpire`, `posterUrl`, `coverUrl`, `autoDefinition`
- `enableSsl`, `enableAdaptive`, `hasEmbeddedSubtitle`, `subtitleInfos`

**Related videos** (inside `relatedVideos` array, up to 20)

- Same metadata fields: title, author, duration, stats, covers — included free per call

**Comments** (inside `comments` array, when enabled)

- `commentId`, `text`, `createTime`, `diggCount`, `replyCount`
- Author sub-object: userId, name, avatarUrl
- `replies` sub-array with same structure

#### Output Example

Each result contains all 37 top-level fields. `relatedVideos` returns up to 20 items (2 shown below). `comments` and their `replies` are included only when `includeComments` is enabled (1 comment with 1 reply shown below).

```json
{
  "entityType": "videoDetail",
  "inputUrl": "https://www.ixigua.com/7591466246211677363",
  "inputType": "gid",
  "inputIndex": 1,
  "groupId": "7591466246211677363",
  "itemId": "7591466246211677363",
  "awemeId": "7591466246211677363",
  "videoId": "v2700fgi0000d5d4s7vog65pq61i27h0",
  "aggrType": "1",
  "title": "保持一颗纯净的心 面对平淡生活里的刺",
  "abstract": "保持一颗纯净的心 面对平淡生活里的刺#正常穿搭",
  "content": "保持一颗纯净的心 面对平淡生活里的刺#正常穿搭",
  "mediaName": "",
  "videoUrl": "https://www.ixigua.com/7591466246211677363",
  "shareUrl": "https://www.iesdouyin.com/xg/video/7591466246211677363/?app=video_article&timestamp=1777211601...",
  "articleUrl": "",
  "displayUrl": "",
  "videoDurationSecs": 15,
  "publishTime": 1767525973,
  "publishTimeIso": "2026-01-04T11:26:13+00:00",
  "firstFrameImageUrls": [
    "https://p3-sign.douyinpic.com/tos-cn-p-0015c000-ce/oMoS5kwZtAgzB7ejgQFEtnODffwPCKJEJBDa0Q~c5_2160x2886.jpeg?...",
    "https://p26-sign.douyinpic.com/tos-cn-p-0015c000-ce/oMoS5kwZtAgzB7ejgQFEtnODffwPCKJEJBDa0Q~c5_2160x2886.jpeg?..."
  ],
  "middleImageUrls": [
    "https://p3-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~tplv-pk90l89vgd-cover-blur:864:486:90.jpeg?...",
    "https://p5-ex-gddgtc-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~tplv-pk90l89vgd-cover-blur:864:486:90.jpeg?..."
  ],
  "largeImageUrls": [
    "https://p3-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~tplv-pk90l89vgd-cover-blur:864:486:90.jpeg?...",
    "https://p26-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~tplv-pk90l89vgd-cover-blur:864:486:90.jpeg?..."
  ],
  "verticalImageUrls": [
    "https://p3-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~c5_640x840.jpeg?...",
    "https://p11-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~c5_640x840.jpeg?..."
  ],
  "detailVideoLargeImageUrls": [
    "https://p3-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~tplv-pk90l89vgd-cover-blur:864:486:90.jpeg?...",
    "https://p26-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~tplv-pk90l89vgd-cover-blur:864:486:90.jpeg?..."
  ],
  "covers": [
    "https://p3-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~tplv-pk90l89vgd-cover-blur:864:486:90.jpeg?...",
    "https://p26-sign.douyinpic.com/tos-cn-p-0015c000-ce/oMoS5kwZtAgzB7ejgQFEtnODffwPCKJEJBDa0Q~c5_2160x2886.jpeg?..."
  ],
  "hashtags": [
    {
      "id": "0",
      "name": "正常穿搭",
      "start": null,
      "end": null,
      "rank": null
    }
  ],
  "isOriginal": false,
  "isKeyVideo": false,
  "downloadBlocked": true,
  "downloadBlockedReason": "暂不支持下载",
  "stats": {
    "playCount": null,
    "commentCount": 13,
    "diggCount": 1922,
    "buryCount": 0,
    "shareCount": 135,
    "impressionCount": null,
    "repinCount": 395,
    "videoLikeCount": null
  },
  "author": {
    "userId": "2632645731710877",
    "awemeUserId": null,
    "secUserId": null,
    "name": "酥酥猪❄️",
    "description": "",
    "avatarUrl": "https://p3.bdxiguaimg.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_de26ee906ba2c211e3f11e7acea62acd.jpeg?from=327834062",
    "followerCount": 991,
    "followerCountText": "991",
    "videoTotalCount": 6,
    "isLiving": false,
    "userVerified": null,
    "verifiedContent": null
  },
  "relatedVideos": [
    {
      "rank": 0,
      "groupId": "7406112407258399251",
      "itemId": "7406112407258399251",
      "awemeId": null,
      "videoId": "v0201ag10000cr3smnfog65stmhi3pa0",
      "title": "经典老歌集《忘了吧》《大雁南飞》《红颜知己》《如果爱还在》…",
      "abstract": "",
      "shareUrl": "https://m.ixigua.com/video/7406112407258399251/?app=video_article&timestamp=1777211601",
      "publishTime": 1724369918,
      "publishTimeIso": "2024-08-22T23:38:38+00:00",
      "videoDurationSecs": 1892,
      "covers": [
        "https://p3-sign.bdxiguaimg.com/tos-cn-i-0026/oAeXP27ACAIIACArfyGFIbQfHIAfZlm8yLSGGB~tplv-pk90l89vgd-slimming:864:486.webp?...",
        "https://p26-sign.bdxiguaimg.com/tos-cn-i-0026/oAeXP27ACAIIACArfyGFIbQfHIAfZlm8yLSGGB~tplv-pk90l89vgd-slimming:864:486.webp?..."
      ],
      "stats": {
        "playCount": 0,
        "commentCount": 104,
        "diggCount": 3230,
        "shareCount": 168,
        "repinCount": 2381,
        "impressionCount": 8076391
      },
      "author": {
        "userId": "4300931871802264",
        "name": "琴心音乐QGL",
        "avatarUrl": "https://sf3-cdn-tos.bdxiguastatic.com/img/user-avatar/090975589a20d5e5a4a3aa3a26e20bee~300x300.image?from=avatar",
        "followerCount": 337400,
        "verifiedContent": ""
      }
    },
    {
      "rank": 1,
      "groupId": "7291020787518014012",
      "itemId": "7291020787518014012",
      "awemeId": null,
      "videoId": "v0201ag10000cknef43c77ue1n7b3640",
      "title": "国家兴亡，匹夫有责，老坎征婚生娃娃。",
      "abstract": "国家兴亡，匹夫有责，老坎征婚生娃娃！",
      "shareUrl": "https://m.ixigua.com/video/7291020787518014012/?app=video_article&timestamp=1777211601",
      "publishTime": 1697590800,
      "publishTimeIso": "2023-10-18T01:00:00+00:00",
      "videoDurationSecs": 256,
      "covers": [
        "https://p26-sign.bdxiguaimg.com/tos-cn-i-0026/ogPlzNIIAhKBI55pMAyQfBPuEo03AAW4AACAMC~tplv-pk90l89vgd-slimming:864:486.webp?...",
        "https://p3-sign.bdxiguaimg.com/tos-cn-i-0026/ogPlzNIIAhKBI55pMAyQfBPuEo03AAW4AACAMC~tplv-pk90l89vgd-slimming:864:486.webp?..."
      ],
      "stats": {
        "playCount": 0,
        "commentCount": 47,
        "diggCount": 547,
        "shareCount": 16,
        "repinCount": 48,
        "impressionCount": 254521
      },
      "author": {
        "userId": "58131758605",
        "name": "敬老坎",
        "avatarUrl": "https://sf1-cdn-tos.bdxiguastatic.com/img/user-avatar/2c62774185ebcb0915ed286903e2680c~300x300.image?from=avatar",
        "followerCount": 457335,
        "verifiedContent": ""
      }
    }
  ],
  "adaptiveUrls": {
    "dynamicVideoList": [
      {
        "mainUrl": "https://v3-xg.douyinvod.com/v1/playlist/tos-cn-ve-15c000-ce/hls/index.m3u8?...",
        "backupUrl": "https://v95-sz-default.365yg.com/v1/playlist/tos-cn-ve-15c000-ce/hls/index.m3u8?...",
        "qualityType": 1,
        "videoMeta": {
          "width": 1080,
          "height": 1444,
          "fps": 30,
          "bitrate": 318623,
          "codecType": "h264"
        },
        "audioMeta": {
          "sampleRate": 44100,
          "channels": "2.0",
          "profile": "aac_he_v2"
        }
      }
    ],
    "dynamicAudioList": []
  },
  "playback": {
    "resolved": true,
    "code": 0,
    "message": "success",
    "mediaType": "video",
    "videoDuration": 15.034,
    "urlExpire": 1777215219,
    "posterUrl": "https://p26-sign.douyinpic.com/tos-cn-p-0015c000-ce/o800TkcMhAN5Ceq5wEiirTnBPfYHhlSiEABNaI~tplv-noop.image?...",
    "coverUrl": null,
    "autoDefinition": "360p",
    "enableSsl": false,
    "enableAdaptive": false,
    "hasEmbeddedSubtitle": false,
    "variants": [
      {
        "key": "video_2",
        "definition": "1080p",
        "quality": "normal",
        "qualityType": 1,
        "vtype": "mp4",
        "codecType": "h264",
        "bitrate": 318623,
        "realBitrate": 318623,
        "size": 598773,
        "width": 1080,
        "height": 1444,
        "fps": 30,
        "url": "https://v95-sz-default.365yg.com/video/tos/cn/tos-cn-ve-15/...",
        "backupUrl1": "https://v6-default.365yg.com/video/tos/cn/tos-cn-ve-15/...",
        "urlExpire": 1777215219,
        "audioChannels": "2.0",
        "audioLayout": "C",
        "audioProfile": "aac_he_v2",
        "audioSampleRate": "44100",
        "encrypt": false,
        "encryptionMethod": "",
        "checkInfo": "c:0-13859-17ba|d:0-299385-f196,299386-598772-7d92",
        "p2pVerifyUrl": "",
        "barrageMaskUrl": "",
        "barrageMaskOffset": "",
        "pktOffsetMap": [
          {"time": 1, "offset": 139272},
          {"time": 5, "offset": 204966},
          {"time": 10, "offset": 421807}
        ],
        "preloadSize": 598773,
        "preloadInterval": 60,
        "preloadMinStep": 5,
        "preloadMaxStep": 10,
        "socketBuffer": 7168860,
        "userVideoProxy": 1,
        "logoType": ""
      },
      {
        "key": "video_1",
        "definition": "720p",
        "quality": "normal",
        "qualityType": 10,
        "vtype": "mp4",
        "codecType": "h264",
        "bitrate": 241440,
        "realBitrate": 241440,
        "size": 453727,
        "width": 720,
        "height": 962,
        "fps": 30,
        "url": "https://v95-sz-default.365yg.com/video/tos/cn/tos-cn-ve-15/...",
        "backupUrl1": "https://v6-default.365yg.com/video/tos/cn/tos-cn-ve-15/...",
        "urlExpire": 1777215219,
        "audioChannels": "2.0",
        "audioLayout": "L R",
        "audioProfile": null,
        "audioSampleRate": "44100",
        "encrypt": false,
        "encryptionMethod": "",
        "checkInfo": "c:0-17782-aed8|d:0-226862-eaa4,226863-453726-29d4",
        "p2pVerifyUrl": "",
        "barrageMaskUrl": "",
        "barrageMaskOffset": "",
        "pktOffsetMap": [
          {"time": 1, "offset": 108918},
          {"time": 5, "offset": 185860},
          {"time": 10, "offset": 369295}
        ],
        "preloadSize": 453727,
        "preloadInterval": 60,
        "preloadMinStep": 5,
        "preloadMaxStep": 10,
        "socketBuffer": 5432400,
        "userVideoProxy": 1,
        "logoType": ""
      }
    ],
    "subtitleInfos": null
  },
  "comments": [
    {
      "entityType": "comment",
      "kind": "comment",
      "aid": "1128",
      "sourceApp": "Xigua",
      "commentId": "7592262643735069459",
      "parentCommentId": null,
      "text": "真的很治愈，谢谢分享",
      "mentions": [],
      "createTime": 1767711402,
      "createTimeIso": "2026-01-06T14:56:42+00:00",
      "source": null,
      "score": 3.14,
      "diggCount": 8,
      "buryCount": 0,
      "forwardCount": 0,
      "replyCount": 2,
      "publishLocInfo": "",
      "membershipStatus": 0,
      "largeImageUrls": [],
      "thumbImageUrls": [],
      "hasMultiMedia": false,
      "multiMedia": null,
      "tags": null,
      "voteInfo": null,
      "hasAuthorDigg": 0,
      "isPgcAuthor": 0,
      "isRepost": false,
      "user": {
        "userId": "61283252960",
        "secUserId": null,
        "shortId": null,
        "nickname": "头条用户",
        "signature": null,
        "avatarUrl": "http://p3.toutiaoimg.com/thumb/2171/6003290650",
        "isVerified": false,
        "verifiedReason": null,
        "followerCount": null,
        "followingCount": null,
        "ipRegion": null
      },
      "replies": [
        {
          "entityType": "comment",
          "kind": "reply",
          "commentId": "7592270000123456789",
          "parentCommentId": "7592262643735069459",
          "replyToReplyId": null,
          "replyToUsername": null,
          "replyToUserId": null,
          "replyToUserSecId": null,
          "awemeId": null,
          "text": "同感！每次看都很放松",
          "textExtra": null,
          "createTime": 1767714000,
          "createTimeIso": "2026-01-06T15:40:00+00:00",
          "diggCount": 1,
          "status": 1,
          "ipLabel": null,
          "labelType": -1,
          "isAuthorDigged": false,
          "isHot": false,
          "canShare": true,
          "contentType": 1,
          "isFolded": false,
          "commentReplyTotal": 0,
          "user": {
            "userId": "84168027200",
            "nickname": "观众乙",
            "avatarUrl": "http://p3.toutiaoimg.com/thumb/2171/6003290650",
            "isVerified": false
          },
          "imageUrls": []
        }
      ]
    }
  ]
}
```

### Downloading Videos

`playback.variants[*].url` contains a plain HTTPS URL pointing directly to the MP4 file. No decoding or extra headers required — a standard GET works.

```python
import requests

url = item["playback"]["variants"][0]["url"]  ## highest quality first
resp = requests.get(url, timeout=60, stream=True)
with open("video.mp4", "wb") as f:
    for chunk in resp.iter_content(8192):
        f.write(chunk)
```

URLs are time-limited. `playback.urlExpire` is the Unix timestamp when the URL stops working (typically ~24 hours after the run). Download promptly after the run completes.

`adaptiveUrls.dynamicVideoList[*].mainUrl` contains HLS/DASH manifest URLs, also plain HTTPS. Use these with a media player or `ffmpeg` for adaptive streaming.

### Advanced Usage

#### Short share URLs (v.ixigua.com)

Short links are auto-resolved — paste them directly.

```json
{
    "videoInputs": ["https://v.ixigua.com/abc123/"]
}
```

#### Large batch via startUrls (task templates)

When injecting from a task template or URL list widget, use `startUrls` instead.

```json
{
    "startUrls": [
        { "url": "https://www.ixigua.com/7544552088903175464" },
        { "url": "https://www.ixigua.com/7591466246211677363" }
    ]
}
```

#### Comment deep-dive — unlimited with replies

Set `maxCommentsPerVideo` to `0` to fetch every comment.

Use this only on videos with a known comment count — check `stats.commentCount` in a prior run first.

```json
{
    "videoInputs": ["7544552088903175464"],
    "includeComments": true,
    "maxCommentsPerVideo": 0,
    "includeReplies": true,
    "maxRepliesPerComment": 0
}
```

### Pricing — Pay Per Event (PPE)

**No monthly fee.** You pay only for what you scrape.

| Event | Free tier | Starter | Scale | Business |
|-------|-----------|---------|-------|----------|
| Video | $14.99/1K | $14.99/1K | $13.99/1K | $12.99/1K |
| Comment or reply | $3.99/1K | $3.99/1K | $3.99/1K | $3.99/1K |

Related videos are fetched as part of the video call and are not billed separately. Scale and Business subscribers get automatic step-down discounts on the video event.

#### Cost Optimization

- Keep `maxCommentsPerVideo` at 50 (default) unless you specifically need more.
- Check `stats.commentCount` on a video before fetching unlimited comments.
- Disable `includeComments` entirely when you only need video metadata.

### FAQ

**What is Xigua (西瓜视频)?**

Xigua Video is ByteDance's long-form video platform for mainland China, distinct from Douyin/TikTok.

It focuses on videos longer than a minute: documentaries, comedy sketches, vlogs, and educational content.

**What input formats are supported?**

Five formats: bare 19-digit ID, www.ixigua.com, m.ixigua.com, toutiao.com/group/, and v.ixigua.com short links.

All are auto-resolved to the canonical video ID.

**Why is `playCount` null for the seed video?**

This is a platform limitation, not a scraper bug.

The detail endpoint does not populate `playCount` or `impressionCount` for the queried video.

Related videos returned alongside the result do include `impressionCount`.

If play counts are critical, combine with the search actor to cross-reference results.

**How many videos can I process per run?**

Up to 1,000 per run.

For larger batches, split inputs across multiple runs or contact us for volume guidance.

**Are the playback URLs permanent?**

No. Signed playback URLs typically expire within 24 hours.

Download or cache the media shortly after the run completes.

**What's the difference between this actor and the search actor?**

Use this actor when you already have video URLs or IDs.

Use the [Xigua Video Search Scraper](https://apify.com/zen-studio/xigua-video-search-scraper) when you want to discover videos by keyword or hashtag.

**Can I get subtitles?**

`subtitleInfos` is included when the platform provides them.

Most user-generated content does not have embedded subtitles.

**How often should I re-run for fresh data?**

Engagement stats (likes, comments, shares) change continuously.

For monitoring purposes, re-run daily or weekly depending on how fast the videos you track accumulate engagement.

### Support

- **Bugs**: Issues tab
- **Features**: Issues tab

### Legal Compliance

Extracts publicly available data.

Users must comply with Xigua Video's terms of service and applicable data protection regulations (GDPR, CCPA, and Chinese data laws where relevant).

***

*Paste a Xigua URL or video ID, hit Start, get 70+ fields back in seconds.*

# Actor input Schema

## `videoInputs` (type: `array`):

Paste one or more Xigua video URLs or IDs, one per line.<br><br><b>Supported formats:</b><br>• Bare ID: <code>7544552088903175464</code><br>• Web URL: <code>https://www.ixigua.com/7544552088903175464</code><br>• Mobile URL: <code>https://m.ixigua.com/7544552088903175464</code><br>• Toutiao mirror: <code>https://toutiao.com/group/7544552088903175464/</code><br>• Short share link: <code>https://v.ixigua.com/abc123/</code><br><br>All formats are auto-resolved. Up to 1,000 videos per run.<br><br>If both <b>Video URLs or IDs</b> and <b>Start URLs</b> are set, this field takes priority.

## `startUrls` (type: `array`):

Alternative to <b>Video URLs or IDs</b> — accepted when using the Apify URL list widget or task templates that inject <code>startUrls</code>.<br><br>Supports the same URL formats. Ignored when <b>Video URLs or IDs</b> is non-empty.

## `includeRelatedVideos` (type: `boolean`):

Include up to 20 related videos inside each output row. Related videos are a free bonus — they do not add to your bill.<br><br>Each related video has the same metadata fields as a search result: title, author, duration, engagement counts, and playback URLs.<br><br>Disable to reduce output size.

## `includeComments` (type: `boolean`):

Fetch top-level comments for each video.<br><br>Off by default — enable when you need comment data. Comments are billed separately at $3.99 per 1,000 comment events.

## `maxCommentsPerVideo` (type: `integer`):

Maximum number of top-level comments to fetch per video. Only applies when <b>Include comments</b> is on.<br><br>Set to <code>0</code> to fetch every available comment (unlimited).<br><br>⚠️ Cost warning: setting Max comments per video to 0 fetches every comment for every video. Viral videos with 10K+ comments can produce thousands of comment events at $3.99 per 1K — bills can grow quickly. Default 50 is safe for casual use.

## `includeReplies` (type: `boolean`):

Fetch reply threads for comments that have replies. Only effective when <b>Include comments</b> is on.<br><br>Off by default — enable when you need full nested conversation data. Replies count against the same comment billing rate.

## `maxRepliesPerComment` (type: `integer`):

Maximum number of replies to include per top-level comment. Only applies when both <b>Include comments</b> and <b>Include replies</b> are on.<br><br>Set to <code>0</code> for unlimited replies.

## Actor input object example

```json
{
  "videoInputs": [
    "7544552088903175464",
    "https://www.ixigua.com/7591466246211677363"
  ],
  "includeRelatedVideos": true,
  "includeComments": false,
  "maxCommentsPerVideo": 50,
  "includeReplies": false,
  "maxRepliesPerComment": 50
}
```

# Actor output Schema

## `videos` (type: `string`):

Dataset containing Xigua video detail rows with playback URLs, related videos, and optionally comments with nested replies.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "videoInputs": [
        "7544552088903175464",
        "https://www.ixigua.com/7591466246211677363"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/xigua-video-detail-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "videoInputs": [
        "7544552088903175464",
        "https://www.ixigua.com/7591466246211677363",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/xigua-video-detail-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "videoInputs": [
    "7544552088903175464",
    "https://www.ixigua.com/7591466246211677363"
  ]
}' |
apify call zen-studio/xigua-video-detail-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=zen-studio/xigua-video-detail-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Xigua 西瓜视频 Detail Scraper - 70+ Fields + MP4 下载",
        "description": "Extract 70+ fields from Xigua (西瓜视频) videos by URL or ID. Title, author, stats, 1080p/720p/480p MP4 download URLs, hashtags, covers, related videos, comments. Cross-app linkage to Douyin (抖音) via awemeUserId/secUserId. ByteDance sibling platform. 西瓜视频下载.",
        "version": "0.0",
        "x-build-id": "ZaiPH4RNBe7PvQeLt"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/zen-studio~xigua-video-detail-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-zen-studio-xigua-video-detail-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~xigua-video-detail-scraper/runs": {
            "post": {
                "operationId": "runs-sync-zen-studio-xigua-video-detail-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~xigua-video-detail-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-zen-studio-xigua-video-detail-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",
                "required": [
                    "videoInputs"
                ],
                "properties": {
                    "videoInputs": {
                        "title": "Video URLs or IDs",
                        "type": "array",
                        "description": "Paste one or more Xigua video URLs or IDs, one per line.<br><br><b>Supported formats:</b><br>• Bare ID: <code>7544552088903175464</code><br>• Web URL: <code>https://www.ixigua.com/7544552088903175464</code><br>• Mobile URL: <code>https://m.ixigua.com/7544552088903175464</code><br>• Toutiao mirror: <code>https://toutiao.com/group/7544552088903175464/</code><br>• Short share link: <code>https://v.ixigua.com/abc123/</code><br><br>All formats are auto-resolved. Up to 1,000 videos per run.<br><br>If both <b>Video URLs or IDs</b> and <b>Start URLs</b> are set, this field takes priority.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Alternative to <b>Video URLs or IDs</b> — accepted when using the Apify URL list widget or task templates that inject <code>startUrls</code>.<br><br>Supports the same URL formats. Ignored when <b>Video URLs or IDs</b> is non-empty.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL",
                                    "description": "A Xigua video URL (any supported format) or 19-digit video ID."
                                }
                            }
                        }
                    },
                    "includeRelatedVideos": {
                        "title": "Include related videos",
                        "type": "boolean",
                        "description": "Include up to 20 related videos inside each output row. Related videos are a free bonus — they do not add to your bill.<br><br>Each related video has the same metadata fields as a search result: title, author, duration, engagement counts, and playback URLs.<br><br>Disable to reduce output size.",
                        "default": true
                    },
                    "includeComments": {
                        "title": "Include comments",
                        "type": "boolean",
                        "description": "Fetch top-level comments for each video.<br><br>Off by default — enable when you need comment data. Comments are billed separately at $3.99 per 1,000 comment events.",
                        "default": false
                    },
                    "maxCommentsPerVideo": {
                        "title": "Max comments per video",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of top-level comments to fetch per video. Only applies when <b>Include comments</b> is on.<br><br>Set to <code>0</code> to fetch every available comment (unlimited).<br><br>⚠️ Cost warning: setting Max comments per video to 0 fetches every comment for every video. Viral videos with 10K+ comments can produce thousands of comment events at $3.99 per 1K — bills can grow quickly. Default 50 is safe for casual use.",
                        "default": 50
                    },
                    "includeReplies": {
                        "title": "Include replies",
                        "type": "boolean",
                        "description": "Fetch reply threads for comments that have replies. Only effective when <b>Include comments</b> is on.<br><br>Off by default — enable when you need full nested conversation data. Replies count against the same comment billing rate.",
                        "default": false
                    },
                    "maxRepliesPerComment": {
                        "title": "Max replies per comment",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of replies to include per top-level comment. Only applies when both <b>Include comments</b> and <b>Include replies</b> are on.<br><br>Set to <code>0</code> for unlimited replies.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
