# vivo AppStore Scraper (`unfenced-group/vivo-appstore-scraper`) Actor

Scrape the vivo AppStore for Android app data: package name, developer, ratings, downloads, screenshots, description and version. No API key.

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

## Pricing

from $0.79 / 1,000 app (list)s

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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## vivo AppStore Scraper

![vivo AppStore Scraper](https://api.apify.com/v2/key-value-stores/VpFLd4VDHWWFIk0AN/records/banner.png)

Extract Android app data from the **vivo AppStore** (应用商店) — the official app marketplace on vivo and iQOO phones. Search by keyword, follow trending terms, or pull specific apps by ID, and get the full record: package name, developer, download count, rating and rating count, version, size, screenshots, description, privacy-policy URL and ICP licence. No API key required.

***

### Why this scraper?

#### 🎯 Built for the vivo AppStore

A dedicated scraper for vivo's Chinese Android store — not a generic tool bolted onto Apple or Google Play. It speaks the store's own API directly, so the data is complete and current.

#### 📦 Complete app data

App name, package name, developer, one-line tagline and full long-form description, plus the direct APK download URL and store URL for every app.

#### ⭐ Ratings and reach

Star rating, total number of raters, and cumulative download count — the three numbers you need to gauge how an app is performing.

#### 🖼️ Media and metadata

Screenshot gallery, icon URL, version name and code, app size, last-update date, ad and paid flags, privacy-policy URL and the Chinese ICP licence number.

#### 🔥 Trending discovery

Optionally expand the store's current trending keywords into full searches for a daily snapshot of what is popular right now.

#### 🌐 No key, no proxy, no login

The store's API is open and unprotected. Runs straight through without credentials or proxy setup.

***

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchQueries` | array | `[]` | Keywords to search for. Chinese terms return the most results (e.g. `微信`, `游戏`); English terms work too. |
| `appIds` | array | `[]` | Specific app IDs to fetch directly, skipping search. The ID is the number in a store URL such as `…/details?id=40413`. |
| `includeTrending` | boolean | `false` | Also scrape the apps behind the store's current trending search keywords. |
| `maxTrendingKeywords` | integer | `10` | When trending is on, how many top keywords to expand into searches. |
| `maxItemsPerQuery` | integer | `100` | Maximum apps to return per keyword. Set to `0` for unlimited. |
| `fetchDetails` | boolean | `true` | Fetch each app's detail page for the full field set. Turn off for a faster, list-only run. |
| `proxyConfiguration` | object | disabled | Optional proxy. Not required — the store serves from datacenter IPs without anti-bot protection. |

***

### Output schema

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

#### Always present (list-level fields)

| Field | Type | Description |
|---|---|---|
| `appId` | number | vivo AppStore numeric app ID. |
| `packageName` | string | Android package name (e.g. `com.tencent.mm`). |
| `name` | string | App display name (Chinese). |
| `developer` | string | Publishing company name. |
| `downloadCount` | number | Cumulative download count on the vivo store. |
| `rating` | number | Average star rating (0–5). |
| `iconUrl` | string | App icon image URL. |
| `versionName` | string | Human-readable version (e.g. `8.0.76`). |
| `versionCode` | number | Internal version code. |
| `sizeKb` | number | App size in kilobytes. |
| `sizeBytes` | number | App size in bytes. |
| `sizeReadable` | string | App size formatted (e.g. `253.8 MB`). |
| `isOfficial` | boolean | Whether the store flags the app as an official/verified upload. |
| `brief` | string | One-line tagline. |
| `downloadUrl` | string | Direct APK download URL. |
| `searchKeyword` | string|null | The keyword that surfaced this app (`null` for direct-ID lookups). |
| `storeUrl` | string | Public vivo AppStore page for the app. |
| `source` | string | Always `vivo-appstore`. |
| `scrapedAt` | string | ISO 8601 timestamp of extraction. |
| `contentHash` | string | Stable fingerprint of appId + package + version, for change detection. |

#### With `fetchDetails: true`

| Field | Type | Description |
|---|---|---|
| `ratingCount` | number | Number of users who rated the app. |
| `categoryCode` | number | vivo category code (`0` = Software, `1` = Games). |
| `categoryName` | string|null | Readable category name where the code is known, else `null`. |
| `updateTime` | string | Date and time the current version was published. |
| `introduction` | string | Full long-form app description. |
| `screenshots` | array|null | Screenshot image URLs (`null` if none published). |
| `privacyPolicyUrl` | string|null | Developer's privacy-policy URL. |
| `icpInfo` | string|null | Chinese ICP filing / licence number. |
| `icpAuthorizedName` | string|null | ICP-registered operating company (may differ from `developer`; `null` where the store does not publish it). |
| `isOverseasApk` | boolean | Whether the store flags the package as an overseas build. |
| `hasAds` | boolean | Whether the store flags the app as containing ads. |
| `isPaid` | boolean | Whether the app is paid (`false` for free apps). |

#### Example record

```json
{
  "appId": 40413,
  "packageName": "com.tencent.mm",
  "name": "微信",
  "developer": "腾讯科技（北京）有限公司",
  "downloadCount": 2022049688,
  "rating": 4.0,
  "ratingCount": 1490275,
  "iconUrl": "https://appstoreimg-ipv6.vivo.com.cn/appstore/developer/icon/20240726/pg7d83z2/202407261134327hwny.webp",
  "versionName": "8.0.76",
  "versionCode": 3141,
  "sizeKb": 259865,
  "sizeBytes": 266101760,
  "sizeReadable": "253.8 MB",
  "isOfficial": true,
  "brief": "微信，是一个生活方式",
  "downloadUrl": "https://appstore.vivo.com.cn/appinfo/downloadApkFile-h5appstore?id=40413",
  "categoryCode": 0,
  "categoryName": "软件 (Software)",
  "updateTime": "2026-07-12 17:58:02",
  "introduction": "你可以通过音视频通话、群聊、朋友圈来和朋友们分享生活……",
  "screenshots": [
    "https://imgwsdl.vivo.com.cn/appstore/developer/screenshot/20230922/yghl4iwo/202309221122359bftq.png"
  ],
  "privacyPolicyUrl": "https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy",
  "icpInfo": "粤B2-20090059-1621A",
  "icpAuthorizedName": "深圳市腾讯计算机系统有限公司",
  "isOverseasApk": false,
  "hasAds": false,
  "isPaid": false,
  "searchKeyword": "微信",
  "storeUrl": "https://h5.appstore.vivo.com.cn/#/details?id=40413",
  "source": "vivo-appstore",
  "scrapedAt": "2026-07-18T11:40:00.000Z",
  "contentHash": "a1b2c3d4e5f6a7b8"
}
```

***

### Examples

**Search for a specific app:**

```json
{
  "searchQueries": ["微信"],
  "maxItemsPerQuery": 20,
  "fetchDetails": true
}
```

**Scrape a whole category of keywords, list-level only (faster):**

```json
{
  "searchQueries": ["游戏", "浏览器", "音乐"],
  "maxItemsPerQuery": 50,
  "fetchDetails": false
}
```

**Fetch specific apps by ID:**

```json
{
  "appIds": ["40413", "51699", "97410"],
  "fetchDetails": true
}
```

**Daily trending snapshot:**

```json
{
  "includeTrending": true,
  "maxTrendingKeywords": 15,
  "maxItemsPerQuery": 30,
  "fetchDetails": true
}
```

***

### 💰 Pricing

**$0.89 per 1,000 apps**, plus **$1.89 per 1,000** for full detail enrichment when `fetchDetails` is on. You only pay for apps successfully returned — failed retries are never charged.

| What you get | Price |
|---|---|
| App (list-level fields) | $0.89 / 1,000 |
| Full detail enrichment (ratings count, description, screenshots, ICP, overseas flag, update date) | +$1.89 / 1,000 |

A list-only run (`fetchDetails: false`) is charged at the list rate alone. Subscription tiers lower both rates in $0.05/1,000 steps, down to $0.69 (list) and $1.69 (detail) at the highest tier.

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

Use the **Max results per query** cap to control your spend exactly.

***

### Performance

| Run size | Typical time |
|---|---|
| 100 apps (list-only) | under 1 minute |
| 100 apps (with details) | 2–3 minutes |
| 1,000 apps (with details) | 20–30 minutes |

Detail fetching adds one request per app. Turn `fetchDetails` off for the fastest runs.

***

### Known limitations

- The store is Chinese; app names and descriptions are in Chinese. Keyword searches in Chinese return far more results than English ones.
- `icpAuthorizedName` is published only for some apps (mostly larger developers); it is `null` otherwise.
- Category is a numeric code; readable names are provided for the common codes (Software, Games) and `null` otherwise.
- The store caps each keyword search at a few hundred results across all pages; very broad terms will hit that ceiling.
- User reviews are not part of this actor's output.

***

### Technical details

- **Source:** vivo AppStore (应用商店) — official app marketplace for vivo and iQOO devices
- **Coverage:** the full Chinese vivo store catalogue, reachable by keyword, trending term or app ID
- **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

## `searchQueries` (type: `array`):

Keywords to search the vivo AppStore for. Each keyword returns a paginated list of matching apps. Chinese or English terms both work (the store is Chinese, so Chinese terms return the most results).

## `appIds` (type: `array`):

Specific vivo AppStore app IDs to fetch directly, skipping search. The app ID is the numeric id in a store URL such as h5.appstore.vivo.com.cn/#/details?id=40413.

## `includeTrending` (type: `boolean`):

Also scrape the apps behind the store's current trending (hot) search keywords. Useful for a daily snapshot of what is popular right now.

## `maxTrendingKeywords` (type: `integer`):

When 'Include trending keywords' is on, how many of the top trending keywords to expand into full searches.

## `maxItemsPerQuery` (type: `integer`):

Maximum number of apps to return per search keyword. Set to 0 for unlimited (fetch every page the store returns for that keyword).

## `fetchDetails` (type: `boolean`):

Fetch each app's detail page to add rating count, update date, full description, screenshots, permissions, privacy-policy URL and ICP licence. Turn off for a faster, lighter run with list-level fields only.

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

Optional proxy settings. The vivo AppStore API serves from datacenter IPs without anti-bot protection, so a proxy is not required. Supply one only if you specifically need to route traffic through it.

## Actor input object example

```json
{
  "searchQueries": [
    "微信",
    "游戏",
    "browser"
  ],
  "appIds": [
    "40413",
    "51699"
  ],
  "includeTrending": true,
  "maxTrendingKeywords": 10,
  "maxItemsPerQuery": 100,
  "fetchDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": 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 = {
    "searchQueries": [
        "微信"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/vivo-appstore-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 = { "searchQueries": ["微信"] }

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/vivo-appstore-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 '{
  "searchQueries": [
    "微信"
  ]
}' |
apify call unfenced-group/vivo-appstore-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/qnNeExCsxhR4fUiO5/builds/Nbiwzf9qH01YjYjXY/openapi.json
