Motorist.sg API & Scraper
The Motorist.sg API returns the used vehicles listed on motorist.sg, one of Singapore's car marketplaces, as clean JSON in two actions.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
search filters by free-text keyword, by the categories Singapore buyers actually shop by (PARF cars, COE-renewed cars, off-peak OPC cars, almost new, low mileage, first owner, continental makes, scrap or COE-renewable), by vehicle type (sedan, hatchback, MPV, SUV, luxury, sports, stationwagon, diesel, hybrid, electric, van, truck, pickup, bus, vintage), and by asking price, annual depreciation, registration year, months of COE left, gearbox and fuel, with ten sort orders including lowest depreciation. Every response carries Motorist's own total for the query and 50 rows a page, each with the listing id, the source's rank, title, status, asking price, monthly instalment, depreciation per year, registration date, COE left in months, manufacturing year, number of owners, mileage, date posted, sponsored label and the selling dealer with its merchant id. detail opens one listing in full: COE, OMV, ARF, minimum PARF, paper value with its as-of date, road tax per year, COE, PARF and road-tax expiry dates, vehicle scheme, colour, gearbox, fuel, engine cc, power in kW and bhp, the seller's features, accessories and description, every photo, view counts, the loan assumptions behind the quoted instalment, and the seller block with the dealer's name, address, phone and named sales contacts. Each Singapore cost figure comes back under its own name instead of one ambiguous price, and on 2026-10-07 the asking price matched the price Motorist prints on 10 of 10 cars checked, and COE, OMV, ARF and paper value matched the printed figures 43 of 43 times. The website mixes sold cars into its listing by default; this API returns cars still for sale unless you ask for sold ones. One ReefAPI key, the standard { ok, data, meta, error } envelope.
The Singapore price fields Motorist.sg publishes on each listing
A Singapore car listing carries several money figures that mean different things. The API returns each one under its own name; the example is one listing measured on 2026-10-07.
| Field | What it is | Example (Audi A3 Sedan 1.0, registered 2019) |
|---|---|---|
| price_sgd | Asking price printed on the listing | $53,500 |
| depreciation_sgd_per_year | Annual depreciation the listing prints | $14,971/yr |
| monthly_installment_sgd | Quoted instalment, with its loan_assumptions | $1,212/mth (30% down, 2.48%, 33 months) |
| coe_sgd / omv_sgd / arf_sgd | Certificate of Entitlement, Open Market Value, Additional Registration Fee | $26,667 / $22,082 / $22,915 |
| min_parf_sgd / paper_value_sgd | Minimum PARF rebate and paper value with its as-of date | $11,458 / $21,232 (as of 07/10/2026) |
| coe_expiry_date / coe_left_months | When the COE runs out and how many months remain | 2029-07-28 / 33 |
| road_tax_sgd_per_year | Road tax payable | $392/yr |
A sold listing has no asking price on Motorist; price_sgd is null and status is sold. Its last asking price, which Motorist still shows in its compare tray, is returned as last_asking_price_sgd on the search row.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/motorist-sg/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "toyota",
"vehicle_type": "suv",
"sort": "price_asc"
}
}{
"ok": true,
"meta": {
"api": "motorist-sg",
"endpoint": "search",
"mode": "live",
"latency_ms": 1384.6,
"record_count": 50,
"bytes": 442386,
"cache_hit": false,
"stop_reason": "complete",
"charged_credits": 3,
"version": "1.0.0",
"request_id": "e1499a828d154fd6",
"queue_ms": 1.4,
"fetched_at": "2026-10-07T15:52:10.441Z"
},
"data": {
"rows": [
{
"listing_id": "54681",
"position": 1,
"url": "https://www.motorist.sg/used-car/54681/toyota-c-hr-hybrid-1-8s-cvt",
"title": "TOYOTA C-HR HYBRID 1.8S CVT",
"status": "available",
"price_sgd": 18800,
"price_display": "$18,800",
"last_asking_price_sgd": null,
"compare_tray_price_display": "$18,800",
"monthly_installment_sgd": null,
"depreciation_sgd_per_year": 21062,
"depreciation_display": "$21,062/yr",
"registration_date": "2017-06-15",
"coe_left": "8m COE left",
"coe_left_months": 8,
"manufacturing_year": 2017,
"owners": 1,
"mileage_km": 103000,
"posted_on": "2026-10-07",
"ad_label": "PREMIUM AD",
"featured": false,
"dealer": {
"name": "Autus Auto Pte Ltd",
"merchant_id": "3218",
"url": "https://www.motorist.sg/merchant/3218/autus-auto-pte-ltd"
},
"seller_type": "dealer",
"description_snippet": "1 owner, superb excellent condition.",
"photo_url": "https://www.motorist.sg/photo/sale/3727955/image"
},
{
"listing_id": "55172",
"position": 2,
"url": "https://www.motorist.sg/used-car/55172/toyota-c-hr-hybrid-1-8s-cvt",
"title": "TOYOTA C-HR HYBRID 1.8S CVT",
"status": "available",
"price_sgd": 21000,
"price_display": "$21,000",
"last_asking_price_sgd": null,
"compare_tray_price_display": "$21,000",
"monthly_installment_sgd": null,
"depreciation_sgd_per_year": 20713,
"depreciation_display": "$20,713/yr",
"registration_date": "2017-08-30",
"coe_left": "10m COE left",
"coe_left_months": 10,
"manufacturing_year": 2017,
"owners": 3,
"mileage_km": null,
"posted_on": "2026-10-02",
"ad_label": null,
"featured": false,
"dealer": null,
"seller_type": null,
"description_snippet": "25km/L low fuel consumption with Hybrid. Accident free. Pristine condition. no repair needed. Trade in welcome. Bank loan or 100% in-house loan available. Test drive welcome. Contact us for car viewing now, by appointment only!",
"photo_url": "https://www.motorist.sg/photo/sale/3764302/image"
},
{
"listing_id": "47582",
"position": 3,
"url": "https://www.motorist.sg/used-car/47582/toyota-fortuner-2-7-2wd-auto-fl",
"title": "TOYOTA FORTUNER 2.7 2WD AUTO FL (COE till 04/2028)",
"status": "available",
"price_sgd": 29888,
"price_display": "$29,888",
"last_asking_price_sgd": null,
"compare_tray_price_display": "$29,888",
"monthly_installment_sgd": 1212,
"depreciation_sgd_per_year": 19105,
"depreciation_display": "$19,105/yr",
"registration_date": "2009-05-12",
"coe_left": "1y 6m COE left",
"coe_left_months": 18,
"manufacturing_year": 2009,
"owners": 4,
"mileage_km": 187000,
"posted_on": "2026-10-05",
"ad_label": "SPOTLIGHT AD",
"featured": true,
"dealer": {
"name": "Sphere Automobile Pte Ltd",
"merchant_id": "1379",
"url": "https://www.motorist.sg/merchant/1379/sphere-automobile-pte-ltd"
},
"seller_type": "dealer",
"description_snippet": "Very low mileage, the once popular and powerful Toyota fortuner is back, spacious interior, excellent for long drives, off road capable. Please contact us for more information and arrange viewing now.",
"photo_url": "https://www.motorist.sg/photo/sale/3226966/image"
}
],
"summary": {
"total_results": 59,
"page": 1,
"rows_per_page": 50,
"last_page": 2,
"has_more": true,
"filters_applied": {
"query": "toyota",
"vehicle_type": [
"suv"
],
"availability": "available",
"sort": "price_asc"
},
"ads_dropped": 6
}
}
}What the Motorist.sg API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | 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. | Price-intelligence teams call search to search Motorist.sg's used-vehicle listings in Singapore by keyword, category (PARF, COE-renew…. | query, category, vehicle_type, price_min, price_max, ... |
| detail | 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). | Classifieds aggregators call detail to get the full listing of one vehicle by its `listing_id` (or URL). | listing_id, url |
Call search from your stack
curl -X POST https://api.reefapi.com/motorist-sg/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"toyota","vehicle_type":"suv","sort":"price_asc"}'import requests
r = requests.post(
"https://api.reefapi.com/motorist-sg/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "toyota",
"vehicle_type": "suv",
"sort": "price_asc"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/motorist-sg/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "toyota",
"vehicle_type": "suv",
"sort": "price_asc"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.motorist-sg.search with {"query":"toyota","vehicle_type":"suv","sort":"price_asc"}.Who uses this API and why
- Used-car dealers in Singapore pull a model's live listings sorted by depreciation to price their own stock against the market.
- Car-loan and insurance providers read asking price, COE left, OMV and paper value to size loans and cover on real listings.
- Analysts track how annual depreciation and asking prices move for PARF versus COE-renewed cars over time.
- Buyer tools show the full cost picture of a listing - COE, ARF, minimum PARF rebate, road tax and expiry dates - next to the asking price.
- Lead-generation teams list which dealers carry which makes, with the dealer's address, phone and named sales contacts.
Questions developers ask before integrating
What does the Motorist.sg API cover?
Used cars and commercial vehicles listed for sale in Singapore on motorist.sg, from dealers and direct owners. On 2026-10-07 the listing held 7,472 vehicles: 2,692 still for sale and 4,780 sold. Motorcycles are not in this listing.
Does it return COE, OMV, ARF and PARF?
Yes, on the detail action: coe_sgd, omv_sgd, arf_sgd, min_parf_sgd, paper_value_sgd with its as-of date, road_tax_sgd_per_year and the COE, PARF and road-tax expiry dates. COE, OMV and ARF were present on 11 of 11 listings checked; a PARF expiry date is not printed for commercial or COE-renewed vehicles (7 of 11 had one). Search rows carry the asking price, depreciation per year and months of COE left.
Are sold cars included?
Only if you ask. The website mixes sold listings into its default view (4,780 of 7,472 on 2026-10-07). The API defaults to availability available; pass sold or any to get the others. Every row carries status, and a sold row never has an asking price in price_sgd.
How many results can one search return?
50 rows per page, with Motorist's own total, last_page and has_more. Paging reaches every result without gaps or repeats - page 2 continued at rank 51 with no overlap in the check. A page past the last one comes back empty.
Do the filters really filter?
Each was compared with an unfiltered search in the same run. Of 2,692 cars for sale: keyword toyota 421, PARF under $60,000 511, COE-renewed 465, OPC 14, SUV 794, van 240, truck 155, hybrid 317, electric 238, manual 204, 60+ months of COE left 913, depreciation up to $10,000 a year 67, price from $100,000 969. A dealer filter that the site accepts but ignores is not offered.
Is the seller included?
Yes. Search rows name the dealer and its Motorist merchant id (42 of 50 rows on most pages; the rest are direct-owner listings without a seller line). detail adds the dealer's address, phone, named sales contacts with their numbers, whether it is a Motorist Star Dealer and how many cars it sold in the past three months.
How do I get one listing in full?
Take listing_id from a search row (for example 57847) and call detail, or pass the listing URL. A listing that no longer exists returns NOT_FOUND. On 11 listings the detail record matched its search row on id, title, price, depreciation, mileage, owners, registration date and COE left.
What does Motorist.sg not publish?
VIN, number plate and accident or service history are not on these pages, so they are not in the response. Mileage is left blank on many listings (27 to 41 of 50 rows had it, depending on vehicle type), and the registration-year filter is Motorist's own: one car printed as registered in 1972 came back for registration year 2022 or later.
What is the Motorist.sg API?
Motorist.sg API is a ReefAPI endpoint group for singapore used cars as json: asking price, depreciation per year, coe, omv, arf, parf, paper value, coe left and the selling dealer. It returns live JSON through POST requests under /motorist-sg/v1.
Is the Motorist.sg API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Motorist.sg calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Motorist.sg login or account?
No login to Motorist.sg is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Motorist.sg data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Motorist.sg API use?
Motorist.sg actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Motorist.sg from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call motorist-sg actions with the same key, credit pool and JSON envelope used by normal REST requests.