# Motorist.sg — Singapore used cars with COE, OMV, ARF, PARF and depreciation

> Search Motorist.sg's used-vehicle listings in Singapore by keyword, category (PARF, COE-renewed, OPC, almost new…), vehicle type, asking price, annual depreciation, registration year, remaining COE, gearbox and fuel, with ten sort orders. Returns the source's own total and 50 rows per page with price, depreciation per year, COE left, owners, mileage and the selling dealer.
> ReefAPI engine `motorist-sg` · 2 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/motorist-sg/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/motorist-sg/v1/search — 3 credits
Search Motorist.sg's used-vehicle listings in Singapore by keyword, category (PARF, COE-renewed, OPC, almost new…), vehicle type, asking price, annual depreciation, registration year, remaining COE, gearbox and fuel, with ten sort orders. Returns the source's own total and 50 rows per page with price, depreciation per year, COE left, owners, mileage and the selling dealer.

**Parameters:**
- `query` (string, optional) — Free-text keyword matched by Motorist's own search (make, model or variant). Measured: `toyota` cuts the listing from 7,472 to 1,173 vehicles (sold included), `toyota corolla` to 127.
- `category` (enum, optional, default "all") — Singapore listing category: PARF cars, COE-renewed cars, almost-new, low mileage, first owner, continental makes, scrap/COE-renewable, or off-peak cars (OPC). [one of: all, parf, coe_renewed, almost_new, low_mileage, first_owner, continental, scrap_coe_renewable, opc]
- `vehicle_type` (enum, optional) — Body or vehicle type. Several may be passed comma-separated. [one of: luxury, sedan, hatchback, mpv, suv, sports, stationwagon, diesel, hybrid, electric, truck, pickup, van, bus, vintage]
- `price_min` (integer, optional) — Lowest asking price, SGD.
- `price_max` (integer, optional) — Highest asking price, SGD.
- `depreciation_min` (integer, optional) — Lowest annual depreciation, SGD per year.
- `depreciation_max` (integer, optional) — Highest annual depreciation, SGD per year.
- `year_min` (integer, optional) — Lowest registration year, 4-digit year.
- `year_max` (integer, optional) — Highest registration year, 4-digit year.
- `coe_left_months_min` (integer, optional) — Lowest remaining COE, months.
- `coe_left_months_max` (integer, optional) — Highest remaining COE, months.
- `transmission` (enum, optional) — Gearbox. [one of: auto, manual]
- `fuel` (enum, optional) — Fuel type. [one of: petrol, diesel, hybrid, electric]
- `availability` (enum, optional, default "available") — `available` (default) = cars still for sale; `sold` = sold listings (no price printed); `any` = both, which is what the website shows by default (7,472 = 2,692 available + 4,780 sold, measured). [one of: available, sold, any]
- `sort` (enum, optional, default "newest") — Order of the results. [one of: newest, oldest, reg_date_desc, reg_date_asc, price_desc, price_asc, depreciation_desc, depreciation_asc, mileage_desc, mileage_asc]
- `page` (integer, optional, default 1) — Page number; 50 rows per page. `summary.has_more` says whether another page exists. A page past the last returns no rows.

**Returns:** `{rows[], summary{total_results, page, rows_per_page, last_page, has_more, filters_applied, ads_dropped}}`. Each row: listing_id (the id `detail` takes), position (the source's own rank), url, title, status (available/sold), price_sgd, price_display, last_asking_price_sgd (sold rows), monthly_installment_sgd, depreciation_sgd_per_year, registration_date, coe_left + coe_left_months, manufacturing_year, owners, mileage_km, posted_on, ad_label (SPOTLIGHT AD / PREMIUM AD), featured, dealer {name, merchant_id, url}, description_snippet, photo_url.

**Example request body:**
```json
{
  "query": "toyota",
  "vehicle_type": "suv",
  "sort": "price_asc"
}
```

### POST https://api.reefapi.com/motorist-sg/v1/detail — 2 credits
The full listing of one vehicle by its `listing_id` (or URL): asking price, monthly instalment and its loan assumptions, depreciation per year, COE, OMV, ARF, minimum PARF, paper value, road tax, COE / PARF / road-tax expiry dates, registration date, owners, mileage, vehicle scheme, colour, gearbox, fuel, engine cc, power, the seller's notes (features, accessories, description), photos, view counts and the seller block (dealer name, address, phone and named sales contacts).

**Parameters:**
- `listing_id` (string, required) — Motorist listing id from a search row (`listing_id`), e.g. 57847. Digits only.
- `url` (string, optional) — Alternative to listing_id: the listing URL, e.g. https://www.motorist.sg/used-car/57847/audi-a3-sedan-1-0-tfsi-s-tronic-led

**Returns:** One vehicle: listing_id, url, title, make, model, status, price_sgd, price_display, ld_price_sgd, price_mismatch, monthly_installment_sgd, loan_assumptions{down_payment_pct, loan_pct, interest_rate_pct, tenure_months}, depreciation_sgd_per_year, coe_sgd, omv_sgd, arf_sgd, min_parf_sgd, paper_value_sgd, paper_value_as_of, road_tax_sgd_per_year, registration_date, coe_expiry_date, coe_left, coe_left_months, parf_expiry_date, road_tax_expiry_date, manufacturing_year, owners, mileage_km, vehicle_scheme, colour, transmission, fuel_type, engine_cc, power_kw, power_bhp, vehicle_attachment, specs{}, features, accessories, description, posted_on, updated_on, ad_label, views_total, views_last_24h, saved_by_others, photos[], seller{name, merchant_id, url, listings_url, address, sold_last_3_months, phone, contacts[]{name, phone}, star_dealer}.

**Example request body:**
```json
{
  "listing_id": "57847"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=motorist-sg
- Human docs page: https://reefapi.com/docs/motorist-sg
- Overview page: https://reefapi.com/motorist-sg-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
