# Tencent App Store Scraper (`unfenced-group/tencent-app-store-scraper`) Actor

Scrape app listings from the Tencent App Store (应用宝 / sj.qq.com): name, developer, category, rating, download count, version, APK size, permissions, ICP filing, screenshots, editorial description and iOS cross-platform link. Browse rankings or fetch by package name. No API key required.

- **URL**: https://apify.com/unfenced-group/tencent-app-store-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.86 / 1,000 apps

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

## Tencent App Store Scraper

![Tencent App Store Scraper](https://api.apify.com/v2/key-value-stores/XIu0eiDa2yaspHLUI/records/banner.png)

Extract app data from the Tencent App Store (应用宝, sj.qq.com) with the richest field set available: developer and operator, rating, download counts, version, package size, category and tags, full permission list, ICP filing data, screenshots, editorial content, cross-platform links (iOS, PC, Mac, Microsoft Store, cloud game) and related apps. Look up specific apps by package name, or discover apps by category, tag, curated top/new/pre-registration lists, editorial topics, or the store front page. Filter by rating, downloads and type. No API key required.

---

### Why this scraper?

#### 🎯 Built for the Tencent App Store
A dedicated scraper for 应用宝 (sj.qq.com), China's Tencent-operated Android store — not a Google Play tool pointed at the wrong market. Every field maps to what the store actually publishes.

#### 🔎 Six ways to find apps
Look up exact packages, or discover apps by game category, by tag/genre (around 70 tags), by curated list (top apps, hot games, new releases, pre-registration games, WeChat games, editor picks), by editorial topic, or from the store front page. Every discovered app is enriched to the full detail field set.

#### 📄 Complete app data
Name, package, store ID, developer, operator, category and tags, full description, editorial sections, version, package size, MD5 and direct APK download URL — all in one record.

#### 📊 Ranking & download signals
Star rating, two cumulative download counts, and pre-registration numbers for unreleased titles, so you can size demand at a glance.

#### 🔐 Permissions & compliance
The full Android permission list with human-readable descriptions, plus ICP filing number and registered entity and the privacy-policy URL — useful for app-store compliance and due diligence.

#### 🌐 Cross-platform reach
The matching iOS App Store link, Microsoft Store link, PC and Mac availability with download URLs, and cloud-game details — so you can join the same title across Android, iOS, PC, Mac and cloud.

#### 🔁 Related apps & topics
Every record carries the related-app package names and the editorial topics it appears in, so you can walk the store graph from any starting app.

---

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `"detail"` | How to select apps: `detail` (exact packages/URLs), `browse` (front-page featured & ranking), `list` (curated list), `category` (game category), `tag` (tag/genre), `topic` (editorial topic). Every mode returns the full detail field set. |
| `packageNames` | array | `[]` | Android package names for `detail` mode, e.g. `com.tencent.mm`, `com.tencent.tmgp.sgame`. |
| `startUrls` | array | `[]` | Optional sj.qq.com URLs. App detail URLs are scraped directly; category/tag/list/topic URLs are used as discovery sources. |
| `listType` | string | `"popular-app"` | Curated list for `list` mode: `popular-app`, `hot-game`, `new-game`, `reserve-game` (pre-registration), `wechat-game`, `recommend`. |
| `categorySlug` | string | (empty) | Game category for `category` mode, e.g. `rpg`, `avg`, `chess`, `slg02`, `xiuxianyizhi`. |
| `tagSlug` | string | (empty) | Tag for `tag` mode, e.g. `moba`, `mmorpg`, `roguelike`, `openworld`, `sandbox`, `shooting`. |
| `topicId` | string | (empty) | Numeric editorial topic ID for `topic` mode, e.g. `200074806` (found in any record's `recommendedTopics`). |
| `appType` | string | `"all"` | Keep `all`, `games` only, or `apps` (non-game) only. |
| `minRating` | integer | (none) | Keep only apps rated at or above this value (0–5). |
| `minDownloads` | integer | (none) | Keep only apps with at least this many downloads. |
| `categoryFilter` | string | (empty) | Keep only apps whose category, primary tag or tag aliases contain this text (case-insensitive). |
| `maxResults` | integer | `20` | Maximum app records to return. `0` = unlimited. |
| `skipReposts` | boolean | `false` | Skip apps seen in a previous run (90-day memory). Useful for daily-change feeds. |

---

### Output schema

Every field below is present on every record. Fields the store does not publish for a given app are returned as `null` (or `[]` for lists) rather than omitted.

| Field | Type | Description |
|---|---|---|
| `id` | string | Tencent App Store internal app ID. |
| `packageName` | string | Android package name (e.g. `com.tencent.mm`). |
| `name` | string | App display name. |
| `url` | string | Canonical Tencent App Store detail page URL. |
| `isGame` | boolean | True if the store classifies the app as a game. |
| `isCloudGame` | boolean | True if the app is a cloud game. |
| `category` | string \| null | Current store category (e.g. 购物, 社交). |
| `categoryLegacy` | string \| null | Legacy category label where it differs. |
| `primaryTag` | string \| null | Primary tag shown on the listing. |
| `categoryTags` | array | Category tags as `{ tagId, tagName, tagAlias }`. |
| `tagAliases` | array | Tag alias slugs (e.g. `["moba","tencent","5v5"]`), matching the `tag` discovery slugs. |
| `ageRestrictionLevel` | integer \| null | Store age-restriction level (0 = none/all ages; higher = stricter). |
| `developer` | string \| null | Developer company name (corporate entity). |
| `operator` | string \| null | Operator company name where it differs. |
| `icpNumber` | string \| null | Chinese ICP filing number. |
| `icpEntity` | string \| null | Registered ICP entity name. |
| `rating` | number \| null | Average star rating (0–5). |
| `downloadCount` | integer \| null | Cumulative download count reported by the store. |
| `downloadCountYyb` | integer \| null | Secondary (assistant) download counter where reported. |
| `versionName` | string \| null | Current version string. |
| `apkSizeBytes` | integer \| null | Package size in bytes. |
| `apkMd5` | string \| null | MD5 checksum of the published package. |
| `apkDownloadUrl` | string \| null | Direct APK download URL. |
| `icon` | string \| null | App icon image URL. |
| `screenshots` | array | Store screenshot image URLs. |
| `video` | string \| null | Promo video URL where published. |
| `editorIntro` | string \| null | One-line editorial tagline. |
| `descriptionHtml` | string \| null | Description — HTML (null; the store provides plain text). |
| `descriptionText` | string \| null | Description — plain text. |
| `descriptionMarkdown` | string \| null | Description — Markdown. |
| `editorialSections` | array | Long-form editorial blocks as `{ title, detail }`. |
| `permissions` | array | Android permissions as `{ title, description }`. |
| `privacyAgreementUrl` | string \| null | URL of the app's privacy policy. |
| `iosAppStoreUrl` | string \| null | Matching iOS App Store URL where the app has one. |
| `iosAppLink` | string \| null | iOS deep-link scheme where published. |
| `microsoftStoreId` | string \| null | Microsoft Store product ID where the app has a Windows version. |
| `microsoftStoreUrl` | string \| null | Microsoft Store product URL derived from the ID. |
| `microsoftStoreAvailable` | boolean | True if a Microsoft Store version is available. |
| `pcVersionAvailable` | boolean | True if a PC version is available via Tencent's PC store. |
| `macAvailable` | boolean | True if a Mac version is available. |
| `pcDownloadUrl` | string \| null | Direct PC/desktop download URL where published. |
| `cloudGame` | object \| null | Cloud-game details `{ packageName, apkUrl, tmast, payType }` where the app is a cloud game. |
| `relatedApps` | array | Package names of related apps (from relevance and editorial topics). |
| `recommendedTopics` | array | Editorial topics the app appears in, as `{ topicId, title }`. |
| `isBooking` | boolean | True if the app is in pre-registration (not yet released). |
| `bookingUserCount` | integer \| null | Number of pre-registrations for a booking app. |
| `bookingUrl` | string \| null | Pre-registration URL for a booking app. |
| `updateTime` | string \| null | Last store update, ISO 8601. |
| `publicTime` | string \| null | Release date/period, for pre-registration apps. |
| `seoTitle` | string \| null | Store page SEO title. |
| `seoDescription` | string \| null | Store page SEO description. |
| `contentHash` | string | Stable hash of app ID + name for change detection. |
| `isRepost` | boolean | True if this app was seen in a previous run. |
| `changeStatus` | string | `NEW`, `UNCHANGED`, or `UPDATED` versus previous runs. |
| `firstSeenAt` | string \| null | ISO timestamp this app was first seen across runs. |
| `source` | string | Always `sj.qq.com`. |
| `scrapedAt` | string | ISO timestamp this record was scraped. |

#### Example record

```json
{
  "id": "12127266",
  "packageName": "com.tencent.tmgp.sgame",
  "name": "王者荣耀",
  "url": "https://sj.qq.com/appdetail/com.tencent.tmgp.sgame",
  "isGame": true,
  "isCloudGame": false,
  "category": "网游RPG",
  "primaryTag": "MOBA",
  "categoryTags": [{ "tagId": "19001", "tagName": "MOBA", "tagAlias": "moba" }],
  "tagAliases": ["ios", "moba", "wangzherongyao", "5v5", "tencent"],
  "ageRestrictionLevel": 0,
  "developer": "深圳市腾讯计算机系统有限公司",
  "operator": "深圳市腾讯计算机系统有限公司",
  "icpNumber": "粤B2-20090059",
  "icpEntity": "深圳市腾讯计算机系统有限公司",
  "rating": 4.8,
  "downloadCount": 5400000000,
  "downloadCountYyb": 1325542021,
  "versionName": "1104010103",
  "apkSizeBytes": 2680000000,
  "apkMd5": "F58A9434F7833E2E3B8E7F7C82AC9D06",
  "apkDownloadUrl": "http://imtt2.dd.qq.com/sjy.00008/.../com.tencent.tmgp.sgame.apk",
  "icon": "http://pp.myapp.com/ma_icon/0/icon_12127266/256",
  "screenshots": ["http://pp.myapp.com/ma_pic2/0/shot_12127266_1/0"],
  "video": null,
  "editorIntro": "王者荣耀，五杀开黑欢乐多！",
  "descriptionText": "《王者荣耀》是腾讯第一5V5团队公平竞技手游……",
  "descriptionMarkdown": "《王者荣耀》是腾讯第一5V5团队公平竞技手游……",
  "editorialSections": [{ "title": "游戏介绍", "detail": "5V5王者峡谷……" }],
  "permissions": [{ "title": "拍摄照片和视频", "description": "允许该应用使用相机拍摄照片和视频……" }],
  "privacyAgreementUrl": "https://game.qq.com/privacy_guide.shtml",
  "iosAppStoreUrl": "https://apps.apple.com/cn/app/id989673964",
  "iosAppLink": "tencentmsdk989673964",
  "microsoftStoreId": "XPDC9X6P3BSX3Z",
  "microsoftStoreUrl": "https://apps.microsoft.com/detail/XPDC9X6P3BSX3Z",
  "microsoftStoreAvailable": true,
  "pcVersionAvailable": true,
  "macAvailable": true,
  "pcDownloadUrl": null,
  "cloudGame": { "packageName": "com.tencent.tmgp.sgame.pioneergame", "apkUrl": "https://gamer.qq.com/v2/game/95601", "tmast": null, "payType": 2 },
  "relatedApps": ["com.tencent.tmgp.pubgmhd"],
  "recommendedTopics": [{ "topicId": "200074806", "title": "最近很火的游戏" }],
  "isBooking": false,
  "bookingUserCount": 0,
  "bookingUrl": null,
  "updateTime": "2026-07-12T00:00:00.000Z",
  "publicTime": null,
  "seoTitle": "王者荣耀-官方正版下载-应用宝官网",
  "seoDescription": "王者荣耀，5V5公平竞技……",
  "contentHash": "a1b2c3d4e5f60718",
  "isRepost": false,
  "changeStatus": "NEW",
  "firstSeenAt": "2026-07-20T00:00:00.000Z",
  "source": "sj.qq.com",
  "scrapedAt": "2026-07-20T00:00:00.000Z"
}
````

***

### Examples

**Look up specific apps by package name:**

```json
{
  "mode": "detail",
  "packageNames": ["com.tencent.mm", "com.taobao.taobao"],
  "maxResults": 100
}
```

**Top games in a category, rated 4+ :**

```json
{
  "mode": "category",
  "categorySlug": "rpg",
  "appType": "games",
  "minRating": 4,
  "maxResults": 30
}
```

**A curated list — pre-registration (upcoming) games:**

```json
{
  "mode": "list",
  "listType": "reserve-game",
  "maxResults": 20
}
```

**Everything tagged MOBA:**

```json
{
  "mode": "tag",
  "tagSlug": "moba",
  "maxResults": 40
}
```

**Daily change-tracking feed for the top-apps list:**

```json
{
  "mode": "list",
  "listType": "popular-app",
  "skipReposts": true
}
```

***

### 💰 Pricing

**$0.99 per 1,000 results** — you only pay for successfully retrieved apps. Failed retries are never charged.

| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$0.99 |
| 10,000 | ~$9.90 |
| 100,000 | ~$99.00 |

> Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, down to $0.79 per 1,000 at the highest tier. Use the **Max results** cap in the input to control your spend exactly.

***

### Performance

| Run size | Typical time |
|---|---|
| 10 apps | under 30 seconds |
| 100 apps | 1–2 minutes |
| 1,000 apps | 12–20 minutes |

***

### Known limitations

- Content (names, descriptions, categories) is in Simplified Chinese, as published by the store. No translation is applied.
- The Tencent App Store serves a single Chinese storefront, so there is no multi-country pricing; almost all apps are free.
- Free-text keyword search is not supported: the store's search runs through a signed private API that is not publicly retrievable. Use category, tag, list, topic or browse discovery instead.
- Discovery modes return the apps on the source list page (roughly 20–60 per page); they are not an exhaustive full-catalogue crawl.
- `video`, `iosAppStoreUrl`, `microsoftStoreId`, `pcDownloadUrl` and `cloudGame` are populated only where the store publishes them; they are `null`/`false` otherwise.
- Pre-registration (unreleased) apps report `rating` as `null` and instead carry `isBooking: true`, `bookingUserCount`, `bookingUrl` and `publicTime`.
- Download counts and ratings are the store's own reported figures.

***

### Technical details

- **Source:** sj.qq.com — Tencent App Store (应用宝), Android app listings
- **Coverage:** any app addressable by package name, plus category, tag, curated-list, topic and front-page discovery
- **Retry:** automatic retry on network errors with exponential backoff

***

### Rate this actor

If this scraper does its job, a short review on the **Reviews** tab helps other users find it. Something not working? Open an issue on the **Issues** tab instead — issues get fixed.

***

### Need a custom scraper?

**[Unfenced Group](https://www.unfencedgroup.nl)** builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

**Get in touch:** [www.unfencedgroup.nl](https://www.unfencedgroup.nl)

# Actor input Schema

## `mode` (type: `string`):

How to select apps. 'detail' scrapes exact package names or URLs you provide. 'browse' pulls the homepage featured & ranking apps. 'list' pulls a curated list (top/hot/new/pre-registration). 'category' pulls a game category. 'tag' pulls a tag/genre list. 'topic' pulls an editorial topic collection. Every mode returns the full detail field set per app.

## `packageNames` (type: `array`):

Android package names to scrape in 'detail' mode, e.g. com.tencent.mm (WeChat), com.tencent.tmgp.sgame (Honor of Kings).

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

Optional sj.qq.com URLs. App detail URLs (https://sj.qq.com/appdetail/{package}) are scraped directly; category, tag, list or topic URLs are used as discovery sources.

## `listType` (type: `string`):

Which curated list to pull in 'list' mode. popular-app = top apps; hot-game = trending games; new-game = new releases; reserve-game = pre-registration games; wechat-game = WeChat mini-games; recommend = editor picks.

## `categorySlug` (type: `string`):

Game category to pull in 'category' mode (the /game/{slug} pages). Examples: rpg, avg, chess, slg02, xiuxianyizhi, chuangxinpinlei, danji, booking.

## `tagSlug` (type: `string`):

Tag to pull in 'tag' mode (the /tag/{slug} pages). Examples: moba, rpg, mmorpg, roguelike, openworld, sandbox, fighting, shooting, tencent, ios, wangzherongyao, yuanshen. Around 70 tags exist.

## `topicId` (type: `string`):

Numeric editorial topic ID to pull in 'topic' mode, e.g. 200074806. Topic IDs appear in the recommendedTopics field of any app record.

## `appType` (type: `string`):

Keep only games, only non-game apps, or all.

## `minRating` (type: `integer`):

Keep only apps with an average rating at or above this value (0–5). Apps with no rating are excluded when set.

## `minDownloads` (type: `integer`):

Keep only apps with at least this many downloads.

## `categoryFilter` (type: `string`):

Keep only apps whose category, primary tag or tag aliases contain this text (case-insensitive), e.g. 社交, moba, 工具.

## `maxResults` (type: `integer`):

Maximum number of app records to return. Set to 0 for unlimited. Discovery lists return roughly 20–60 apps per source page.

## `skipReposts` (type: `boolean`):

Skip apps already returned in a previous run (matched by app ID across runs, 90-day memory). Useful for daily-change feeds.

## Actor input object example

```json
{
  "mode": "detail",
  "packageNames": [
    "com.tencent.mm"
  ],
  "startUrls": [],
  "listType": "popular-app",
  "categorySlug": "rpg",
  "tagSlug": "moba",
  "topicId": "200074806",
  "appType": "all",
  "minRating": 4,
  "minDownloads": 1000000,
  "categoryFilter": "",
  "maxResults": 20,
  "skipReposts": false
}
```

# Actor output Schema

## `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 = {
    "mode": "detail",
    "packageNames": [
        "com.tencent.mm",
        "com.tencent.tmgp.sgame"
    ],
    "listType": "popular-app",
    "categorySlug": "rpg",
    "tagSlug": "moba",
    "topicId": "200074806",
    "appType": "all",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/tencent-app-store-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 = {
    "mode": "detail",
    "packageNames": [
        "com.tencent.mm",
        "com.tencent.tmgp.sgame",
    ],
    "listType": "popular-app",
    "categorySlug": "rpg",
    "tagSlug": "moba",
    "topicId": "200074806",
    "appType": "all",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/tencent-app-store-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 '{
  "mode": "detail",
  "packageNames": [
    "com.tencent.mm",
    "com.tencent.tmgp.sgame"
  ],
  "listType": "popular-app",
  "categorySlug": "rpg",
  "tagSlug": "moba",
  "topicId": "200074806",
  "appType": "all",
  "maxResults": 20
}' |
apify call unfenced-group/tencent-app-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=unfenced-group/tencent-app-store-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tencent App Store Scraper",
        "description": "Scrape app listings from the Tencent App Store (应用宝 / sj.qq.com): name, developer, category, rating, download count, version, APK size, permissions, ICP filing, screenshots, editorial description and iOS cross-platform link. Browse rankings or fetch by package name. No API key required.",
        "version": "0.0",
        "x-build-id": "U0nsA0Z81bht56jLV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/unfenced-group~tencent-app-store-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-unfenced-group-tencent-app-store-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/unfenced-group~tencent-app-store-scraper/runs": {
            "post": {
                "operationId": "runs-sync-unfenced-group-tencent-app-store-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/unfenced-group~tencent-app-store-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-unfenced-group-tencent-app-store-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": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "detail",
                            "browse",
                            "list",
                            "category",
                            "tag",
                            "topic"
                        ],
                        "type": "string",
                        "description": "How to select apps. 'detail' scrapes exact package names or URLs you provide. 'browse' pulls the homepage featured & ranking apps. 'list' pulls a curated list (top/hot/new/pre-registration). 'category' pulls a game category. 'tag' pulls a tag/genre list. 'topic' pulls an editorial topic collection. Every mode returns the full detail field set per app.",
                        "default": "detail"
                    },
                    "packageNames": {
                        "title": "Package names",
                        "type": "array",
                        "description": "Android package names to scrape in 'detail' mode, e.g. com.tencent.mm (WeChat), com.tencent.tmgp.sgame (Honor of Kings).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional sj.qq.com URLs. App detail URLs (https://sj.qq.com/appdetail/{package}) are scraped directly; category, tag, list or topic URLs are used as discovery sources.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "listType": {
                        "title": "Curated list",
                        "enum": [
                            "popular-app",
                            "hot-game",
                            "new-game",
                            "reserve-game",
                            "wechat-game",
                            "recommend"
                        ],
                        "type": "string",
                        "description": "Which curated list to pull in 'list' mode. popular-app = top apps; hot-game = trending games; new-game = new releases; reserve-game = pre-registration games; wechat-game = WeChat mini-games; recommend = editor picks.",
                        "default": "popular-app"
                    },
                    "categorySlug": {
                        "title": "Game category slug",
                        "type": "string",
                        "description": "Game category to pull in 'category' mode (the /game/{slug} pages). Examples: rpg, avg, chess, slg02, xiuxianyizhi, chuangxinpinlei, danji, booking.",
                        "default": ""
                    },
                    "tagSlug": {
                        "title": "Tag / genre slug",
                        "type": "string",
                        "description": "Tag to pull in 'tag' mode (the /tag/{slug} pages). Examples: moba, rpg, mmorpg, roguelike, openworld, sandbox, fighting, shooting, tencent, ios, wangzherongyao, yuanshen. Around 70 tags exist.",
                        "default": ""
                    },
                    "topicId": {
                        "title": "Topic ID",
                        "type": "string",
                        "description": "Numeric editorial topic ID to pull in 'topic' mode, e.g. 200074806. Topic IDs appear in the recommendedTopics field of any app record.",
                        "default": ""
                    },
                    "appType": {
                        "title": "App type filter",
                        "enum": [
                            "all",
                            "games",
                            "apps"
                        ],
                        "type": "string",
                        "description": "Keep only games, only non-game apps, or all.",
                        "default": "all"
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Keep only apps with an average rating at or above this value (0–5). Apps with no rating are excluded when set."
                    },
                    "minDownloads": {
                        "title": "Minimum downloads",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Keep only apps with at least this many downloads."
                    },
                    "categoryFilter": {
                        "title": "Category / tag keyword filter",
                        "type": "string",
                        "description": "Keep only apps whose category, primary tag or tag aliases contain this text (case-insensitive), e.g. 社交, moba, 工具.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of app records to return. Set to 0 for unlimited. Discovery lists return roughly 20–60 apps per source page.",
                        "default": 20
                    },
                    "skipReposts": {
                        "title": "Skip reposts",
                        "type": "boolean",
                        "description": "Skip apps already returned in a previous run (matched by app ID across runs, 90-day memory). Useful for daily-change feeds.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
