Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Carsome API page →
Classifieds & Second-hand

Carsome API & Scraper

The Carsome API returns the certified used-car stock that Carsome sells in Malaysia (carsome.my, prices in MYR), Indonesia (carsome.id, IDR) and Thailand (carsome.co.th, THB) as clean JSON in four actions.

4 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 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 takes a country and filters by free-text keyword, make and model id, body type, location (states in Malaysia, cities in Indonesia, districts in Thailand), gearbox, colour, price range, monthly-instalment range, mileage range and model-year range, with ten sort orders; every response carries Carsome's own total for the query and facet counts by make, model, body type and location. Each row has the car number, listing URL, make, model and variant with ids, model year, odometer in km, engine size, gearbox, fuel, colour, seat class, VIN and number plate, sale status, the showroom with its city, state and coordinates, campaign labels, and a full price set named by meaning: price_cash, price_credit, price_before_campaign with the campaign discount, the credit discount, monthly_installment, VAT and the ex-VAT price where the market prints one, plus the loan terms Carsome quotes. detail adds body type, registration date and type, road-tax, insurance and warranty expiry, booking fee, the exterior and interior photo galleries, the showroom's address, phone and opening hours, and Carsome's inspection report: 175 to 191 named checkpoints in four or five sections, each with its finding tags and remark. makes lists the makes and models in stock with the ids search takes; filters returns the country's live location ids, colours, body types, sort orders and current price, year and mileage bounds. Carsome's three sites mean different things by "price": Indonesia shows a cash price and a lower credit price, Malaysia shows a campaign price under a higher regular one, and Thailand prints its price without 7% VAT while its structured data carries the VAT-inclusive figure. This API returns each number under its own name, and on 2026-10-07 the cash, credit, ex-VAT and monthly figures matched the price Carsome prints on the listing page on every one of 18 cars checked across 10 makes in the three countries. No Carsome account, no browser - one ReefAPI key and the standard { ok, data, meta, error } envelope.

Reference

What Carsome had in stock on 2026-10-07, and which price each site prints

Totals are Carsome's own count for an unfiltered query in each country. The price column is the trap the API exists to remove: the same field name means a different number on each site.

CountryCars in stockCurrencyHeadline price on the listing page
Malaysia (carsome.my)3,647MYRCampaign price; the regular price sits in price_before_campaign (198 of 200 cars had a campaign)
Indonesia (carsome.id)229IDRCash price and a lower credit price, both printed (200 of 200 cars had two prices)
Thailand (carsome.co.th)559THBPrice without 7% VAT; price_cash is VAT-inclusive, price_cash_excl_vat is the printed one

Every row returns currency, price_cash, price_credit, price_before_campaign, campaign_discount, credit_discount, monthly_installment, vat_amount and price_cash_excl_vat, so code never has to know which country it is reading. price_basis is the number Carsome's own price filter and price sort use.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/carsome/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "country": "my",
    "make_id": [
      157
    ],
    "body_type": "suv",
    "sort": "price_asc",
    "page_size": 20
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "carsome",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1247.7,
    "record_count": 20,
    "bytes": 113584,
    "cache_hit": false,
    "stop_reason": "complete",
    "charged_credits": 2,
    "version": "1.0.0",
    "request_id": "903ee7592df0452d",
    "queue_ms": 1.5,
    "fetched_at": "2026-10-07T15:52:08.529Z"
  },
  "data": {
    "rows": [
      {
        "car_no": "CWBW600",
        "car_id": 307516,
        "country": "my",
        "url": "https://www.carsome.my/buy-car/perodua/ativa/2021-perodua-ativa-x-1.0/cwbw600",
        "title": "2021 Perodua Ativa X 1.0",
        "make": "Perodua",
        "make_id": 157,
        "model": "Ativa",
        "model_id": 2971,
        "variant": "X",
        "year": 2021,
        "mileage_km": 94632,
        "engine_litres": "1.0",
        "transmission": "Automatic",
        "transmission_id": 2,
        "fuel": "Petrol",
        "color_id": 6,
        "color_en": "blue",
        "seats": "5",
        "car_age_years": 5,
        "vin": "PM2AA1AA00G008332",
        "license_plate": "CEF1717",
        "status": "Ready for Transaction",
        "availability": "Available",
        "stock_units": 1,
        "has_one_year_warranty": true,
        "tag": "NEW ARRIVAL",
        "highlights": [
          "Keyless Push Start",
          "ABS Brake",
          "SRS Airbag"
        ],
        "labels": [
          "Compact SUV"
        ],
        "campaigns": [
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "promo": "[trimmed-depth]",
            "ends_at": "[trimmed-depth]"
          },
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "promo": "[trimmed-depth]",
            "ends_at": "[trimmed-depth]"
          }
        ],
        "store": {
          "id": 42,
          "name": "CARSOME Showroom Kuching",
          "city": "Kuching",
          "city_id": "kuching",
          "state": "Sarawak",
          "state_id": "sarawak",
          "lat": 1.539351,
          "lon": 110.353031
        },
        "seller": {
          "type": "Carsome",
          "dealer_id": 658,
          "account_name": null
        },
        "currency": "MYR",
        "price_cash": 40700,
        "price_credit": 40700,
        "price_before_campaign": 48000,
        "campaign_discount": 7300,
        "credit_discount": null,
        "price_basis": 40700,
        "monthly_installment": 446,
        "vat_amount": 0,
        "price_cash_excl_vat": null,
        "monthly_installment_excl_vat": null,
        "loan": {
          "down_payment_rate": 0.1,
          "tenure_years": 9,
          "interest_rate": 0.035,
          "provider": "Bank"
        },
        "listing_programme": "CARSOME Certified",
        "color": "Blue",
        "listed_on": "2026-04-17",
        "image": "https://b2c-cdn.carsome.my/B2C/1e3dd8fa-9db9-4cb1-873c-0b03e473ebf3.JPG",
        "photos_count": 9
      },
      {
        "car_no": "CKX8800",
        "car_id": 369879,
        "country": "my",
        "url": "https://www.carsome.my/buy-car/perodua/aruz/2019-perodua-aruz-x-1.5/ckx8800",
        "title": "2019 Perodua Aruz X 1.5",
        "make": "Perodua",
        "make_id": 157,
        "model": "Aruz",
        "model_id": 2765,
        "variant": "X",
        "year": 2019,
        "mileage_km": 125926,
        "engine_litres": "1.5",
        "transmission": "Automatic",
        "transmission_id": 2,
        "fuel": "Petrol",
        "color_id": 3,
        "color_en": "gray",
        "seats": "7+",
        "car_age_years": 7,
        "vin": "PM2F850G002009942",
        "license_plate": "JTK1146",
        "status": "Ready for Transaction",
        "availability": "Available",
        "stock_units": 1,
        "has_one_year_warranty": true,
        "tag": "NEW ARRIVAL",
        "highlights": [
          "Keyless Push Start",
          "Android Player",
          "Reverse Camera"
        ],
        "labels": [
          "Family Drive"
        ],
        "campaigns": [
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "promo": "[trimmed-depth]",
            "ends_at": "[trimmed-depth]"
          }
        ],
        "store": {
          "id": 35,
          "name": "CARSOME Showroom Ipoh",
          "city": "Ipoh",
          "city_id": "ipoh",
          "state": "Perak",
          "state_id": "perak",
          "lat": 4.589981,
          "lon": 101.069782
        },
        "seller": {
          "type": "Carsome",
          "dealer_id": 658,
          "account_name": null
        },
        "currency": "MYR",
        "price_cash": 41900,
        "price_credit": 41900,
        "price_before_campaign": null,
        "campaign_discount": null,
        "credit_discount": null,
        "price_basis": 41900,
        "monthly_installment": 503,
        "vat_amount": 0,
        "price_cash_excl_vat": null,
        "monthly_installment_excl_vat": null,
        "loan": {
          "down_payment_rate": 0.1,
          "tenure_years": 8,
          "interest_rate": 0.035,
          "provider": "Bank"
        },
        "listing_programme": "CARSOME Certified",
        "color": "Gray",
        "listed_on": "2026-10-02",
        "image": "https://b2c-cdn.carsome.my/B2C/e63d35db-b9d5-4ff9-810b-f22711aee4d7.JPG",
        "photos_count": 10
      },
      {
        "car_no": "C916700",
        "car_id": 319945,
        "country": "my",
        "url": "https://www.carsome.my/buy-car/perodua/aruz/2019-perodua-aruz-av-1.5/c916700",
        "title": "2019 Perodua Aruz AV 1.5",
        "make": "Perodua",
        "make_id": 157,
        "model": "Aruz",
        "model_id": 2765,
        "variant": "AV",
        "year": 2019,
        "mileage_km": 141383,
        "engine_litres": "1.5",
        "transmission": "Automatic",
        "transmission_id": 2,
        "fuel": "Petrol",
        "color_id": 3,
        "color_en": "gray",
        "seats": "7+",
        "car_age_years": 7,
        "vin": "PM2F850G002028518",
        "license_plate": "VED4171",
        "status": "In Transaction",
        "availability": "Purchase Pending",
        "stock_units": 0,
        "has_one_year_warranty": true,
        "tag": "NEW ARRIVAL",
        "highlights": [
          "Dashcam",
          "Reverse Camera",
          "Touchscreen Audio Display"
        ],
        "labels": [
          "Family Drive"
        ],
        "campaigns": [],
        "store": {
          "id": 52,
          "name": "CARSOME Showroom Bukit Tinggi Klang",
          "city": "Klang",
          "city_id": "klang",
          "state": "Selangor",
          "state_id": "selangor",
          "lat": 2.989881,
          "lon": 101.448182
        },
        "seller": {
          "type": "Carsome",
          "dealer_id": 658,
          "account_name": null
        },
        "currency": "MYR",
        "price_cash": 46400,
        "price_credit": 42400,
        "price_before_campaign": null,
        "campaign_discount": null,
        "credit_discount": null,
        "price_basis": 42400,
        "monthly_installment": 557,
        "vat_amount": 0,
        "price_cash_excl_vat": null,
        "monthly_installment_excl_vat": null,
        "loan": {
          "down_payment_rate": 0.1,
          "tenure_years": 8,
          "interest_rate": 0.035,
          "provider": "Bank"
        },
        "listing_programme": "CARSOME Certified",
        "color": "Gray",
        "listed_on": "2026-05-25",
        "image": "https://b2c-cdn.carsome.my/B2C/5f1eae32-8211-4c4f-9b1f-69c680b942ab.JPG",
        "photos_count": 10
      }
    ],
    "summary": {
      "country": "my",
      "currency": "MYR",
      "total_results": 268,
      "page": 1,
      "page_size": 20,
      "last_page": 14,
      "has_more": true,
      "rows_returned": 20,
      "rows_without_id_dropped": 0,
      "filters_applied": {
        "make_id": [
          157
        ],
        "body_type": [
          "suv"
        ],
        "sort": "price_asc"
      },
      "facets": {
        "make_id": {
          "119": 10,
          "124": 8,
          "134": 214,
          "135": 1,
          "141": 4,
          "144": 5,
          "148": 58,
          "149": 7,
          "150": 1,
          "151": 3,
          "153": 5,
          "155": 16,
          "157": 268,
          "158": 7,
          "159": 273,
          "160": 2,
          "165": 1,
          "167": 18,
          "168": 3,
          "170": 52,
          "171": 5,
          "270": 3,
          "273": 15,
          "1395": 1,
          "1405": 1,
          "1615": 3
        },
        "model_id": {
          "1430": 2,
          "1431": 1,
          "1432": 1,
          "1500": 58,
          "1504": 119,
          "1523": 1,
          "1571": 2,
          "1573": 2,
          "1611": 33,
          "1629": 2,
          "1661": 3,
          "1710": 10,
          "1714": 8,
          "1717": 3,
          "1734": 4,
          "1735": 8,
          "1769": 5,
          "1831": 4,
          "1840": 2,
          "1913": 4,
          "1924": 1,
          "2077": 15,
          "2174": 2,
          "2198": 2,
          "2199": 1,
          "2252": 1,
          "2353": 10,
          "2354": 2,
          "2359": 1,
          "2534": 27,
          "2623": 3,
          "2669": 2,
          "2756": 82,
          "2765": 132,
          "2874": 4,
          "2884": 11,
          "2946": 173,
          "2971": 136,
          "2978": 35,
          "3207": 10,
          "3214": 3,
          "3215": 5,
          "3265": 3,
          "3290": 14,
          "3295": 15,
          "3299": 1,
          "3301": 2,
          "3302": 1,
          "3303": 2,
          "5057": 2,
          "5067": 1,
          "6487": 1,
          "6997": 1,
          "7097": 1,
          "7107": 2,
          "7187": 1,
          "8337": 1,
          "8377": 1,
          "9477": 3,
          "9777": 1,
          "10268": 1
        },
        "body_type": {
          "sedan": 247,
          "hatchback": 785,
          "mpv": 174,
          "suv": 268
        },
        "location": {
          "johor": 22,
          "kedah": 14,
          "kelantan": 10,
          "kuala-lumpur": 36,
          "melaka": 12,
          "negeri-sembilan": 8,
          "pahang": 12,
          "perak": 11,
          "pulau-pinang": 21,
          "putrajaya": 9,
          "sabah": 14,
          "sarawak": 8,
          "selangor": 87,
          "terengganu": 4
        }
      }
    }
  }
}
Actions

What the Carsome API does

ActionDescriptionConcrete use caseKey params
searchSearch Carsome's certified used-car stock in one country (my, id, th) by keyword, make, model, body type, location, gearbox, colour, price, monthly instalment, mileage and year, with ten sort orders. Returns the source's own total, facet counts and full rows with VIN, plate, every price (cash, credit, campaign, ex-VAT, monthly) and the showroom.Price-intelligence teams call search to search Carsome's certified used-car stock in one country (my, id, th) by keyword, make, model….country, query, make_id, model_id, body_type, ...
detailThe full record of one car by its `car_no` (or its listing URL): everything a search row has plus body type, registration date and type, road-tax / insurance / warranty expiry, booking fee, exterior and interior photo galleries, the showroom's address, phone and hours, and Carsome's inspection report with every checkpoint and its findings.Classifieds aggregators call detail to get the full record of one car by its `car_no` (or its listing URL).car_no, country, url
makesEvery make Carsome has in stock in one country right now, with its models and the numeric ids that `search` takes.Resale and arbitrage tools call makes to get every make Carsome has in stock in one country right now, with its models and the numeric ids….country
filtersThe country's live filter vocabulary: location ids (states, cities or districts), body types, colours, gearboxes, sort orders and the current price, monthly, year and mileage bounds of the stock, plus running campaigns.Lead-generation teams call filters to get the country's live filter vocabulary.country
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/carsome/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"country":"my","make_id":[157],"body_type":"suv","sort":"price_asc","page_size":20}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.carsome.search with {"country":"my","make_id":[157],"body_type":"suv","sort":"price_asc","page_size":20}.
Use cases

Who uses this API and why

  • Used-car dealers and traders in Malaysia, Indonesia and Thailand call search per make and model to benchmark their own asking prices against Carsome's certified stock.
  • Lenders and insurers read price_cash, price_credit, monthly_installment and the loan terms to compare Carsome's financing offer with their own products.
  • Residual-value and remarketing analysts pull year, mileage and price for a model across all three countries to build depreciation curves from live stock.
  • Vehicle-history and fraud tools match the VIN and number plate on each row against their own records.
  • Buyer apps call detail to show the inspection report, every photo and the showroom's address and hours inside their own interface.
FAQ

Questions developers ask before integrating

Which countries does the Carsome API cover?

Malaysia, Indonesia and Thailand - the three markets where Carsome sells its own certified stock on carsome.my, carsome.id and carsome.co.th. Pass country my, id or th on every call. On 2026-10-07 the three held 3,647, 229 and 559 cars.

Why are there several prices on each car?

Because Carsome publishes several, and the same word means different things per site. In Indonesia the listing page prints a cash price and a credit price that is lower when you finance through Carsome (Rp 226,000,000 cash and Rp 220,000,000 credit on one Honda BR-V). In Malaysia almost every car carries a campaign price below its regular price. In Thailand the page prints the price without VAT. The API returns price_cash, price_credit, price_before_campaign, campaign_discount, credit_discount, monthly_installment and the ex-VAT figures separately, and on 18 cars checked against their listing pages every one of those numbers matched what Carsome printed.

Does it return the VIN and the number plate?

Yes. Carsome publishes both for its stock, and they were present on every row measured: 600 of 600, the first 200 cars of each country.

What is in the inspection report?

Every checkpoint Carsome inspected, grouped into sections such as road test, exterior, interior and undercarriage - 191 points on the Malaysian cars measured and 175 on the Indonesian and Thai ones. Each point has a status (passed, issue, na or not_reported), the finding tags Carsome attached (for example Scratched, Dented, Repaint) and the inspector's remark. Thai reports carry the checkpoint list but no per-point result, so those points come back as not_reported rather than being read as failures.

How many results can one search return?

Up to 50 rows per page, and you can page through the whole result: Carsome reports an exact total, a page past the last one comes back empty instead of repeating, and every response returns total_results, last_page and has_more. The largest market, Malaysia, is 73 pages of 50.

Do the filters really filter?

Each one was checked against an unfiltered search in the same run. In Malaysia, out of 3,647 cars: make Perodua 1,475, model Myvi 495, SUV 984, Selangor 1,205, RM 30,000-50,000 1,320, mileage up to 50,000 km 687, model years 2022-2024 1,263, manual gearbox 5, black 282, keyword myvi 495. Filters Carsome accepts but does not apply - seat count and dealer type - are not offered.

How do I get one car's full record?

Take the car_no from a search row (for example C7KZ700) and call detail with it and the country, or pass the listing URL instead. A car that has been sold or withdrawn returns NOT_FOUND. On 18 cars the detail record matched its search row on make, model, year, mileage, VIN, plate and every price.

What does Carsome not publish?

Engine power, the number of previous owners and a service-record history are not on these pages, so they are not in the response. Body type is on the detail record only - search rows do not carry it, although the body_type filter works. The monthly sort is Carsome's own and is approximate: on 50 rows sorted by lowest instalment, 4 neighbours were out of order on the published figure.

What is the Carsome API?

Carsome API is a ReefAPI endpoint group for certified used cars in malaysia, indonesia and thailand: vin, plate, cash, credit and monthly prices, showroom and the full inspection report. It returns live JSON through POST requests under /carsome/v1.

Is the Carsome API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Carsome calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Carsome login or account?

No login to Carsome 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 Carsome 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 Carsome API use?

Carsome actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Carsome from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call carsome actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / carsome

Carsome

Certified used cars in Malaysia, Indonesia and Thailand: VIN, plate, cash, credit and monthly prices, showroom and the full inspection report.

base /carsome/v14 endpoints
post/carsome/v1/detail2 credits

The full record of one car by its `car_no` (or its listing URL): everything a search row has plus body type, registration date and type, road-tax / insurance / warranty expiry, booking fee, exterior and interior photo galleries, the showroom's address, phone and hours, and Carsome's inspection report with every checkpoint and its findings.

ParameterAllowed / rangeDescription
car_norequired—Carsome car number from a search row (`car_no`), e.g. C7KZ700. Case-insensitive. Requires `country`, unless `url` is given instead.
countryoptionalmy · id · thMarket of the car: my, id or th. Required with `car_no`.
urloptional—Alternative to car_no + country: the listing URL, e.g. https://www.carsome.my/buy-car/perodua/aruz/2022-perodua-aruz-av-1.5/c7kz700.
Try in playground →
post/carsome/v1/makes1 credit

Every make Carsome has in stock in one country right now, with its models and the numeric ids that `search` takes.

ParameterAllowed / rangeDescription
countryrequiredmy · id · thWhich Carsome market: `my` = Malaysia (carsome.my, MYR), `id` = Indonesia (carsome.id, IDR), `th` = Thailand (carsome.co.th, THB).
Try in playground →
post/carsome/v1/filters1 credit

The country's live filter vocabulary: location ids (states, cities or districts), body types, colours, gearboxes, sort orders and the current price, monthly, year and mileage bounds of the stock, plus running campaigns.

ParameterAllowed / rangeDescription
countryrequiredmy · id · thWhich Carsome market: `my` = Malaysia (carsome.my, MYR), `id` = Indonesia (carsome.id, IDR), `th` = Thailand (carsome.co.th, THB).
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.