# Huawei AppGallery App Details Scraper (`scrapers_lat/huawei-appgallery-scraper`) Actor

Extract app listings and details from Huawei AppGallery by search keyword or app IDs.

- **URL**: https://apify.com/scrapers\_lat/huawei-appgallery-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Business, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 results

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

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

<!-- actor-banner -->
[![Huawei AppGallery App Details Scraper](https://scrapers.lat/banners/huawei-appgallery-scraper.png)](https://console.apify.com/actors/eohLlfxTLsyDb5upc/input)
<!-- /actor-banner -->

## Huawei AppGallery Scraper

> Extract app listings and full details from Huawei AppGallery by search keyword or app ID, including ratings, downloads, developer, screenshots and the complete description.

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Worldwide-blue)
![Maintained](https://img.shields.io/badge/Maintained-Yes-brightgreen)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>27 fields</strong><br>per record</td>
<td align="center"><strong>Worldwide</strong><br>any AppGallery locale</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
<td align="center"><strong>Updated</strong><br>2026-06-22</td>
</tr></table>

<br>

### What you get

Each app returns a structured record ready to load into any database, spreadsheet, or analytics pipeline:

- **icon**: app icon image URL
- **name**: app name as listed on AppGallery
- **appId**: Huawei AppGallery app ID, the unique identifier that appears in the app URL
- **url**: direct link to the app's AppGallery page
- **package**: Android package name of the app
- **developer\***: developer or publisher name
- **category**: human-readable category name such as Tools, Social or Games
- **rating**: average star rating as a precise decimal
- **stars**: rounded star rating as shown on the store
- **ratingsCount\***: number of ratings the app has received
- **downloads**: install count description as shown on the store
- **price**: numeric price in the store currency, 0 for free apps
- **free**: whether the app is free
- **size**: human-readable download size such as 8.9 MB
- **sizeBytes**: download size in bytes
- **version**: current app version name
- **releaseDate\***: date the current version was released
- **contentRating\***: store age rating label such as Rated 18+ or Rated 16+
- **minAge\***: minimum recommended age as a number
- **developerWebsite\***: developer website URL, blank when the developer did not provide one
- **privacyPolicyUrl\***: link to the app's privacy policy
- **description**: full app description text
- **screenshots\***: list of screenshot image URLs
- **permissions\***: list of requested permissions, each with its group, title and description
- **ratingHistogram\***: count of 1 to 5 star ratings as star1 through star5
- **reviews\***: list of recent user reviews, each with user name, rating, comment text and date
- **observedAt**: when this app was last seen by the scraper

*\*These fields only appear when Fetch Full Details is enabled, or in App IDs mode which always fetches details.*

### Who is it for

| Use case | Who benefits |
|---|---|
| App market research | Product teams sizing demand and ratings on Huawei devices |
| Competitor monitoring | Developers tracking rivals' versions, downloads and ratings |
| ASO and keyword research | App store optimization specialists studying AppGallery search results |
| Catalog coverage checks | Publishers verifying their apps are listed and up to date on AppGallery |
| Data pipelines | Analysts feeding BI tools or app intelligence dashboards |

### Frequently Asked Questions

**Which regions and languages does it support?**
Any AppGallery locale. Pick a locale such as English, Spanish for Latin America, Portuguese for Brazil or Russian, and the titles, descriptions, availability and pricing reflect that region. The same keyword can be scraped across locales to compare catalogs.

**How many apps can I collect per run?**
A search returns up to roughly 25 apps per query, and you cap the run with Max Items. App IDs mode collects exactly the app IDs you provide. For larger datasets, run several searches with different keywords.

**Can I look up specific apps by their AppGallery ID?**
Yes. Choose App IDs mode and enter AppGallery IDs like C101184875 for Telegram. You can copy an app ID from the end of any AppGallery app URL. Each one is fetched with its full detail page including description, screenshots, developer, ratings count and release date.

**Why is an app sometimes returned with an error instead of data?**
Some apps are not available in the locale you selected, so AppGallery returns no detail card for that ID. The actor records that app with the error field and the reason, then continues with the rest of the run.

**Why is the screenshots field sometimes empty?**
Not every app publishes screenshots on AppGallery. When an app has none, the screenshots field is null while every other field is still populated.



<!-- example-tasks -->
### Example use cases

Ready-to-run example tasks, each preconfigured for a common scenario. Open one and press run, or use it as a template:

- [Huawei AppGallery Games](https://apify.com/scrapers_lat/huawei-appgallery-scraper/examples/huawei-appgallery-games): Scrape game apps from Huawei AppGallery with name, developer, rating, downloads and description.
- [Huawei AppGallery Music Apps](https://apify.com/scrapers_lat/huawei-appgallery-scraper/examples/huawei-appgallery-music-apps): Scrape music and audio apps from Huawei AppGallery with developer, rating, downloads and description.
- [Huawei AppGallery Social Apps](https://apify.com/scrapers_lat/huawei-appgallery-scraper/examples/huawei-appgallery-social-apps): Extract social and messaging apps from Huawei AppGallery with developer, rating, downloads and description.

<!-- /example-tasks -->

<!-- related-actors -->
### Related scrapers

Need data from the same space? Here are other scrapers we build and maintain:

- [Google Play App Details Scraper](https://apify.com/scrapers_lat/google-play-apps-scraper): Extract app listings and details from the Google Play Store by search, app IDs, developer or...
- [Instagram Profile & Posts Scraper](https://apify.com/scrapers_lat/instagram-scraper): Extract public Instagram profiles and recent posts by username without login.
- [YouTube Scraper](https://apify.com/scrapers_lat/youtube-scraper): Scrape YouTube videos and channels by search query, video URL or channel URL.
- [X (Twitter) Profiles & Tweets Scraper](https://apify.com/scrapers_lat/x-twitter-scraper): Extract public X (Twitter) tweets by tweet ID: text, author, likes, replies, media and timestamps.
- [Reddit Posts & Comments Scraper](https://apify.com/scrapers_lat/reddit-scraper): Extract Reddit posts and comments from subreddits and search results using the public Reddit feeds.
- [TikTok Creative Center Top Ads Scraper](https://apify.com/scrapers_lat/tiktok-creative-center-scraper): Scrape top-performing TikTok ads from the public Creative Center by country, time period and...

<!-- /related-actors -->

<!-- scrapers-lat-cta -->
### More scrapers at scrapers.lat

This actor is built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for Latin American and US public platforms: real estate, jobs, e-commerce, company registries and government data. Browse the full catalog, see live sample output for each one, or ask us for a custom scraper at [scrapers.lat](https://scrapers.lat).

---

> This actor is an independent tool and has no affiliation with Huawei or AppGallery. It only accesses data that is publicly available on the platform. Use it in accordance with Huawei AppGallery's terms of service.

# Actor input Schema

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

Maximum number of apps to collect across the whole run. Optional.
## `withDetails` (type: `boolean`):

When enabled, every app found in search mode is enriched by fetching its detail page (full description, screenshots, developer, release date, exact size and version). When disabled, only the listing-level fields are returned. App IDs mode always fetches full details.
## `mode` (type: `string`):

How to find apps. Search finds apps by keyword. App IDs looks up specific AppGallery app IDs.
## `searchQuery` (type: `string`):

Keyword to search for, used when mode is Search. Example: whatsapp, game, photo editor, vpn.
## `appIds` (type: `array`):

Huawei AppGallery app IDs to look up, used when mode is App IDs. These start with C followed by digits. Example: C101184875 (Telegram), C101130285 (Viber). You can copy an app ID from the end of any AppGallery app URL.
## `language` (type: `string`):

Locale for the returned text and store region. Affects app availability, language of titles and descriptions.
## `proxyConfiguration` (type: `object`):

Optional Apify proxy. Direct datacenter requests normally work for Huawei AppGallery; enable a proxy only if you hit rate limits.

## Actor input object example

```json
{
  "maxItems": 10,
  "withDetails": true,
  "mode": "search",
  "searchQuery": "whatsapp",
  "appIds": [
    "C101184875",
    "C101130285"
  ],
  "language": "en_US",
  "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 = {
    "maxItems": 10,
    "searchQuery": "whatsapp",
    "appIds": [
        "C101184875",
        "C101130285"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/huawei-appgallery-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 = {
    "maxItems": 10,
    "searchQuery": "whatsapp",
    "appIds": [
        "C101184875",
        "C101130285",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/huawei-appgallery-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 '{
  "maxItems": 10,
  "searchQuery": "whatsapp",
  "appIds": [
    "C101184875",
    "C101130285"
  ]
}' |
apify call scrapers_lat/huawei-appgallery-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Huawei AppGallery App Details Scraper",
        "description": "Extract app listings and details from Huawei AppGallery by search keyword or app IDs.",
        "version": "0.1",
        "x-build-id": "tTg5OCogslhvORk2D"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~huawei-appgallery-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-huawei-appgallery-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/scrapers_lat~huawei-appgallery-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-huawei-appgallery-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/scrapers_lat~huawei-appgallery-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-huawei-appgallery-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": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of apps to collect across the whole run. Optional."
                    },
                    "withDetails": {
                        "title": "Fetch Full Details",
                        "type": "boolean",
                        "description": "When enabled, every app found in search mode is enriched by fetching its detail page (full description, screenshots, developer, release date, exact size and version). When disabled, only the listing-level fields are returned. App IDs mode always fetches full details.",
                        "default": true
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "appIds"
                        ],
                        "type": "string",
                        "description": "How to find apps. Search finds apps by keyword. App IDs looks up specific AppGallery app IDs.",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword to search for, used when mode is Search. Example: whatsapp, game, photo editor, vpn."
                    },
                    "appIds": {
                        "title": "App IDs",
                        "type": "array",
                        "description": "Huawei AppGallery app IDs to look up, used when mode is App IDs. These start with C followed by digits. Example: C101184875 (Telegram), C101130285 (Viber). You can copy an app ID from the end of any AppGallery app URL.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "language": {
                        "title": "Locale",
                        "enum": [
                            "en_US",
                            "en_GB",
                            "es_ES",
                            "es_LA",
                            "pt_BR",
                            "zh_CN",
                            "ru_RU",
                            "de_DE",
                            "fr_FR",
                            "it_IT"
                        ],
                        "type": "string",
                        "description": "Locale for the returned text and store region. Affects app availability, language of titles and descriptions.",
                        "default": "en_US"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional Apify proxy. Direct datacenter requests normally work for Huawei AppGallery; enable a proxy only if you hit rate limits.",
                        "default": {
                            "useApifyProxy": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
