Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Mudah.my API page →
docs / mudah

Mudah.my

Malaysia's largest classifieds: cars, property for sale and to rent, phones, appliances, fashion, pets, jobs and services, priced in MYR.

base /mudah/v18 endpoints
post/mudah/v1/listing1 credit

One ad in full, by its list id or URL: title, complete description, price and the seller's earlier price, condition, category, state and town, every photo in standard and high resolution, every attribute the category defines (car make, model, variant, engine, mileage, transmission and manufactured year; property type, tenure, bedrooms, bathrooms, floor size, facilities, carpark; phone brand, model, storage and warranty; job salary, contract type, experience, education, languages and company details), the dealer's registration number where one is published, shop identity and verification, and how buyers can reach the seller.

ParameterAllowed / rangeDescription
listing_idrequired—The ad's list id — the number at the end of a mudah ad URL (…/tong-sampah-leach-bin-1100l-1500l-98625990.htm → 98625990) — or the full URL. Every search row returns it as listing_id.
include_pii = falseoptional—Return the contact details of PRIVATE sellers (name, phone, WhatsApp link, and phone/e-mail typed into the description). Off by default: those belong to private individuals. Dealer, agency and shop details are business facts and are always returned.
Try in playground →
post/mudah/v1/seller_listings1 credit

Every live ad of one seller — a private account by user id, or a dealer / agency / shop by store id — with the same row shape as search, so a dealer's whole stock or a shop's whole catalogue comes back in pages of up to 200.

ParameterAllowed / rangeDescription
store_idoptional—The shop's mudah store id (search rows: seller.store_id). One of `store_id` or `user_id` is required.
user_idoptional—The seller's mudah user id (search rows: seller.user_id).
queryoptional—Keyword. Optional when `category` is given — a bare category browses everything in it.
categoryoptional—Category id, slug or name — 1020 / 'cars' / 'Cars'. Parent ids include their children (4100 covers clothes, shoes, watches, health & beauty). The free `categories` action lists every one.
regionoptional—Malaysian state or federal territory — id, slug or name ('8', 'selangor', 'Kuala Lumpur'). Free `locations` action lists them.
sort = newestoptionalnewest · price_asc · price_desc · relevanceResult order.
limit = 40optional1–200Rows per call, 1-200. Above 200 mudah silently returns 24, so 200 is the enforced ceiling.
offset = 0optional0–9999Rows to skip. offset + limit must stay within 10 000 — mudah's search window. Past it the service answers 'zero results' rather than an error, so narrow the query instead of paging deeper.
include_description = falseoptional—Add each row's full description text (bigger response).
include_images = falseoptional—Add every photo of each row, not just the cover image.
include_pii = falseoptional—Return the contact details of PRIVATE sellers (name, phone, WhatsApp link, and phone/e-mail typed into the description). Off by default: those belong to private individuals. Dealer, agency and shop details are business facts and are always returned.
Try in playground →
post/mudah/v1/similar1 credit

Mudah's own 'similar ads' for one listing — the comparable live ads it shows next to it, with price, condition highlights, location and photo. Useful for pricing a used item against what the same market is asking right now.

ParameterAllowed / rangeDescription
listing_idrequired—The ad's list id — the number at the end of a mudah ad URL (…/tong-sampah-leach-bin-1100l-1500l-98625990.htm → 98625990) — or the full URL. Every search row returns it as listing_id.
include_pii = falseoptional—Return the contact details of PRIVATE sellers (name, phone, WhatsApp link, and phone/e-mail typed into the description). Off by default: those belong to private individuals. Dealer, agency and shop details are business facts and are always returned.
Try in playground →
post/mudah/v1/suggest1 credit

Mudah's keyword autocomplete: what real buyers type, each suggestion carrying the category it belongs to and the ready-made filter values for it — so a half-typed word becomes a valid search without guessing a category id.

ParameterAllowed / rangeDescription
queryrequired—What the user has typed so far.
Try in playground →
post/mudah/v1/categoriesfree

Mudah's whole category tree — every group, category and sub-category with its id, name and slug. Free: these ids are what `search` and `filters` take, so nobody has to guess one.

Try in playground →
post/mudah/v1/locationsfree

Every Malaysian state and federal territory mudah lists, each with its towns and districts, ids and slugs. Free: these are the values `region` and `area` take.

Try in playground →
post/mudah/v1/filtersfree

Every filter one category publishes, with its key, label, kind (single, multi or range) and the complete list of allowed values — car makes and models, property types and facilities, phone brands, models and storage sizes, job categories and contract types, conditions, sort orders. Free, and the authoritative input for `search`'s `filters` parameter.

ParameterAllowed / rangeDescription
categoryrequired—Category id, slug or name whose filters you want.
Try in playground →