# Mudah — Wrapped API

> **You are on:** `https://api.beta.paywithlocus.com/api` | [llms.txt](https://beta.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 for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.beta.paywithlocus.com/api/wrapped/credits/mudah/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## 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.beta.paywithlocus.com/api/wrapped/credits/mudah/get-listing-details \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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.beta.paywithlocus.com/api/wrapped/credits/mudah/search-cars \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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.beta.paywithlocus.com/api/wrapped/credits/mudah/search-motorcycles \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","price_min":"<integer>"}'
```

## Next steps

- [All wrapped API providers](https://beta.paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://beta.paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://beta.paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://beta.paywithlocus.com/agent/index.md): every Locus agent page.