# China TV Ratings: Daily Top 100 CCTV & Satellite TV Shows (`sinodata/china-tv-ratings`) Actor

China TV ratings, no login: the daily top 100 programmes on CCTV channels and on provincial satellite channels (Hunan, Jiangsu, Zhejiang, Dragon TV...) from Maoyan, with live attention rate and market share. Schedule it daily to build a ratings history.

- **URL**: https://apify.com/sinodata/china-tv-ratings.md
- **Developed by:** [SinoData](https://apify.com/sinodata) (community)
- **Categories:** Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.45 / 1,000 programmes

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## China TV Ratings: Daily Top 100 CCTV & Satellite TV Shows

Get **China's daily TV ratings** as clean JSON: the **top 100 programmes on CCTV** and the **top 100 on provincial satellite channels** (Hunan TV, Jiangsu TV, Zhejiang TV, Dragon TV and more). Data comes from **Maoyan (猫眼专业版)**. No login, no browser.

- **Two rankings**: CCTV channels (央视) and provincial satellite channels (卫视), 100 programmes each
- **Live attention rate** (直播关注度) and **market share** (市场占有率) per programme
- **Latest and previous day** in one run
- **English channel names** (Hunan Satellite TV, Dragon (Shanghai) Satellite TV, CCTV-5...)
- **Scheduled monitoring**: skip rankings you already saved, so a daily schedule builds a clean history

### Use cases

- **TV drama and variety-show tracking**: which Chinese series and shows lead each night, and how they trend over a run.
- **Studios, distributors and streaming platforms**: benchmark titles and channels; track co-productions on Chinese TV.
- **Advertisers and agencies**: channel and programme reach for media planning.
- **Media research**: build a long daily ratings history with one scheduled task.

### Example input

```json
{
  "lists": ["cctv", "satellite"],
  "days": ["latest", "previous"],
  "maxPerList": 100,
  "skipUnchanged": true
}
```

### Output

One record per programme:

```json
{
  "type": "tvProgramme",
  "list": "satellite",
  "listName": "卫视",
  "estimatedDate": "2026-10-07",
  "day": "latest",
  "rank": 1,
  "channel": "江苏卫视",
  "channelEnglish": "Jiangsu Satellite TV",
  "programme": "早春晴朗21 22",
  "attentionRatePct": 0.4779,
  "marketSharePct": 2.2209
}
```

- `attentionRatePct` is the live attention rate in percent; `marketSharePct` the programme's share of viewing at the time, in percent.
- Programme names are in Chinese as published; drama entries include the episode numbers shown that day (e.g. `早春晴朗21 22` = episodes 21 and 22).
- `estimatedDate` is the broadcast day in China time. Maoyan doesn't label the day, so it is inferred (latest = yesterday in China, previous = the day before).

### Building a history

Maoyan only offers the two most recent days. Create a **schedule** in Apify that runs this Actor once a day with **Skip rankings already saved** turned on, and send the dataset to Google Sheets, BigQuery or your database. Each day adds about 200 records.

### Pricing

**$0.0005 per programme.** Both rankings for one day (200 programmes) cost $0.10; a daily schedule costs about $3 a month.

### Notes and limits

- Only the two most recent days are available (see above).
- Rankings come from Maoyan's TV dashboard and may differ from other ratings providers (CSM, Kuyun...).
- Only public data is collected.

### Related

- [China Box Office](https://apify.com/sinodata/china-box-office) and [China Upcoming Movies & Most Anticipated Films](https://apify.com/sinodata/china-movie-wishlist): China's cinema market from the same source.

### Feedback

Need another ranking or field? Open an issue on the Issues tab.

# Actor input Schema

## `lists` (type: `array`):

CCTV channels (央视) and/or provincial satellite channels (卫视). Each ranking has the top 100 programmes.

## `days` (type: `array`):

latest = the most recent finished day (usually yesterday in China); previous = the day before. Maoyan does not offer older days, so schedule a daily run to build a history.

## `maxPerList` (type: `integer`):

How many programmes to save from each ranking (up to 100).

## `channels` (type: `array`):

Only these channels, in Chinese or English, e.g. 湖南卫视, Hunan, CCTV-1, Dragon. Leave empty for all.

## `skipUnchanged` (type: `boolean`):

For scheduled runs: skip (and don't pay for) a ranking that is the same as in your last run, e.g. when Maoyan hasn't published the next day yet.

## `proxyConfiguration` (type: `object`):

Not needed for normal use.

## Actor input object example

```json
{
  "lists": [
    "cctv",
    "satellite"
  ],
  "days": [
    "latest"
  ],
  "maxPerList": 100,
  "skipUnchanged": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sinodata/china-tv-ratings").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sinodata/china-tv-ratings").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call sinodata/china-tv-ratings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sinodata/china-tv-ratings"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/XwjRyuJ9Uub5bcy2E/builds/dPPnlYBYXuQCuYT7J/openapi.json
