# WeTV & iflix Video Scraper (`hgservices/wetv-iflix-video-scraper`) Actor

WeTV & iflix video downloader. Download episodes from WeTV (wetv.vip) and iflix as MP4 with full metadata — title, series, episode number, duration, thumbnail. Paste an episode link, get the video file. Fast, no login, free catalog.

- **URL**: https://apify.com/hgservices/wetv-iflix-video-scraper.md
- **Developed by:** [Harish Garg](https://apify.com/hgservices) (community)
- **Categories:** Videos, AI, MCP servers
- **Stats:** 1 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## WeTV & iflix Video Downloader

**Download videos from [WeTV](https://wetv.vip) and [iflix](https://www.iflix.com) in one click.** This WeTV downloader saves any free-catalog **episode** as an **MP4 video file** and returns rich **metadata** alongside it — title, series name, episode number, duration, resolution, thumbnail, and synopsis. Just paste an episode link and get back a ready-to-use video plus structured data. **No login, no account, no subscription** needed for free titles.

WeTV and iflix are Tencent's international streaming platforms for **Asian dramas, C-dramas, K-dramas, movies, and variety shows**. Whether you want to archive an episode, back up a series you love, or build a dataset of episode metadata, this scraper makes it fast and simple — with API access, scheduling, and app integrations built in.

### What can you do with the WeTV & iflix Video Downloader?

- **Download WeTV episodes as MP4** to watch offline or archive before they leave the free catalog.
- **Save iflix videos** the same way — one tool covers both platforms.
- **Extract WeTV metadata** at scale: series names, episode numbers, durations, thumbnails, and descriptions for cataloging or research.
- **Batch-download a whole season** by pasting every episode link into a single run.
- **Automate it** — schedule recurring downloads and send results straight to your storage or apps.

### How to download WeTV & iflix videos

1. Open the episode you want on **wetv.vip** or **www.iflix.com** and copy the link from your browser's address bar. A valid episode link contains `/play/…` with an episode id — for example `https://wetv.vip/en/play/air11ooo2rdsdi3-Cute-Programmer/v0040pr89t9-EP1-Cute-Programmer`.
2. Paste one or more episode links into the **Episode URLs** field.
3. (Optional) Choose a **Download quality** and a **Max episode duration**.
4. Click **Start**. When the run finishes, download the video file and metadata from the **Output** tab.

> **Tip:** Use a link to a *specific episode*, not the series/cover page. Series pages are for browsing and don't point to a single video, so paste the individual episode you want to download.

### Input

| Field | Type | Description |
| --- | --- | --- |
| `startUrls` | array | One or more WeTV or iflix **episode** links. |
| `videoQuality` | string | Maximum resolution: `best` (default), `1080p`, `720p`, `480p`, `360p`. |
| `maxDurationMinutes` | integer | Skip episodes longer than this many minutes. `0` = no limit. |

Example input:

```json
{
    "startUrls": [
        { "url": "https://wetv.vip/en/play/air11ooo2rdsdi3-Cute-Programmer/v0040pr89t9-EP1-Cute-Programmer" }
    ],
    "videoQuality": "best",
    "maxDurationMinutes": 0
}
````

### Output

Each episode produces one result with a direct link to the downloaded video plus its metadata. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
    "sourceUrl": "https://wetv.vip/en/play/air11ooo2rdsdi3-Cute-Programmer/v0040pr89t9-EP1-Cute-Programmer",
    "platform": "wetv",
    "videoId": "v0040pr89t9",
    "title": "Cute Programmer — EP1",
    "series": "Cute Programmer",
    "episodeNumber": 1,
    "durationSeconds": 2835.0,
    "width": 864,
    "height": 486,
    "fps": 25.0,
    "thumbnailUrl": "https://vcover-hz-pic.wetvinfo.com/vcover_hz_pic/...",
    "description": "After falling in love with genius programmer Jiang Yicheng...",
    "videoFormat": "mp4",
    "videoFileUrl": "https://api.apify.com/v2/key-value-stores/.../records/01-cute-programmer-ep1.mp4",
    "fileSizeBytes": 312000000,
    "status": "ok"
}
```

#### Data fields

| Field | Description |
| --- | --- |
| `sourceUrl` | The episode link you submitted. |
| `platform` | `wetv` or `iflix`. |
| `videoId` | The episode's unique video id. |
| `title` | Clean display title, e.g. `Cute Programmer — EP1`. |
| `series` | Series name. |
| `episodeNumber` | Episode number within the series. |
| `durationSeconds` | Episode length in seconds. |
| `width` / `height` / `fps` | Resolution and frame rate of the downloaded video. |
| `thumbnailUrl` | Cover / thumbnail image URL. |
| `description` | Episode synopsis. |
| `videoFormat` | File format (usually `mp4`). |
| `videoFileUrl` | Direct download link to the video file. |
| `fileSizeBytes` | Size of the downloaded video. |
| `status` | `ok`, or a failure status with a plain-language message. |

### How much does it cost to download WeTV videos?

This downloader uses simple **pay-per-result** pricing:

- **$0.02 per episode** successfully downloaded with its metadata. You are **not** charged for episodes that can't be delivered (VIP-only, region-restricted, or series pages).
- Plus a small **per-megabyte fee** for the downloaded file. A full-length HD episode is usually a few hundred megabytes.

Set a **Max episode duration** to keep costs predictable, and lower the **Download quality** to reduce file size when you don't need full HD.

### Tips for faster, cheaper downloads

- Choose a lower **Download quality** (e.g. `480p`) to download faster and save on file size.
- HD episodes are large, so a full download may take a few minutes — this is normal.
- Paste multiple episode links in one run to download an entire season at once. Each episode is handled independently, so one problem link never stops the rest.

### Frequently asked questions

**Which WeTV and iflix titles can I download?** The **free catalog**. VIP-only episodes require a paid subscription and can't be downloaded — they return a clear "VIP required" message. Free coverage is broad, though some titles are licensed only in certain regions.

**Can I download a whole WeTV series at once?** Paste every episode link into a single run. There's no separate "download entire series" button — you choose exactly which episodes to save.

**What format are the downloaded videos?** Standard **MP4** files that play on virtually any device or player.

**Is downloading from WeTV or iflix legal?** Only download content you're authorized to, and follow WeTV's and iflix's Terms of Service and the copyright laws in your country. This tool is intended for personal archiving and legitimate research. You are responsible for how you use it.

**Need help or found a problem?** Open the **Issues** tab on this Actor's page and describe what happened, including the link you used and the message you saw.

# Actor input Schema

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

One or more WeTV (wetv.vip) or iflix (www.iflix.com) **episode** URLs. Open the specific episode you want on the site and copy the URL from your browser's address bar — it contains a '/play/…' path with an episode id. Series/cover pages (no episode id) are rejected; whole-series downloads aren't supported. VIP-only episodes fail with a clear message.

## `videoQuality` (type: `string`):

Maximum video resolution to download (the best stream at or below this is picked). Use a lower value to download faster and smaller. WeTV/iflix top out around SHD, so 'Best available' is usually the right choice.

## `maxDurationMinutes` (type: `integer`):

Skip any episode longer than this many minutes, before it is downloaded (no charge for skipped episodes). Defaults to 0 (no limit) — set a positive value to enforce a cap.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://wetv.vip/en/play/air11ooo2rdsdi3-Cute-Programmer/v0040pr89t9-EP1-Cute-Programmer"
    }
  ],
  "videoQuality": "best",
  "maxDurationMinutes": 0
}
```

# Actor output Schema

## `files` (type: `string`):

No description

## `dataset` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://wetv.vip/en/play/air11ooo2rdsdi3-Cute-Programmer/v0040pr89t9-EP1-Cute-Programmer"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hgservices/wetv-iflix-video-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 = { "startUrls": [{ "url": "https://wetv.vip/en/play/air11ooo2rdsdi3-Cute-Programmer/v0040pr89t9-EP1-Cute-Programmer" }] }

# Run the Actor and wait for it to finish
run = client.actor("hgservices/wetv-iflix-video-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 '{
  "startUrls": [
    {
      "url": "https://wetv.vip/en/play/air11ooo2rdsdi3-Cute-Programmer/v0040pr89t9-EP1-Cute-Programmer"
    }
  ]
}' |
apify call hgservices/wetv-iflix-video-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WeTV & iflix Video Scraper",
        "description": "WeTV & iflix video downloader. Download episodes from WeTV (wetv.vip) and iflix as MP4 with full metadata — title, series, episode number, duration, thumbnail. Paste an episode link, get the video file. Fast, no login, free catalog.",
        "version": "1.0",
        "x-build-id": "r58mBu45l7MervqHC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/hgservices~wetv-iflix-video-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-hgservices-wetv-iflix-video-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/hgservices~wetv-iflix-video-scraper/runs": {
            "post": {
                "operationId": "runs-sync-hgservices-wetv-iflix-video-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/hgservices~wetv-iflix-video-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-hgservices-wetv-iflix-video-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": {
                    "startUrls": {
                        "title": "Episode URLs",
                        "type": "array",
                        "description": "One or more WeTV (wetv.vip) or iflix (www.iflix.com) **episode** URLs. Open the specific episode you want on the site and copy the URL from your browser's address bar — it contains a '/play/…' path with an episode id. Series/cover pages (no episode id) are rejected; whole-series downloads aren't supported. VIP-only episodes fail with a clear message.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "videoQuality": {
                        "title": "Download quality",
                        "enum": [
                            "best",
                            "1080p",
                            "720p",
                            "480p",
                            "360p"
                        ],
                        "type": "string",
                        "description": "Maximum video resolution to download (the best stream at or below this is picked). Use a lower value to download faster and smaller. WeTV/iflix top out around SHD, so 'Best available' is usually the right choice.",
                        "default": "best"
                    },
                    "maxDurationMinutes": {
                        "title": "Max episode duration (minutes)",
                        "minimum": 0,
                        "maximum": 1440,
                        "type": "integer",
                        "description": "Skip any episode longer than this many minutes, before it is downloaded (no charge for skipped episodes). Defaults to 0 (no limit) — set a positive value to enforce a cap.",
                        "default": 0
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
