OrbTop

Malaysian Bar Legal Directory Scraper

LEAD GENERATIONBUSINESSOTHER

Malaysian Bar Legal Directory Scraper

Scrape the official Malaysian Bar Council Legal Directory for every registered lawyer, law firm, and pupil in Malaysia. Returns names, firm affiliations, addresses, phone numbers, emails, practicing status, admission dates, and qualifications — the same fields you'd copy by hand from the directory, only you get them in clean JSON instead of scrolling through 979 pages.


Malaysian Bar Scraper Features

  • Extracts ~25,000 lawyers, ~4,000 law firms, and ~1,000 pupils across all 15 Malaysian states and federal territories
  • Returns 18+ fields per record — firm, address, phone, email, state, postcode, admission date, qualification, practicing status
  • Filters by record type (lawyers, firms, pupils), state, or surname alphabet
  • Firm records include affiliated lawyer and pupil names so you can rebuild the roster
  • Pure JSON API scraping — no browser, no proxies, no captcha solvers needed
  • Handles pagination, session cookies, and rate limiting so you can point it at a state and walk away

Who Uses Malaysian Bar Directory Data?

  • Legal tech vendors — Build outreach lists for CRM tools, practice management software, and legal research platforms targeting Southeast Asia
  • Cross-border law firms — Identify local counsel, correspondents, and referral partners in specific Malaysian states
  • Recruiters and headhunters — Source lateral candidates by firm, admission date, or practice area
  • Compliance and KYC — Verify bar admission status, firm affiliation, and contact details on Malaysian counterparties
  • Market researchers — Map firm distribution across states, track pupil intake, and measure legal-sector growth in Malaysia

How the Malaysian Bar Scraper Works

  1. Pick what to scrape — Choose record types (lawyers, firms, pupils) and optionally narrow by state or alphabet letter
  2. Paginate the directory — The scraper hits the Bar Council's internal JSON API and walks every page for each filter combination
  3. Return clean records — Each record is flattened into a consistent output schema with a recordType tag, so lawyers, firms, and pupils can live in the same dataset without fighting

Input

{
  "recordTypes": ["lawyer", "firm", "pupil"],
  "states": ["WPKL", "SG"],
  "maxItems": 500
}
Field Type Default Description
recordTypes array ["lawyer","firm","pupil"] Which directory segments to crawl. Any combination of lawyer, firm, pupil.
states array [] Restrict to specific Malaysian state codes (e.g. WPKL, SG, JH). Leave empty to crawl all 15 states.
alphabets array [] Restrict to surnames starting with specific letters. Only applied when states is empty. Leave empty for A–Z.
maxItems integer 100 Maximum total records across all record types. Set to 0 for unlimited.

Scraping all lawyers in Kuala Lumpur

{
  "recordTypes": ["lawyer"],
  "states": ["WPKL"],
  "maxItems": 0
}

Scraping only law firms, statewide

{
  "recordTypes": ["firm"],
  "maxItems": 1000
}

Malaysian Bar Scraper Output Fields

Every record in the dataset uses the same schema. Type-specific fields (like admissionDate for lawyers or petitionStatus for pupils) are populated where they apply and null elsewhere.

{
  "recordType": "lawyer",
  "name": "ABDULLAH BIN MOHD JEFRY",
  "firm": "AZMI & ASSOCIATES",
  "status": "Active",
  "memberStatus": "Active",
  "petitionStatus": null,
  "admissionDate": "07-07-2023",
  "petitionDate": null,
  "qualification": "UNIVERSITI MALAYA (UM)",
  "master": null,
  "address": "14TH FLOOR, MENARA KECK SENG, 203, JALAN BUKIT BINTANG",
  "city": "Kuala Lumpur",
  "state": "Wilayah Persekutuan Kuala Lumpur",
  "postcode": "55100",
  "phone": "0321185000",
  "fax": "0321185111",
  "email": "general@azmilaw.com",
  "website": "http://www.azmilaw.com",
  "lawyerNames": null,
  "pupilNames": null,
  "lastUpdated": "2026-03-12 10:39:15",
  "scrapedAt": "2026-04-23T09:55:57.123Z"
}
Field Type Description
recordType string lawyer, firm, or pupil
name string Full name of the lawyer, firm, or pupil
firm string Law firm name (for lawyers and pupils; equals name for firm records)
status string Practicing status (e.g. Active, Inactive)
memberStatus string Bar Council member/firm status
petitionStatus string Pupil petition status (pupils only)
admissionDate string Admission date in DD-MM-YYYY format (lawyers only)
petitionDate string Petition filing date in DD-MM-YYYY format (pupils only)
qualification string Law school or qualifying institution
master string Pupil master name (pupils only)
address string Street address, composed from the directory's three address lines
city string City or locality
state string Malaysian state or federal territory
postcode string Postal code
phone string Phone number(s), comma-separated if multiple
fax string Fax number
email string Contact email
website string Firm or lawyer website URL
lawyerNames string Comma-separated lawyer names at this firm (firm records only)
pupilNames string Comma-separated pupil names at this firm (firm records only)
lastUpdated string Last-updated timestamp from the directory (lawyers only)
scrapedAt string ISO-8601 timestamp when the record was fetched

FAQ

How do I scrape all lawyers in Malaysia?

Malaysian Bar Legal Directory Scraper covers the full country by default. Set recordTypes to ["lawyer"] and leave states and alphabets empty — the scraper will iterate through every surname alphabet A–Z, which is how the underlying directory exposes the full roster. Set maxItems to 0 for an unlimited run.

How much does the Malaysian Bar Scraper cost to run?

Malaysian Bar Scraper uses pay-per-event pricing: $0.10 per actor start plus $0.001 per record saved. A run that extracts 500 lawyer profiles costs about $0.60. Targeted state-level runs (a few hundred records) land under $0.25.

Does the Malaysian Bar Scraper need proxies?

Malaysian Bar Scraper does not need proxies. The directory is a public PHP site with no anti-bot protection, no Cloudflare, and no rate limits worth speaking of. Direct connection works fine.

Can I filter by state or practice area?

Malaysian Bar Scraper supports state filtering via the states input (14 state codes, including WPKL for Kuala Lumpur and SG for Selangor). Practice-area filtering is supported by the upstream directory but is not exposed in this scraper's input schema — file an issue if you need it.

What's the difference between lawyer, firm, and pupil records?

Malaysian Bar Scraper returns three record types from the same directory. Lawyers are individual advocates and solicitors with admission dates and firm affiliations. Firms are law firms with aggregated contact info and a roster of affiliated lawyers and pupils. Pupils are lawyers-in-training (chambering) with a master, petition status, and petition date. All three share the same output schema — type-specific fields are null where they don't apply.


Need More Features?

Need custom fields, practice-area filtering, or a scraper for a different legal directory? File an issue or get in touch.

Why Use the Malaysian Bar Scraper?

  • Affordable — $0.001 per record, which is less than the Ringgit you'd spend making the same data inquiry in person
  • Complete — Covers lawyers, firms, and pupils across every Malaysian state in a single actor, with 18+ fields per record
  • Clean — Returns structured JSON with consistent field names and flattened addresses, so you spend less time parsing PHP HTML and more time using the data