How-to
How to run Malaysia Business Directory List Scraper (Phone & Address)
Step-by-step: the exact input, what each field does, and the rows that come back from businesslist.my.
You want a list of Malaysian businesses in one trade with their phone numbers: every car parts shop in the country, or every advertising agency in Selangor. businesslist.my has them, but it shows 20 listings per page, so its car parts and accessories category (3,907 listings on 2026-10-25) is about 196 pages to click through and copy. This actor returns that category as one table from one run.
What you’ll need
Nothing but an Apify account. You don’t need a proxy or an API key. The actor never visits businesslist.my during your run. It reads a stored copy of the directory’s 365 category pages that we crawl separately, so a run is a filter, not a crawl. You pay $0.004 per listing returned, plus Apify’s own platform usage.
Step 1 — Open the actor
Open Malaysia Business Directory List Scraper (Phone & Address) on the Apify Store and press Try for free. The actor’s own page on this site lists its live health and pricing.
Step 2 — Fill in the input
| Field | Type | Required | What it does |
|---|---|---|---|
mode | string | no | auto = export when no query is given, otherwise lookup. (default auto) |
query | string | no | A business name (or listing number) to look up live. Kept alongside ‘queries’ for saved tasks. |
queries | array | no | A business name (or listing number) to look up live. Several values in one run; combined with ‘query’. (default []) |
state | string | no | Only listings in this state. Kept alongside ‘states’ for saved tasks. |
states | array | no | Only listings in this state. Several values in one run; combined with ‘state’. (default []) |
city | string | no | Only listings in this city. Kept alongside ‘cities’ for saved tasks. |
cities | array | no | Only listings in this city. Several values in one run; combined with ‘city’. (default []) |
categories | array | no | Only these categories, in the source’s own names. Available: 3d-technology, ac-repair-services, advertising, advice-centres, aerospace, after-school-programs,… (default []) |
maxResults | integer | no | Per query in lookup mode; per run in export mode. (default 500) |
categories decides almost everything. It takes businesslist.my’s own category names, the way they appear in its web addresses, so car parts is car-parts-and-accessories, not “car parts”. Type a name the actor does not know and you get one free row listing all 365 categories, which is the quickest way to find yours. state takes the 13 states or Wilayah Persekutuan (Kuala Lumpur, Putrajaya and Labuan), and spellings such as “Penang” or “KL” are mapped for you. maxResults caps the whole run in export mode, so raise it when you want every row.
A working input:
{
"categories": [
"car-parts-and-accessories"
],
"maxResults": 200
}
Step 3 — Run it
Press Start. The run reads the stored category, filters it and pushes the rows; it fetches nothing from businesslist.my. With maxResults: 200 you get the first 200 of 3,907, and the log says so. A filter that matches nothing returns one free no_match row rather than an empty dataset, and if the stored copy cannot be loaded you get one free row with a notice saying so.
Step 4 — Read the output
Every row looks like this — a real row from a real run:
{
"name": "Leed Sports & Trading",
"phone": "+60392222243",
"phone_e164": "+60392222243",
"street": "3A Block B, Jubilee Court, Jalan Jubilee, Off Jalan Loke Yew, 55200",
"city": "Kuala Lumpur",
"region": "Wilayah Persekutuan",
"postal_code": "55200",
"lat": 3.1303936038009894,
"lng": 101.70847535133362,
"country": "MY",
"category": "Advertising",
"listing_id": "364410",
"extras": {
"address": "3A Block B, Jubilee Court, Jalan Jubilee, Off Jalan Loke Yew, 55200, Kuala Lumpur , Wilayah Persekutuan, Malaysia"
},
"source": "snapshot",
"source_url": "https://www.businesslist.my/company/364410/leed-sportstrading"
}
| Field | Example value | Meaning |
|---|---|---|
name | Leed Sports & Trading | Business name as listed |
phone | +60392222243 | Phone number as the business wrote it |
phone_e164 | +60392222243 | The same number in international format (+60…), when it can be read unambiguously |
street | 3A Block B, Jubilee Court, Jalan Jubilee, Off Jalan Loke Yew, 55200 | Street address |
city | Kuala Lumpur | City or town |
region | Wilayah Persekutuan | State (one of the 13 states or Wilayah Persekutuan) |
postal_code | 55200 | Malaysian postcode, when written in the address |
lat | 3.1303936038009894 | Latitude, when the business pinned its location |
phone is the column most people come for, and on the 3,907 car parts listings it was filled on 98.2%. It is kept exactly as the business typed it (“0441144388”, “+60392222243”), so use phone_e164 when you need one format: it is filled only where the number reads unambiguously as Malaysian, 23.3% of the car parts rows. The address is typed by the business too, which is why postal_code is on 71.1% and coordinates on 30.4% of those rows, and why a few rows carry the state name in city. There is no email column, because businesslist.my shows no email on its listing pages.
Step 5 — Export it
Open the Dataset tab and export to CSV, JSON, or Excel — or pull the same rows from the API, which is what you want if this is going to run on a schedule.
What it costs
$0.004 per listing returned, plus Apify’s own platform usage. The whole car parts category is 3,907 listings, about $15.63; the 1,018 of them in Selangor are about $4.07. A business filed under two of your categories is returned and charged once, and notices (an unknown category, a request too large for one run, stale data) are free.
Where the data comes from
This reads businesslist.my, through a stored copy. The target is businesslist.my’s server-rendered category pages (20 company cards each, total stated on page 1), crawled into a snapshot by Scrapebench-api; runs filter the snapshot and never touch the site. Twice a day our checks run this actor against that stored copy and fail if the car parts category stops returning 50 rows with phones and addresses — what “verified” means.
businesslist.my says it lists about 284,000 companies, but its category index shows 365 categories, and a business that sits only in a category the index leaves out is not in the copy. The site’s own search is closed to crawlers in its robots.txt, so name lookups also answer from the stored copy. The run log states the date of the copy, and the copy is refreshed when it is older than a month and the actor is in use.
See it used
Malaysia Car Parts & Accessories Business List with Phone Numbers pulls the 3,907 car parts businesses for a distributor building a call list by state.
If you already have a list of company websites and need emails, Business Email, Phone & Contact Details Scraper reads them from each site instead.
Last updated 2026-10-25