# China Game Approvals Scraper (NPPA 版号 Tracker) (`brazen_outcome_iye/china-game-approvals`) Actor

Scrape China's official NPPA game approval lists (游戏版号): domestic & imported online games, console games, changes and revocations since 2009. Game name + pinyin, platform, genre, publisher, operator, approval number, ISBN, date. Filter by date or publisher; alert on new approvals.

- **URL**: https://apify.com/brazen_outcome_iye/china-game-approvals.md
- **Developed by:** [Nagi](https://apify.com/brazen_outcome_iye) (community)
- **Categories:** Lead generation, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 game approval records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Game Approvals Scraper: NPPA 版号 (Game License & ISBN) Tracker

**Track every game approved for release in China, with English platform and genre labels, pinyin, and alerts for new approvals. Full history goes back to 2009.**

Every game that launches or monetises in mainland China needs an approval (版号) from the **National Press and Publication Administration (NPPA, 国家新闻出版署)**. This Actor turns NPPA's monthly approval pages into clean, structured data: domestic and imported games, change notices and revocations. The history has 21,000+ records since 2009.

### Who is it for?

- **Game publishers, studios and investors** tracking competitor pipelines and the foreign titles approved for China.
- **Market analysts and consultants** counting approvals by month, platform, genre and publisher (腾讯, 网易, 米哈游 …).
- **Games media and newsletters** writing monthly "who got 版号" stories.
- **Due-diligence and compliance teams** checking whether a game or company actually holds an approval and an ISBN.
- **AI agents and data pipelines** that need to answer "has game X been approved in China?"

### Key features

- 📋 **All five NPPA lists:** domestic online games, imported online games, imported console games, changes and revocations.
- 🧩 **The category column is parsed correctly.** NPPA renders it with JavaScript, which most simple scrapers miss. It is split into **platforms** (Mobile / PC client / Web / Console such as PS5 or Switch) and **genre**, with English labels.
- 🔤 **Pinyin** for every game name, to help non-Chinese readers search and sort.
- 🗓️ **Full history or any date range** (`2026-01-01`, or relative like `90 days`). Only the pages you need are fetched.
- 🔎 **Filters:** publisher/operator keywords and game-name keywords.
- 🔔 **Only-new mode:** schedule it monthly and receive only newly approved games.
- 🌐 Polite crawling with retries, plus optional **Apify Proxy with China (CN) residential IPs**.

### How to use it

1. Click **Try for free**, pick list types and a date range, then click **Start**.
2. Export as JSON, CSV or Excel, or use the Apify API.
3. For monthly alerts, save a **Task** with `onlyNew = true`, schedule it, and connect email, Slack, Google Sheets, Make or Zapier.

#### Input example

```json
{
  "listTypes": ["domestic_online", "imported_online"],
  "dateFrom": "2026-01-01",
  "publisherKeywords": ["腾讯", "网易"],
  "onlyNew": false
}
```

### Output sample

Real records from the September 2026 NPPA lists:

| List | Game | Pinyin | Platforms | Genre | Publisher | Approval no. | ISBN | Date |
|---|---|---|---|---|---|---|---|---|
| domestic_online | 百变灵兽 | bai bian ling shou | Mobile | Casual/puzzle | 北京联合出版有限责任公司 | 国新出审〔2026〕2220号 | 978-7-498-17573-1 | 2026-09-29 |
| domestic_online | 霸主征途 | ba zhu zheng tu | Mobile, PC client | – | 天津科学技术出版社有限公司 | 国新出审〔2026〕2219号 | 978-7-498-17572-4 | 2026-09-29 |
| domestic_online | 盛世武神 | sheng shi wu shen | Mobile, PC client, Web | – | 时代新媒体出版社有限责任公司 | 国新出审〔2026〕2229号 | 978-7-498-17582-3 | 2026-09-29 |
| imported_online | 3对3街篮 | 3 dui 3 jie lan | PC client | – | 上海昊嘉信息技术有限公司 | 国新出审〔2026〕2424号 | 978-7-498-17777-3 | 2026-09-29 |
| imported_online | 热血江湖：重启 | re xue jiang hu: chong qi | Mobile | – | 上海恺英网络科技有限公司 | 国新出审〔2026〕2425号 | 978-7-498-17778-0 | 2026-09-29 |
| changes | 出将入相 | chu jiang ru xiang | Mobile, PC client | – | 江苏凤凰数字传媒有限公司 | 国新出审〔2025〕2502号 | – | 2026-09-29 |

(Change lists have no ISBN column, hence the dash.)

One full record:

```json
{
  "listType": "domestic_online",
  "listTypeEn": "Domestic online games - approvals",
  "gameName": "百变灵兽",
  "gameNamePinyin": "bai bian ling shou",
  "category": "移动-休闲益智",
  "platformsEn": ["Mobile"],
  "genre": "休闲益智",
  "genreEn": "Casual/puzzle",
  "publisher": "北京联合出版有限责任公司",
  "operator": "北京瀚海智境科技有限公司",
  "approvalNumber": "国新出审〔2026〕2220号",
  "isbn": "978-7-498-17573-1",
  "approvalDate": "2026-09-29",
  "sourceUrl": "https://www.nppa.gov.cn/bsfw/jggs/yxspjg/gcwlyxspxx/202609/t20260930_1011281.html"
}
```

Other fields: `listTypeZh`, `platforms`, `changeInfo`, `revocationInfo`, `sequenceInList`, `sourcePageTitle`, `attribution`, `isNewSinceLastRun`, `firstSeenAt`, `scrapedAt`.

### Pricing

Pay per event: you pay only for results.

- **$0.003 per game record** returned, which is **$3 per 1,000 records**.
- **Actor start:** $0.00005 per run (per GB of memory), which is negligible.

| Typical run | Records | Approx. cost |
|---|---|---|
| One month of new domestic approvals | ~150-200 | ~$0.45-0.60 |
| 1,000 records | 1,000 | $3.00 |
| Year to date (2026, all lists) | ~1,650 | ~$5 |
| Full history since 2009 | ~21,500 | ~$65 |

In only-new mode you pay only for records you haven't received before. Use `maxItems` to cap spending.

### FAQ

**Where does the data come from?**
From the public game approval results (游戏审批结果) published by the NPPA at <https://www.nppa.gov.cn/bsfw/jggs/yxspjg/>. Every record includes its exact `sourceUrl` and an `attribution` field.

**Is it legal to use?**
The pages are official public notices. They contain game titles and company names only, with no personal data. The Actor reads them at a low rate and credits the source. The site carries a standard copyright notice, so please review your own use case, especially if you plan to republish in bulk. This Actor is not affiliated with the NPPA. For official verification, use the NPPA website.

**How often is the data updated?**
NPPA usually publishes new lists once a month, often near the end of the month. Changes and revocations are published irregularly. A monthly or weekly schedule is enough.

**How does only-new mode work?**
With `onlyNew = true`, the Actor remembers the records it has already returned in the key-value store named in `stateStoreName`. On the next run it returns only records it hasn't seen before. Use a different store name for each alert.

**Why are some ISBN or category fields empty?**
NPPA did not publish ISBNs before 2018, and most lists before 2017 have no category. Change lists have no ISBN column, and their approval number is the original approval being changed. Some months had no approvals at all, such as the 2021-2022 pause.

**Is the pinyin an official English title?**
No. Pinyin is generated automatically (toneless). Game names are kept exactly as published.

**Does it work outside mainland China?**
Yes. In our tests the site responded normally from US servers. If you see timeouts or 403/412 errors, set **Proxy configuration** to Apify Proxy, group RESIDENTIAL, country CN. Apify bills proxy traffic separately.

***

### 中文说明：中国游戏版号爬虫（国家新闻出版署游戏审批结果）

**自动抓取所有游戏版号信息，附英文平台/类型标签和拼音，可回溯到 2009 年（2.1 万多条），支持新版号提醒。**

- **覆盖**：国产网络游戏、进口网络游戏、进口电子游戏的审批名单，以及变更和撤销信息。
- **字段**：游戏名（附拼音）、申报类别（脚本渲染的那一栏已正确解析）、平台和类型（附英文）、出版单位、运营单位、批复文号、ISBN、批准时间、名单类型、来源链接。
- **适合**：游戏厂商、投资和研究机构、游戏媒体，以及需要核查版号的尽调团队。
- **功能**：可按日期、名单类型、出版或运营单位、游戏名筛选。开启"只看新增"后，每次只返回新获批的游戏，适合每月定时推送。
- **价格**：每条记录 $0.003，即 1,000 条 $3。启动费用很低，几乎可以不计。

# Actor input Schema

## `listTypes` (type: `array`):

Which NPPA lists to scrape: domestic online games (国产网络游戏, monthly), imported online games (进口网络游戏), imported electronic/console games (进口电子游戏, 2009-2016), approval changes (变更信息) and revocations (撤销信息).

## `dateFrom` (type: `string`):

Only approvals on or after this date (YYYY-MM-DD) or relative, e.g. "90 days". Leave empty for the full history back to 2009 (about 200 pages, a few minutes).

## `dateTo` (type: `string`):

Only approvals on or before this date (YYYY-MM-DD).

## `publisherKeywords` (type: `array`):

Return only records whose publisher (出版单位) or operator (运营单位) contains one of these strings, e.g. "腾讯", "网易", "米哈游". Leave empty for all.

## `gameNameKeywords` (type: `array`):

Return only games whose Chinese name or pinyin contains one of these strings.

## `onlyNew` (type: `boolean`):

Return only records not seen in previous runs that used the same state store name. Schedule monthly for an approvals alert.

## `stateStoreName` (type: `string`):

Named key-value store used to remember already-seen records for "Only new" mode.

## `includePinyin` (type: `boolean`):

Adds a gameNamePinyin field (toneless pinyin) for search and transliteration.

## `maxItems` (type: `integer`):

Stop after this many records. 0 = no limit.

## `requestDelaySecs` (type: `integer`):

Polite delay between page requests to the government website.

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

Usually not needed. If nppa.gov.cn blocks or times out from Apify servers, select Apify Proxy group RESIDENTIAL with country China (CN).

## Actor input object example

```json
{
  "listTypes": [
    "domestic_online",
    "imported_online",
    "imported_console",
    "changes",
    "revocations"
  ],
  "dateFrom": "2026-01-01",
  "onlyNew": false,
  "stateStoreName": "china-game-approvals-state",
  "includePinyin": true,
  "maxItems": 0,
  "requestDelaySecs": 1,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

NPPA game approval, change and revocation records with pinyin, platform/genre, publisher, operator, approval number, ISBN and date. One dataset item per record.

# 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 = {
    "dateFrom": "2026-01-01"
};

// Run the Actor and wait for it to finish
const run = await client.actor("brazen_outcome_iye/china-game-approvals").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 = { "dateFrom": "2026-01-01" }

# Run the Actor and wait for it to finish
run = client.actor("brazen_outcome_iye/china-game-approvals").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 '{
  "dateFrom": "2026-01-01"
}' |
apify call brazen_outcome_iye/china-game-approvals --silent --output-dataset

```

## MCP server setup

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

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/XFgf4smljvxHd9V5R/builds/6E8kx2DOOBILgJ84y/openapi.json
