# Mudah — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search and monitor used vehicle listings from Malaysia's largest marketplace, retrieving detailed information like make, model, year, mileage, and pricing for both cars and motorcycles. Get real-time access to specific listings and filter results by brand to find the perfect vehicle deal.

**Category:** Automotive | **Website:** [mudah.my/](https://mudah.my/) | **Docs:** [parse.bot/marketplace/57c9db1e-7038-433e-9733-15a09a20d7d3/mudah-my-api](https://parse.bot/marketplace/57c9db1e-7038-433e-9733-15a09a20d7d3/mudah-my-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-mudah-my-api-57c9db1e/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_listing_details

Retrieve comprehensive details for a specific Mudah.my listing by its URL. Returns full description, all raw attributes from the site, seller information, image URLs, region, and subarea. The URL is obtained from search_cars or search_motorcycles results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | Full URL of the Mudah.my listing page (from search_cars or search_motorcycles results, e.g. 'https://www.mudah.my/2023-bmw-530e-2-0-m-sport-lci-a-reg-july-2023-114933347.htm'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-mudah-my-api-57c9db1e/get_listing_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### search_cars

Search car listings on Mudah.my with optional brand and price filters. Returns up to 24 listings per page sorted by most recent. Pagination via integer page number. Each listing includes make, model, year, mileage range, condition, transmission, and a direct URL suitable for get_listing_details.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `make_id` | string | No | Brand ID to filter by (e.g., '10' for Honda, '25' for Perodua, '3' for BMW, '28' for Toyota). |
| `page` | integer | No | Page number for pagination. |
| `price_range` | string | No | Price range filter in MYR, formatted as 'min-max' (e.g., '20000-50000') or 'min-' for open-ended (e.g., '50000-'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-mudah-my-api-57c9db1e/search_cars \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"make_id":"<string>","page":"<integer>","price_range":"<string>"}'
```

### search_motorcycles

Search motorcycle listings on Mudah.my with optional minimum price filter. Returns up to 24 listings per page sorted by most recent. Pagination via integer page number. Motorcycles have fewer structured attributes than cars (make/model often null).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `price_min` | integer | No | Minimum listing price filter in MYR. Leave unset to return all price ranges. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-mudah-my-api-57c9db1e/search_motorcycles \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","price_min":"<integer>"}'
```
