# BusinessList.my Malaysia Business Directory Scraper (`crawlerbros/businesslist-my-scraper`) Actor

Scrape businesslist.my, Malaysia's verified online business directory with 280,000+ listings. Search by category and city to get business name, address, phone, category, website, rating, opening hours, and more.

- **URL**: https://apify.com/crawlerbros/businesslist-my-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Lead generation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## BusinessList.my Scraper - Malaysia Business Directory

Scrape **businesslist.my** — Malaysia's verified online business directory with 280,000+ listings across 210 cities and towns. Search any business category in any Malaysian city (or nationwide) and get business names, addresses, phone numbers, ratings, verification status, and more. Optionally follow through to each business's full profile page for website, description, structured opening hours, precise GPS coordinates, and all listed categories. No login, no cookies, no API key required.

### What this actor does

- **Two modes:** `search` (free-text keyword, and/or category and/or city browse) and `byUrl` (direct business profile URLs)
- **Directory-wide keyword search** — search by business name, service, or product (e.g. "laksa", "web design", "car rental") instead of browsing a fixed category list
- **367 curated categories** to pick from — every category businesslist.my publishes, from Restaurants and Hotels to niche trades like Solar Panels or Pest Control — or type any custom category slug
- **96 curated Malaysian cities/towns** — Kuala Lumpur, Penang, Johor Bahru, Kuching, Kota Kinabalu, and more — or type any custom city
- **Nationwide or city-scoped** — leave the city empty for a nationwide category browse, or leave the category empty to browse every category in one city
- **Sort by** relevance, rating, review count, or name (A-Z)
- **Filter by** verified-listing status, minimum rating (0-5 stars), and minimum review count
- **Rich business profiles** — real (unmasked) website URL, full description, structured opening hours, exact GPS coordinates, all listed categories, registration/last-updated dates
- **Empty fields are omitted** — you only ever see fields that were actually found for a business

### Output per business

- `name` — business name
- `category` — primary listed category, `categories[]` — all categories the business is listed under (when profile fetched)
- `rating` — average star rating (0-5), `reviewCount` — number of written reviews
- `verified` — whether the listing carries businesslist.my's "Verified Listing" badge
- `street`, `postalCode`, `city`, `state`, `country`
- `latitude`, `longitude` — GPS coordinates
- `phone`, `alternatePhones[]` — additional phone numbers if published, including a separately listed mobile number (when profile fetched)
- `managerName` — the business's listed manager/contact person, when published (when profile fetched)
- `sponsored` — whether the listing is a paid/sponsored placement on its search results page (mode=search)
- `website` — the business's real destination URL (when profile fetched)
- `tagline` — short one-line business tagline
- `description` — full business description (when profile fetched)
- `openingHours[]` — structured weekly opening hours (when profile fetched)
- `photoCount` — number of photos on the listing, `logoUrl`/`imageUrl` — business photo
- `establishedYear` — year the business was established (when published), `yearsWithUs` — years registered with the directory
- `registeredAt`, `lastUpdatedAt` — when the listing was created/last updated on the directory (when profile fetched)
- `searchCategory`, `searchCity` — the search parameters used (mode=search)
- `sourceUrl` — canonical businesslist.my profile URL for the business
- `recordType: "business"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string (select) | `search` | `search` (keyword/category/city browse) or `byUrl` (fetch by URL) |
| `searchQuery` | string | – | Free-text keyword search across business names/services/taglines (e.g. `"laksa"`, `"web design"`), directory-wide. Takes priority over `category` (mode=search) |
| `category` | string (select) | `restaurants` | Pick one of 367 categories, or `custom` to use `customCategory`. Ignored when `searchQuery` is set (mode=search) |
| `customCategory` | string | – | Any free-text category slug, overrides `category` (mode=search) |
| `city` | string (select) | – (all cities) | Pick one of 96 curated Malaysian cities, or leave empty for nationwide (mode=search) |
| `customCity` | string | – | Any free-text city slug not in the dropdown, overrides `city` (mode=search) |
| `businessUrls` | array | – | businesslist.my company profile URLs to fetch directly (mode=byUrl) |
| `sortBy` | string (select) | `relevance` | `relevance` / `rating` / `reviews` / `name` (A-Z) — applied client-side across the fetched batch |
| `minRating` | integer | `0` (no minimum) | Only return businesses rated at least 0-5 stars |
| `minReviews` | integer | `0` (no minimum) | Only return businesses with at least this many reviews |
| `verifiedOnly` | boolean | `false` | Only return businesses with the "Verified Listing" badge |
| `fetchDetails` | boolean | `false` | Also visit each business's profile page for richer data (slower — roughly doubles requests) |
| `maxItems` | integer | `20` | Hard cap on returned records (1-1000) |

At least one of `searchQuery`, `category`/`customCategory`, or `city`/`customCity` must be set for `mode=search`.

#### Example: keyword search for "web design" in Penang

```json
{
  "mode": "search",
  "searchQuery": "web design",
  "city": "penang",
  "maxItems": 20
}
````

#### Example: search restaurants in Kuala Lumpur

```json
{
  "mode": "search",
  "category": "restaurants",
  "city": "kuala-lumpur",
  "maxItems": 20
}
```

#### Example: highest-rated hotels in Penang, with full profiles

```json
{
  "mode": "search",
  "category": "hotels",
  "city": "penang",
  "sortBy": "rating",
  "fetchDetails": true,
  "maxItems": 30
}
```

#### Example: verified dentists nationwide

```json
{
  "mode": "search",
  "category": "dentists",
  "verifiedOnly": true,
  "maxItems": 50
}
```

#### Example: every business category in Kuching

```json
{
  "mode": "search",
  "city": "kuching",
  "maxItems": 40
}
```

#### Example: fetch specific business profiles

```json
{
  "mode": "byUrl",
  "businessUrls": [
    { "url": "https://www.businesslist.my/company/209832/ah-cheng-laksa" }
  ]
}
```

### Use cases

- **Local lead generation** — build a prospect list of Malaysian businesses by trade and city for B2B outreach
- **Market research** — measure business density and average ratings for a category across Malaysian cities and states
- **Directory aggregation** — feed structured Malaysian business data into your own local-search product
- **Competitor mapping** — see who else operates in a category and area, with ratings and contact info
- **Franchise & site-selection analysis** — evaluate service-business coverage across Malaysian states and cities

### Limitations

- **Email addresses are not included.** businesslist.my gates every listing's email behind a "Show Email"/sign-in action — this actor never accesses gated content, so `email` is never populated.
- **`sortBy` is applied client-side.** businesslist.my's listing pages don't expose a server-side sort parameter, so sorting is applied across the batch of records this run actually collected, not the entire category/city.
- **Some fields are only available with `fetchDetails: true`** (mode=search) **or in `byUrl` mode.** The listing/browse pages show name, address, phone, rating, verification status, and a short tagline; website, full description, structured opening hours, and all listed categories require visiting the business's own profile page.
- **`minRating` and `minReviews` require the field to be present.** A business with no rating yet is excluded once you set a minimum, since there's nothing to compare against; it is not treated as passing.

### FAQ

**What data source does this actor use?**
It reads the publicly available category, city, and business-profile pages on businesslist.my, Malaysia's online business directory. No account or API key is needed.

**Is this affiliated with businesslist.my?**
No. This is an independent, third-party actor that reads publicly accessible pages.

**Why do some businesses have no rating, website, or photo?**
businesslist.my only shows a rating once a business has received at least one review, and only shows contact/website details a business itself provided. Fields with no data are simply omitted from the record rather than shown as empty or null.

**Can I search a whole state instead of a single city?**
The directory itself only exposes city-level browsing (no state-level browse page), but every business record includes its `state` field (parsed from the business's own address), so you can filter the output dataset by state after the run.

**Can I search all of Malaysia at once?**
Yes — leave `city` empty and set only `category` for a nationwide search across all cities.

**How accurate are the GPS coordinates?**
`latitude`/`longitude` are available on every search result; with `fetchDetails: true` (or in `byUrl` mode) they come directly from the business's own profile page for maximum precision.

**Why is `fetchDetails` off by default?**
Fetching each business's full profile page requires one extra request per result, which is slower. Turn it on when you need website, full description, structured opening hours, or all listed categories.

**Does this actor need a proxy or login?**
No — businesslist.my's category, city, and profile pages are served without a login wall, so this actor runs entirely on Apify's free plan with no credentials required. It automatically uses Apify's free proxy to stay reliable against occasional rate limiting.

# Actor input Schema

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

search: browse listings by category and/or city. byUrl: fetch specific business profile URLs directly.

## `searchQuery` (type: `string`):

Free-text keyword search across business names, services and taglines (e.g. "laksa", "web design", "car rental"), searching directory-wide. Takes priority over Category when set -- Category/City are then ignored for filtering, though City still narrows a keyword search to that city.

## `category` (type: `string`):

Business category to browse. Ignored if Keyword search is set. Leave as "Custom category" and fill in Custom category below for a category not in this list, or leave both empty (with a City set) to browse all categories in that city.

## `customCategory` (type: `string`):

Free-text category slug override, e.g. "solar-panels". Used when Category is set to "Custom category" or left blank. Takes priority over the Category dropdown when non-empty.

## `city` (type: `string`):

Malaysian city/town to browse. Leave as "(none - all cities)" for a nationwide category browse, or set a city with an empty Category to browse all categories in that city.

## `customCity` (type: `string`):

Free-text city slug override for a town not in the City dropdown, e.g. "beaufort". Takes priority over the City dropdown when non-empty.

## `businessUrls` (type: `array`):

One or more businesslist.my company profile URLs to fetch directly, e.g. https://www.businesslist.my/company/209832/ah-cheng-laksa

## `sortBy` (type: `string`):

Client-side sort applied to the collected results before output (mode=search only).

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

Only include businesses with an average rating of at least this many stars (0-5). Businesses with no rating are excluded when this is set above 0.

## `minReviews` (type: `integer`):

Only include businesses with at least this many reviews.

## `verifiedOnly` (type: `boolean`):

Only include businesses carrying businesslist.my's "Verified Listing" badge.

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

For mode=search, fetch each business's profile page for richer data (website, description, opening hours, exact geo-coordinates, registration date). Roughly doubles the number of requests and run time.

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

Maximum number of business records to return.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "",
  "category": "restaurants",
  "customCategory": "",
  "city": "",
  "customCity": "",
  "businessUrls": [],
  "sortBy": "relevance",
  "minRating": 0,
  "minReviews": 0,
  "verifiedOnly": false,
  "fetchDetails": false,
  "maxItems": 20
}
```

# Actor output Schema

## `businesses` (type: `string`):

Dataset containing all scraped businesslist.my business records.

# 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": "search",
    "category": "restaurants",
    "city": "",
    "sortBy": "relevance",
    "minRating": 0,
    "minReviews": 0,
    "verifiedOnly": false,
    "fetchDetails": false,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/businesslist-my-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": "search",
    "category": "restaurants",
    "city": "",
    "sortBy": "relevance",
    "minRating": 0,
    "minReviews": 0,
    "verifiedOnly": False,
    "fetchDetails": False,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/businesslist-my-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": "search",
  "category": "restaurants",
  "city": "",
  "sortBy": "relevance",
  "minRating": 0,
  "minReviews": 0,
  "verifiedOnly": false,
  "fetchDetails": false,
  "maxItems": 20
}' |
apify call crawlerbros/businesslist-my-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BusinessList.my Malaysia Business Directory Scraper",
        "description": "Scrape businesslist.my, Malaysia's verified online business directory with 280,000+ listings. Search by category and city to get business name, address, phone, category, website, rating, opening hours, and more.",
        "version": "1.0",
        "x-build-id": "PobU7ev6n5kZrJ2wK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~businesslist-my-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-businesslist-my-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/crawlerbros~businesslist-my-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-businesslist-my-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/crawlerbros~businesslist-my-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-businesslist-my-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": [
                            "search",
                            "byUrl"
                        ],
                        "type": "string",
                        "description": "search: browse listings by category and/or city. byUrl: fetch specific business profile URLs directly.",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "Keyword search (mode=search)",
                        "type": "string",
                        "description": "Free-text keyword search across business names, services and taglines (e.g. \"laksa\", \"web design\", \"car rental\"), searching directory-wide. Takes priority over Category when set -- Category/City are then ignored for filtering, though City still narrows a keyword search to that city.",
                        "default": ""
                    },
                    "category": {
                        "title": "Category (mode=search)",
                        "enum": [
                            "custom",
                            "general-business",
                            "advertising",
                            "printing",
                            "small-business",
                            "general-office-services",
                            "consultants",
                            "marketing",
                            "retail-services",
                            "training",
                            "secretarial-services",
                            "human-resources",
                            "health-and-safety",
                            "overseas-business",
                            "consulting",
                            "market-research",
                            "fire-safety-consultants",
                            "sales-outsourcing",
                            "dry-cleaning",
                            "public-relations",
                            "business-development",
                            "b2b",
                            "business-to-business",
                            "waste-services",
                            "recycling",
                            "laundries",
                            "storage-services",
                            "tailors-and-alterations",
                            "baby-sitters",
                            "garbage-removal",
                            "ac-repair-services",
                            "pet-grooming",
                            "cold-storage-services",
                            "nanny-agency",
                            "dog-walking",
                            "membership-services",
                            "housekeeping-service",
                            "debt-collection-agencies",
                            "warehousing",
                            "computer-services",
                            "communications",
                            "information-technology",
                            "computer-software",
                            "web-development",
                            "web-design",
                            "software-applications",
                            "software",
                            "networking",
                            "internet-service-providers",
                            "online-content",
                            "computer-consumables",
                            "web-services",
                            "web-hosting",
                            "apps",
                            "information-services",
                            "computer-repair",
                            "fintech-financial-technology",
                            "seo",
                            "cryptocurrency",
                            "artificial-intelligence",
                            "computer-training",
                            "cloud-computing",
                            "saas",
                            "e-learning",
                            "project-management",
                            "machine-learning",
                            "cyber-security",
                            "ios",
                            "edtech-educational-technology",
                            "trading-platform",
                            "software-engineering",
                            "virtual-reality",
                            "agtech-agricultural-technology",
                            "augmented-reality",
                            "digital-currency-mining",
                            "3d-technology",
                            "mail-services",
                            "cybersecurity",
                            "scanning-services",
                            "fashion",
                            "arts-and-crafts",
                            "leisure",
                            "sports",
                            "photography",
                            "film-television-and-video",
                            "pubs-and-clubs",
                            "music",
                            "pets-and-animals",
                            "bookmakers",
                            "parties",
                            "casinos",
                            "hobbies",
                            "social-network",
                            "performing-arts",
                            "gambling",
                            "lifestyle-management",
                            "event-services",
                            "event-equipment",
                            "weddings",
                            "conferences",
                            "financial-activity",
                            "audit-and-accounting",
                            "business-management-consulting",
                            "investment-companies",
                            "tax-consultants",
                            "banks-credit-unions",
                            "finances-legal-services",
                            "insurance-companies",
                            "leasing",
                            "insurance-services",
                            "asset-management",
                            "crowdfunding",
                            "banking-equipment",
                            "personal-finance",
                            "payroll-services",
                            "funding-platform",
                            "money-service-business",
                            "pawnshops",
                            "online-payment-service-provider",
                            "investing",
                            "stock-exchanges",
                            "food-retailers",
                            "restaurants",
                            "cafes",
                            "catering",
                            "food-manufacturing",
                            "catering-equipment",
                            "wine-and-beer",
                            "supermarket",
                            "cookery",
                            "take-aways",
                            "food-distributors",
                            "organic-products",
                            "beauty-professionals",
                            "health-care",
                            "doctors-and-clinics",
                            "beauty-products",
                            "dentists",
                            "medical-equipment",
                            "fitness",
                            "hairdressers",
                            "nursing-and-care",
                            "complementary-therapy",
                            "massage-therapists",
                            "pharmacies",
                            "pregnancy-child-birth",
                            "opticians",
                            "wellness",
                            "cosmetic-surgery",
                            "mental-health-care",
                            "vitamins-and-supplements",
                            "personal-care",
                            "mobility-aids",
                            "anti-aging-care",
                            "spirituality",
                            "sewing-and-needlework",
                            "lawyers",
                            "legal-services",
                            "solicitors",
                            "wills-and-trusts",
                            "manufacturing",
                            "engineering",
                            "industrial-equipment",
                            "furniture-manufacturers",
                            "farming",
                            "steel-products",
                            "industrial-services",
                            "automotive",
                            "electrical-service",
                            "industrial-automation",
                            "engineers",
                            "industrial-supplies",
                            "paper-products",
                            "oilgas-companies-support-services",
                            "water-treatment",
                            "civil-engineering",
                            "pumps-manufacturers",
                            "energy-suppliers",
                            "industrial-premises",
                            "aerospace",
                            "product-development",
                            "science",
                            "infrastructure",
                            "carpentry",
                            "solar-panels",
                            "utilities",
                            "disinfecting-services",
                            "electrical-goods",
                            "hardware-stores",
                            "home-and-garden",
                            "clothing-and-accessories",
                            "gifts",
                            "jewellery",
                            "furniture",
                            "textile",
                            "mobile-phone-shops",
                            "brand-name",
                            "books",
                            "kids",
                            "optical-shop",
                            "shopping-centres",
                            "cigars-and-tobacco",
                            "camping-and-outdoors",
                            "department-stores",
                            "shopping-music",
                            "marketplace",
                            "fishing-equipment",
                            "general-shopping",
                            "duty-free-shop",
                            "gadgets",
                            "online-shopping",
                            "sporting-goods",
                            "pet-shops",
                            "outlets",
                            "discount-stores",
                            "travel-agents",
                            "hotels",
                            "tourist-information",
                            "tour-operators",
                            "apartments",
                            "attractions",
                            "guest-houses",
                            "specialist-accommodation",
                            "holiday-homes",
                            "hotelmotel-equipment",
                            "excursions",
                            "sightseeing",
                            "places-to-visit",
                            "homestay",
                            "translation-services",
                            "tourism",
                            "visa-agencies",
                            "camping-and-caravans",
                            "bed-and-breakfast",
                            "recreation",
                            "self-catering-accommodation",
                            "cottages",
                            "construction",
                            "building-materials",
                            "chemicals",
                            "construction-services",
                            "architectural-services",
                            "aluminium-openings",
                            "construction-equipment",
                            "pest-control",
                            "locksmiths",
                            "stainless-steel",
                            "decorators",
                            "staircase-timber-handrail",
                            "water-filters",
                            "metals",
                            "roofing",
                            "wrought-iron",
                            "gardeners",
                            "tempered-glass-railing",
                            "construction-training",
                            "doors",
                            "windows",
                            "excavators",
                            "plumbers",
                            "stone",
                            "handyman",
                            "concrete",
                            "fencing-and-fence-materials",
                            "remodeling",
                            "forestry",
                            "glass-manufacturing",
                            "landscaping",
                            "glass",
                            "lumber",
                            "paving",
                            "sandblasting",
                            "vehicle-services",
                            "logistics",
                            "transport",
                            "car-parts-and-accessories",
                            "vehicle-sales",
                            "transport-agents",
                            "petrol-station",
                            "car-rental",
                            "shippingport-agent",
                            "marine-services",
                            "air-travel",
                            "bicycles",
                            "taxis",
                            "driving-schools",
                            "air-transport",
                            "motorbikes",
                            "vehicle-manufacturers",
                            "haulage",
                            "transportation",
                            "package-shipping",
                            "auto-insurance",
                            "courier-services",
                            "cargo-services",
                            "auto-parts-newused",
                            "auto-repair",
                            "auto-services",
                            "auto-dealers-newused",
                            "auto-supplies",
                            "electric-vehicle",
                            "parking",
                            "tire-dealers",
                            "ports-and-harbours",
                            "rail-transport",
                            "limousines",
                            "mechanics",
                            "boats-and-boating",
                            "bus-line",
                            "aviation",
                            "car-wash",
                            "schools-malaysia",
                            "education",
                            "childrens-services",
                            "colleges",
                            "religion",
                            "communities",
                            "universities",
                            "environmental-services",
                            "nonprofit-organizations",
                            "government",
                            "business-education",
                            "associations",
                            "sustainability",
                            "public-transport",
                            "tutoring",
                            "local-authorities",
                            "funeral-directors",
                            "child-daycare-services",
                            "retirement",
                            "charity",
                            "kindergartens",
                            "social-work-services",
                            "voluntary-organisations",
                            "group-homes",
                            "after-school-programs",
                            "advice-centres",
                            "youth-organizations",
                            "political",
                            "organizations",
                            "government-services",
                            "counseling-services",
                            "estate-agents",
                            "interior-design",
                            "security",
                            "cleaning",
                            "property-development",
                            "renovation",
                            "removals-and-relocation",
                            "home-remodeling",
                            "realtors",
                            "property-consultants",
                            "fire-safety-equipment",
                            "letting-agents",
                            "commercial-property",
                            "property-management",
                            "home-improvement",
                            "rental-property",
                            "warehouses",
                            "online-property-listings",
                            "apartment-rental",
                            "building-maintenance",
                            "vacation-rentals",
                            "overseas-property",
                            "buildings",
                            "coworking-spaces",
                            "auctions"
                        ],
                        "type": "string",
                        "description": "Business category to browse. Ignored if Keyword search is set. Leave as \"Custom category\" and fill in Custom category below for a category not in this list, or leave both empty (with a City set) to browse all categories in that city.",
                        "default": "restaurants"
                    },
                    "customCategory": {
                        "title": "Custom category (mode=search)",
                        "type": "string",
                        "description": "Free-text category slug override, e.g. \"solar-panels\". Used when Category is set to \"Custom category\" or left blank. Takes priority over the Category dropdown when non-empty.",
                        "default": ""
                    },
                    "city": {
                        "title": "City (mode=search)",
                        "enum": [
                            "",
                            "alor-gajah",
                            "alor-setar",
                            "alor-star",
                            "ampang",
                            "ampang-jaya",
                            "ayer-itam",
                            "ayer-keroh",
                            "ayer-molek",
                            "ayer-tawar",
                            "bagan-serai",
                            "bahau",
                            "balakong",
                            "bandar-baru-bangi",
                            "banting",
                            "batu-caves",
                            "bayan-lepas",
                            "bintulu",
                            "bukit-mertajam",
                            "butterworth",
                            "cheras",
                            "cukai",
                            "dungun",
                            "georgetown",
                            "gua-musang",
                            "ipoh",
                            "johor-bahru",
                            "kajang",
                            "kampar",
                            "kangar",
                            "kemaman",
                            "keningau",
                            "klang",
                            "kluang",
                            "kota-bharu",
                            "kota-kinabalu",
                            "kota-tinggi",
                            "kuala-kangsar",
                            "kuala-krai",
                            "kuala-lipis",
                            "kuala-lumpur",
                            "kuala-perlis",
                            "kuala-pilah",
                            "kuala-selangor",
                            "kuala-terengganu",
                            "kuantan",
                            "kuching",
                            "kulai",
                            "kulim",
                            "labuan",
                            "lahad-datu",
                            "langkawi",
                            "limbang",
                            "lumut",
                            "malacca",
                            "melaka",
                            "mentakab",
                            "mersing",
                            "miri",
                            "muar",
                            "nibong-tebal",
                            "nilai",
                            "pasir-gudang",
                            "pasir-mas",
                            "pekan",
                            "penang",
                            "perai",
                            "petaling-jaya",
                            "port-dickson",
                            "port-klang",
                            "puchong",
                            "rawang",
                            "sandakan",
                            "segamat",
                            "selangor",
                            "senai",
                            "seremban",
                            "seri-kembangan",
                            "shah-alam",
                            "sibu",
                            "simpang-rengam",
                            "skudai",
                            "subang-jaya",
                            "sungai-buloh",
                            "sungai-petani",
                            "taiping",
                            "tampin",
                            "tanah-merah",
                            "tangkak",
                            "tanjong-malim",
                            "tapah",
                            "tawau",
                            "teluk-intan",
                            "temerloh",
                            "ulu-tiram",
                            "yong-peng"
                        ],
                        "type": "string",
                        "description": "Malaysian city/town to browse. Leave as \"(none - all cities)\" for a nationwide category browse, or set a city with an empty Category to browse all categories in that city.",
                        "default": ""
                    },
                    "customCity": {
                        "title": "Custom city (mode=search)",
                        "type": "string",
                        "description": "Free-text city slug override for a town not in the City dropdown, e.g. \"beaufort\". Takes priority over the City dropdown when non-empty.",
                        "default": ""
                    },
                    "businessUrls": {
                        "title": "Business profile URLs (mode=byUrl)",
                        "type": "array",
                        "description": "One or more businesslist.my company profile URLs to fetch directly, e.g. https://www.businesslist.my/company/209832/ah-cheng-laksa",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "relevance",
                            "rating",
                            "reviews",
                            "name"
                        ],
                        "type": "string",
                        "description": "Client-side sort applied to the collected results before output (mode=search only).",
                        "default": "relevance"
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only include businesses with an average rating of at least this many stars (0-5). Businesses with no rating are excluded when this is set above 0.",
                        "default": 0
                    },
                    "minReviews": {
                        "title": "Minimum review count",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Only include businesses with at least this many reviews.",
                        "default": 0
                    },
                    "verifiedOnly": {
                        "title": "Verified listings only",
                        "type": "boolean",
                        "description": "Only include businesses carrying businesslist.my's \"Verified Listing\" badge.",
                        "default": false
                    },
                    "fetchDetails": {
                        "title": "Fetch full business profile details",
                        "type": "boolean",
                        "description": "For mode=search, fetch each business's profile page for richer data (website, description, opening hours, exact geo-coordinates, registration date). Roughly doubles the number of requests and run time.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of business records to return.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
