Chợ Tốt
Chợ Tốt
/chotot/v1/search1 creditSearch Chợ Tốt listings by keyword and/or category, narrowed by province, district, ward, price range, sale-vs-rent and seller type, sorted by date, price or relevance. Works across every vertical — second-hand goods, vehicles and property — and returns up to 50 rows a page with the price both as an integer in đồng and as the string the site prints, plus that vertical's own attribute rows.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| q | optional | — | Free-text keyword, Vietnamese or English ('iphone', 'xe máy honda', 'căn hộ quận 7'). Optional: leave it out and pass `category` to browse a whole section. At least one of `q` or `category` is required. |
| category | optional | — | Chợ Tốt category id — a top-level group (1000 property, 2000 vehicles, 5000 electronics…) or a leaf (5010 mobile phones, 1020 houses, 2010 cars, 2020 motorbikes). Call the `categories` action for the full live tree. |
| region | optional | — | Province/city id (13000 = TP Hồ Chí Minh, 12000 = Hà Nội). The `regions` action lists all 63 with their districts. |
| area | optional | — | District id inside the chosen region (13096 = Quận 1). Take it from the `regions` action; pass `region` with it. |
| ward | optional | — | Ward id — the narrowest level below a district, when you have one from a listing's own ward. |
| price_min | optional | 0– | Lowest price in Vietnamese đồng (1000000 = 1.000.000 đ ≈ 1 triệu). Property prices run into the tỷ (10^9). |
| price_max | optional | 0– | Highest price in Vietnamese đồng. |
| ad_type | optional | sell · rent | Sale listings or rental listings. Only meaningful in categories that have both (property, some services); each returned row echoes its own `ad_type`. |
| seller_type | optional | private · pro | Restrict to private individuals or to professional sellers/shops. |
| sort | optional | newest · relevance · price_asc · price_desc | Result ordering. Defaults to relevance when `q` is given, newest otherwise — exactly like the site. |
| limit = 20 | optional | 1–50 | Rows per page, 1-50. Chợ Tốt itself refuses more than 50. |
| page = 1 | optional | 1– | 1-based page number. Page forward with meta.next_page. Chợ Tốt is a live feed: under relevance ordering consecutive pages repeat about one row in twenty, and more the longer you wait between calls. Sort by `newest` when you are walking every page and want them disjoint. |
| offset | optional | 0– | Row offset, if you would rather skip a precise number of rows than count pages. Overrides `page` when given. |
/chotot/v1/detail1 creditOne listing in full by `ad_id` (or by its chotot.com address): title, body text, price in đồng plus the printed price string, category, province/district/ward, posting time, the whole image gallery, the public seller profile, and the complete attribute set for that vertical — capacity and warranty for a phone, rooms and direction for a house, year, mileage, fuel and gearbox for a car.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| ad_id | optional | — | Chợ Tốt ad id — the `ad_id` of a search result. This is NOT the number in the listing's web address; pass that one as `url` instead. |
| url | optional | — | Full chotot.com listing address. The number in the address is the `list_id`, which the engine resolves to the `ad_id` for you (one extra lookup). Use `ad_id` directly when you already have it. |
/chotot/v1/categories1 creditThe live Chợ Tốt category tree — 14 top-level groups (property, vehicles, electronics, home & living, jobs, pets, services…) with their leaf categories and the ad types each one supports. Use it to get the `category` id that `search` needs.
Try in playground →/chotot/v1/regions1 creditThe live Vietnamese province/city list (63 entries) with every district inside each one. Use it to get the `region` and `area` ids that `search` filters on.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| region | optional | — | Return only this province/city and its districts. Omit for all 63. |
curl -X POST https://api.reefapi.com/chotot/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"q":"iphone","category":5010}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}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.
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.
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.
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.