SGCarMart APIsgcarmart.com ↗
Access SGCarMart used car listings, new car specs, features, COE, ARF, and deregistration values via a structured API. 5 endpoints covering Singapore's car market.
What is the SGCarMart API?
The SGCarMart API provides structured access to Singapore's used and new car market through 5 endpoints covering search, listing details, model specifications, features, and deregistration values. The search_listings endpoint returns paginated results filterable by make, while get_listing_details exposes COE, ARF, OMV, depreciation, and curb weight for individual used car listings — fields central to car valuation in Singapore.
curl -X GET 'https://api.parse.bot/scraper/6e06c8c5-e1e6-42ac-9995-1c8999b9d8f9/search_listings?make=Toyota&page=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace sgcarmart-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""SGCarMart SDK — search listings, inspect details, check deregistration values."""
from parse_apis.sgcarmart_api import SgCarMart, ListingNotFound
client = SgCarMart()
# Search used car listings by make, capped at 5 items total.
for listing in client.listings.search(make="Honda", limit=5):
print(listing.model, listing.price, listing.registration_date)
# Drill into the first listing's full specs.
listing = client.listings.search(make="Toyota", limit=1).first()
if listing:
detail = listing.details()
print(detail.price, detail.depreciation, detail.engine_cap, detail.coe)
# Check deregistration value for that listing.
if listing:
dereg = listing.dereg_value()
print(dereg.coe, dereg.arf, dereg.dereg_value_today)
# Get new-car model specs and features.
stats = client.carmodels.stats(url="/new-cars/info/12618/toyota-corolla-altis")
for sm in stats.sub_models:
print(sm.name, sm.price, sm.fuel_economy)
features = client.carmodels.features(url="/new-cars/info/12618/toyota-corolla-altis")
for sm in features.sub_models:
print(sm.name, sm.head_lights, sm.airbags)
# Typed error handling for a listing that doesn't exist.
try:
bad = client.listings.search(make="NonExistentBrand", limit=1).first()
except ListingNotFound as exc:
print(f"listing gone: {exc}")
print("exercised: listings.search / listing.details / listing.dereg_value / carmodels.stats / carmodels.features")
Search for used car listings on SGCarMart. Returns a paginated list of listings with basic details including model, price, mileage, and registration date. Results are from the latest listings across all makes unless filtered. Each page typically returns 10-20 listings.
| Param | Type | Description |
|---|---|---|
| make | string | Car make to search for (e.g., Toyota, Honda, BMW, Mercedes-Benz). |
| page | integer | Page number for pagination, starting from 1. |
{
"type": "object",
"fields": {
"count": "integer total number of listings returned on this page",
"listings": "array of listing objects with id, model, url, price, mileage, and registration_date"
},
"sample": {
"data": {
"count": 14,
"listings": [
{
"id": "1509832",
"url": "https://www.sgcarmart.com/used-cars/info/nissan-qashqai-12a-dig-t-1509832/?dl=3951",
"model": "Nissan Qashqai 1.2A DIG-T",
"price": 24900,
"mileage": null,
"registration_date": "17-Oct-2017"
}
]
},
"status": "success"
}
}About the SGCarMart API
Used Car Search and Listing Details
The search_listings endpoint accepts an optional make parameter (e.g., Toyota, BMW) and a page integer for pagination. Each result in the listings array includes a listing id, model, url, price, mileage, and registration_date. The id and url fields feed directly into the other endpoints. get_listing_details takes a listing URL path and returns Singapore-specific financial fields: coe (Certificate of Entitlement value), arf (Additional Registration Fee), omv (Open Market Value), dereg_value, and road_tax, alongside mechanical specs like engine_cap, power, and curb_weight.
New Car Model Data
get_model_stats and get_model_features both accept a new car model URL path and return data broken down by sub-model variants. get_model_stats exposes make, model, vehicle_type, country, and per-variant fields including price, depreciation, fuel_economy, power, and transmission. get_model_features returns per-variant feature flags organized under lighting, safety, comfort, and technology categories — useful for side-by-side comparison of trim levels.
Deregistration Value Lookup
get_dereg_value accepts a numeric listing_id from search_listings results and an optional date parameter in YYYY-MM-DD format. The response includes a data object with deregValue_today, deregValue, coe, and arf. Omitting the date parameter defaults to the current date. This endpoint is particularly relevant for buyers calculating the net cost of ownership over the remaining COE period.
The SGCarMart API is a managed, monitored endpoint for sgcarmart.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sgcarmart.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official sgcarmart.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Calculate true cost of ownership by combining
priceanddereg_valuefor a used car listing - Compare COE and ARF values across makes using
search_listingsandget_listing_detailsin bulk - Build a trim-level comparison tool using
get_model_featuressafety and technology flags - Track depreciation trends for specific models using the
depreciationfield fromget_model_stats - Filter EV and hybrid listings by checking
fuel_economyand charging specs in sub-model data - Generate used car valuation reports with OMV, ARF, COE, and curb weight from
get_listing_details - Alert users to deregistration value changes on watched listings using
get_dereg_valuewith a date parameter
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does SGCarMart offer an official developer API?+
What financial fields does `get_listing_details` return, and are they Singapore-specific?+
coe (Certificate of Entitlement), arf (Additional Registration Fee), omv (Open Market Value), dereg_value, and road_tax — the key figures used in Singapore car valuation — alongside mechanical data like engine_cap, power, and curb_weight.Can I search listings by price range, transmission type, or vehicle age?+
search_listings currently filters by make and page only. Price range, transmission, registration year, and mileage filters are not exposed as parameters. You can fork this API on Parse and revise it to add those filter parameters to the search endpoint.Does the API cover new car dealer listings or only used cars?+
search_listings, get_listing_details, and get_dereg_value. New car data is available through get_model_stats and get_model_features, which return specs and features for model variants. New car dealer inventory or live pricing from specific dealers is not currently exposed. You can fork the API on Parse and revise it to add a dealer inventory endpoint.How does pagination work in `search_listings`, and how many results are returned per page?+
page parameter starts at 1. The response includes a count field indicating the number of listings returned on the current page. The total number of pages is not directly returned, so you iterate pages until count drops below the expected page size or returns zero.