# Yellow Pages Hong Kong Scraper - yp.com.hk Business Leads (`normdata/yp-hk-scraper`) Actor

Scrape Yellow Pages Hong Kong (yp.com.hk) business leads: name, phone, fax, e-mail, website, address, district and GPS from 1,547 categories or any keyword. Filter by district or region, e-mail, website, fax or chains, and get every branch of chain companies.

- **URL**: https://apify.com/normdata/yp-hk-scraper.md
- **Developed by:** [Norm Data](https://apify.com/normdata) (community)
- **Categories:** Lead generation, Other
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

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

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

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

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

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

# README

![Norm Data](https://raw.githubusercontent.com/FabriAV/normdata/refs/heads/main/assets/banner_norm2.png)

## 📒 Yellow Pages Hong Kong Scraper - yp.com.hk Business Leads

Extract business leads from **Yellow Pages Hong Kong (yp.com.hk)**, the official Hong Kong business directory. Pick from the site's **1,547 categories** (about 76,000 listings) or type any **keyword in English or Chinese**, and narrow it to any of **120 districts** or the regions Hong Kong Island, Kowloon, New Territories and Mainland China. Every company comes with its **phone, fax, e-mail, website, address, district, region and GPS position**, its description, categories and the keywords it advertises under. Turn on **Branches** to add **every branch of chain companies** (branch or hotline name, address, district, phone, fax and map point). It reads 1,000 companies in about 35 seconds with no proxy, and can run on a schedule to send you **only new companies**.

> 👉 **Try it now:** press **Start**. The ready-made input gives you 10 companies in a few seconds.<br>
> 💰 **$0.013 per company** on the Free plan (10 companies per run), from $0.012 on paid plans. [See pricing](#-pricing)

### ✨ Why this scraper?

> - **The whole directory**<br>
>   Every category and keyword search is read to its last page, with no cap.
>
> - **Location data in every row**<br>
>   District and region taken from the address, plus latitude, longitude and a Google Maps link.
>
> - **Chains in full**<br>
>   One row per company, with all its branches in one list instead of hundreds of duplicate rows.
>
> - **Fast and steady**<br>
>   About 1,000 companies in 35 seconds, no proxy needed. The site's random error pages are retried, so no page is missed.
>
> - **Paid listings marked**<br>
>   `isSponsored` tells you which companies pay to be shown first, and `keywords` shows the search words they bought.
>
> - **1,547 categories to pick from**<br>
>   Like Accountants, Cantonese Restaurant, Physicians, Real Estate Agents, Importers & Exporters or Solicitors, with their listing counts.
>
> - **Apify platform**<br>
>   Schedule runs, get only new companies, export to Excel or CSV, use the API, or connect Google Sheets, Zapier and Make.

### 🚀 How to scrape Yellow Pages Hong Kong

1. Create a free Apify account.
2. Pick the filters you need, or keep the ready-made input.
3. Click **Start**.
4. Download the companies as Excel, CSV or JSON from the **Output** tab.

### 💰 Pricing

#### How much does it cost to scrape Yellow Pages Hong Kong?

You pay a one-time **$0.003** per run, plus a price for each company saved (and for each add-on you turn on):

| Charged for | Free | Bronze | Silver | Gold+ |
| --- | --- | --- | --- | --- |
| **Company**: One company saved to the dataset. | 0.013 | 0.012 | 0.011 | 0.01 |
| **Branches**: Every branch of one chain company (Branches add-on), charged only when its page was read. | 0.005 | 0.0045 | 0.004 | 0.0035 |

Example: 1,000 companies cost about **$12** on Bronze. No proxy or compute costs on top.

### 📦 What data you get

| Field | Description |
| --- | --- |
| `id` | yp.com.hk listing number. |
| `name` | Company name. |
| `description` | What the company does (sponsored listings). |
| `phone`, `fax`, `email` | Phone, fax and e-mail. |
| `address`, `district`, `region` | Full address, with its district and region (Hong Kong Island, Kowloon, New Territories). |
| `latitude`, `longitude` | GPS position. |
| `branchCount` | *(Branches)* Number of branches. |
| `searchQuery` | The category or keyword that found it. |
| `isSponsored` | Whether it is a sponsored listing. |
| `hasBranches` | Whether the company has branches. |
| `website` | Company website. |
| `url` | Its yp.com.hk page. |
| `googleMapsUrl` | Google Maps link to its position. |
| `categories` | Categories it is listed in. |
| `keywords` | Search words it advertises under, in English and Chinese (sponsored listings). |
| `branches` | *(Branches)* Every branch: name (branch or department line, when shown), address, district, region, phone, fax, latitude and longitude. |
| `scrapedAt` | When this row was saved. |
| `error` | Only present when a row failed. The fields that loaded are still there. |

Fields marked *Branches* only appear when that add-on is on.

#### Example row (trimmed)

```json
{
  "id": "64562",
  "name": "Standard Chartered Bank (Hong Kong) Limited",
  "description": "Welcome for enquiry.",
  "phone": "3843 3333",
  "address": "4-4A Des Voeux Road Central, Central",
  "district": "Central",
  "region": "Hong Kong Island",
  "latitude": 22.280378,
  "longitude": 114.159064,
  "branchCount": 13,
  "searchQuery": "\"bank\"",
  "isSponsored": true,
  "hasBranches": true,
  "website": "http://www.sc.com/hk",
  "url": "https://www.yp.com.hk/Category/CompanyInfo/38433333/64562/0X645620000X000/1/en",
  "googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=22.280378,114.159064",
  "categories": ["Banks"],
  "keywords": ["bank", "Credit Card", "信用卡"],
  "branches": [{ "name": "Credit Card Customer Services Hotline (24 Hrs)", "address": null, "district": null, "region": null, "phone": "2886 4111", "fax": null, "latitude": null, "longitude": null }],
  "scrapedAt": "2026-11-05T03:54:44.612Z"
}
```

### ⚙️ Input

| Section | What it's for |
| --- | --- |
| **Maximum results** | Always first, caps the whole run. Empty means no limit. |
| **What to scrape** | Categories, keywords, regions and districts. |
| **Filters** | Only with an e-mail, only with a website, only with a fax and only chains. |
| **Add-ons** | Branches. |
| **Monitoring** | Only new companies and monitor name. |
| **Links** | Links instead of the fields above. Filters are ignored with links. |

#### Input examples

**Every accountant in Hong Kong:**

```json
{
  "categories": ["Accountants-Certified Public Accountants/Public Accountants"]
}
```

**Cantonese restaurants in Kowloon with a website:**

```json
{
  "categories": ["Cantonese Restaurant"],
  "regions": ["Kowloon"],
  "withWebsite": true
}
```

**Banks with every branch:**

```json
{
  "keywords": ["bank"],
  "includeBranches": true
}
```

**Trading companies in Central and Sheung Wan with a fax:**

```json
{
  "categories": ["Trading Companies"],
  "districts": ["Central", "Sheung Wan"],
  "withFax": true
}
```

**New physicians every week (schedule this run):**

```json
{
  "categories": ["Physicians"],
  "onlyNew": true,
  "monitorName": "hk-physicians"
}
```

### 🔗 Related scrapers

> - [BuscJá Scraper](https://apify.com/normdata/buscja-scraper): Brazil Business Leads (Telelistas).
> - [Infoisinfo Scraper](https://apify.com/normdata/infoisinfo-scraper): Business Leads in 17 Countries.
> - [Taiwan Yellow Pages Scraper](https://apify.com/normdata/iyp-taiwan-scraper)
> - [Sección Amarilla Scraper](https://apify.com/normdata/seccionamarilla-scraper): Mexico Business Leads & Emails.

### ❓ FAQ and troubleshooting

#### Is there a Yellow Pages Hong Kong API? Do I need an API key?

> Yellow Pages Hong Kong has no public data API for this. This Actor works as a Yellow Pages Hong Kong API alternative: it reads the public pages and gives you clean JSON, CSV or Excel, with no API key, no login and no code to maintain. You can also call it from your own code with the Apify API, or from an AI agent through MCP:
> `claude mcp add --transport http apify "https://mcp.apify.com?tools=normdata/yp-hk-scraper"`

#### Why do I get only 10 companies?

> On the Apify free plan each run saves up to 10 results, so you can try it before paying. Any paid plan removes the limit.

#### Is there a limit per search?

> No. Every page of the search is read.

#### Can I search in Chinese?

> Yes. Chinese keywords and Chinese links work, and rows come in English where the site has it.

#### What does the Branches add-on cost?

> It opens one more page per chain company, and is charged only for chains whose page was read. Companies with no branches get `branchCount: 0` for free.

#### Few or no results

> Try fewer or broader words, or pick a category from the list. The log shows how many results each search has.

#### A category was skipped

> The log says when a name is not one of the site's categories. Type it under **Keywords** to search it as words.

#### Is this an official Yellow Pages Hong Kong tool?

> No. It is independent and not affiliated with Yellow Pages Hong Kong. It reads only data Yellow Pages Hong Kong publishes on its public pages, at a moderate pace. Use the data in line with Yellow Pages Hong Kong's terms and the laws that apply to you.

### 📧 Contact

Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com

# Actor input Schema

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

Stop after this many companies in total. Leave empty for no limit. The Apify Free plan is always capped at 10.

## `categories` (type: `array`):

yp.com.hk categories (1,547, with their number of companies; type to search).

## `keywords` (type: `array`):

Search words, in English or Chinese, like accountant, dim sum or 會計師. They also find companies by the words they advertise under.

## `regions` (type: `array`):

Every district of these regions. Leave regions and districts empty for all of Hong Kong.

## `districts` (type: `array`):

Districts (120), like Central, Mong Kok or Sha Tin.

## `withEmail` (type: `boolean`):

Only companies that show an e-mail address (mostly sponsored listings).

## `withWebsite` (type: `boolean`):

Only companies that show a website.

## `withFax` (type: `boolean`):

Only companies that show a fax number.

## `onlyChains` (type: `boolean`):

Only companies with branches.

## `includeBranches` (type: `boolean`):

Every branch of chain companies: branch or department name, address, district, region, phone, fax and GPS. One more request per chain company, charged only for those. Other companies get an empty list for free.

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

Skip companies saved by earlier runs with the same monitor name.

## `monitorName` (type: `string`):

Runs with the same name share their history. Use a different name for each schedule.

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

yp.com.hk category, search or company pages, like https://www.yp.com.hk/Category/Dining-Entertainment-Shopping-Travel/Catering-Services-Eateries/American-Restaurant/p1/en or https://www.yp.com.hk/Keyword/s-accountant/p1/en. Filters are ignored with links.

## Actor input object example

```json
{
  "maxItems": 10,
  "keywords": [
    "bank"
  ],
  "withWebsite": true,
  "includeBranches": true
}
```

# 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,
    "keywords": [
        "bank"
    ],
    "withWebsite": true,
    "includeBranches": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("normdata/yp-hk-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,
    "keywords": ["bank"],
    "withWebsite": True,
    "includeBranches": True,
}

# Run the Actor and wait for it to finish
run = client.actor("normdata/yp-hk-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "keywords": [
    "bank"
  ],
  "withWebsite": true,
  "includeBranches": true
}' |
apify call normdata/yp-hk-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,normdata/yp-hk-scraper"
        }
    }
}
```

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

## OpenAPI specification

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