Gov APIportalddms.malaysia.gov.my ↗
Access the DDMS 2.0 Malaysia staff directory via API. Retrieve names, positions, phone numbers, and emails across JDN, ARKIB, and CGSO departments.
What is the Gov API?
The DDMS 2.0 Malaysia Personnel Directory API exposes a single endpoint, list_personnel, that returns the full staff contact directory from the Malaysian government's DDMS 2.0 portal. Each of the 5 response fields per record covers a staff member's name, position, phone number, email address, and department affiliation. An optional department filter lets you narrow results to JDN, ARKIB, or CGSO specifically.
curl -X GET 'https://api.parse.bot/scraper/56ef83f5-2db5-4e69-a93c-9cd90cd414f9/list_personnel?department=JDN' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace portalddms-malaysia-gov-my-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: DDMS 2.0 Directory SDK — bounded, re-runnable; every call capped."""
from parse_apis.portalddms_malaysia_gov_my_api import DDMSDirectory, Department, DirectoryUnavailable
client = DDMSDirectory()
# List all personnel across all departments
for person in client.people.list(limit=3):
print(person.name, person.position, person.email)
# Filter by department
for person in client.people.list(department=Department.ARKIB, limit=3):
print(person.name, person.department, person.phone)
# Handle potential errors
try:
first = client.people.list(department=Department.JDN, limit=1).first()
print(first.name, first.email, first.position)
except DirectoryUnavailable as e:
print("directory unavailable:", e)
print("exercised: people.list")
Lists all personnel from the DDMS 2.0 team directory. Each record includes the staff member's name, position, phone number, full email address, and department. Results can be filtered by department. Returns the complete directory in a single page.
| Param | Type | Description |
|---|---|---|
| department | string | Filter results to a specific department. |
{
"type": "object",
"fields": {
"total": "integer count of personnel returned",
"personnel": "array of staff directory entries with name, position, phone, email, department"
},
"sample": {
"data": {
"total": 20,
"personnel": [
{
"name": "John Doe",
"email": "[email protected]",
"phone": "+1 (555) 012-3456",
"number": 1,
"position": "Timbalan Pengarah (Pengurus Projek)",
"department": "JDN"
},
{
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+1 (555) 012-3456",
"number": 1,
"position": "Pengarah Bahagian Pengurusan Rekod Kerajaan",
"department": "ARKIB"
}
]
},
"status": "success"
}
}About the Gov API
What the API Returns
The list_personnel endpoint returns the complete DDMS 2.0 team directory in a single response. Each entry in the personnel array includes the staff member's full name, job position, direct phone number, full email address, and department. The top-level total field gives you the integer count of records returned — useful for sanity-checking filtered results against the full directory.
Filtering by Department
The department parameter is optional. When omitted, list_personnel returns all personnel across every department in the directory. To scope results, pass one of the known department identifiers — JDN (Jabatan Digital Negara), ARKIB (Arkib Negara Malaysia), or CGSO (Corporate & General Services Office). The filter is applied server-side, so only matching records are returned in personnel.
Coverage and Scope
The directory reflects the personnel published on the DDMS 2.0 Contact Us page at portalddms.malaysia.gov.my. Coverage is limited to the three departments listed above; staff from other Malaysian government agencies are not included. The directory is a flat, non-paginated list — the full result set is always returned in one response.
The Gov API is a managed, monitored endpoint for portalddms.malaysia.gov.my — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when portalddms.malaysia.gov.my changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official portalddms.malaysia.gov.my API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Look up a specific DDMS 2.0 department contact by filtering
list_personnelwith thedepartmentparameter. - Build an internal contact card index from staff names, positions, and email addresses across JDN, ARKIB, and CGSO.
- Automate email list generation for DDMS 2.0 departmental outreach using the
emailfield. - Populate a CRM or directory tool with Malaysian government DDMS staff records and their direct phone numbers.
- Validate or cross-reference government staff roles and positions programmatically using the
positionfield. - Monitor department headcount changes over time by comparing
totalcounts across periodic API calls.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does portalddms.malaysia.gov.my offer an official developer API?+
What does `list_personnel` return when a `department` filter is applied?+
personnel records matching that department, along with an updated total reflecting the filtered count. The three supported department values are JDN, ARKIB, and CGSO. Passing a department not present in the directory will return an empty personnel array with a total of 0.Is the directory paginated, or are all records returned at once?+
total field at the top level of the response confirms how many entries are in the personnel array.