Chotot Scraper — Vietnam Marketplace Ads, Prices & Sellers avatar

Chotot Scraper — Vietnam Marketplace Ads, Prices & Sellers

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Chotot Scraper — Vietnam Marketplace Ads, Prices & Sellers

Chotot Scraper — Vietnam Marketplace Ads, Prices & Sellers

Scrape Chợ Tốt, Vietnam's biggest classifieds site, by keyword, category or region. Extract price, area, location, GPS, seller name and rating from property, vehicle and electronics ads. No API key, no login.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Chợ Tốt Scraper — Vietnam Marketplace Listings, Prices & Sellers

Turn Vietnam's largest classifieds site into a clean, structured dataset: property, vehicles, electronics and every other Chợ Tốt category, with price, area, GPS coordinates and seller reputation on every row.

What does the Chợ Tốt Scraper do?

This Actor collects live listings from Chợ Tốt (chotot.com), the marketplace where most of Vietnam buys and sells. Instead of driving a browser over rendered pages, it reads the same public JSON gateway the site's own front end calls, which is why one request returns fifty complete records and why a redesign of the site cannot silently empty your dataset.

You choose a category — real estate, vehicles, electronics, home goods, fashion, pets and more — plus an optional keyword, region and sale-versus-rental filter. The Actor then walks the result list page by page, de-duplicates by listing id, and pushes a flat row per ad: title, full description, price in VND, area in square metres, ward, district, province, latitude, longitude, posting time, seller name, seller rating and image URLs. No API key, no login, no cookies.

Who is it for?

  • Property analysts and real-estate investors tracking asking prices and listing volume across Ho Chi Minh City, Hanoi and the provinces.
  • Car and motorbike dealers monitoring what competitors list, at what price, and how quickly stock turns over.
  • E-commerce and pricing teams benchmarking second-hand electronics prices against retail.
  • Market researchers and journalists measuring supply, demand and price movement in a market with little open data.
  • Lead-generation teams building lists of active business sellers with their reputation signals.

Use cases

  • Track the asking price per square metre for apartments in a specific district, week over week.
  • Build a rental dataset for Ho Chi Minh City — Chợ Tốt rentals quote a monthly price, so the rows are directly comparable.
  • Watch a used-car model's price curve by pulling the vehicles category and filtering on the title.
  • Find every business seller ("company ad") in a category and rank them by live-ad count and rating.
  • Feed an AI agent a fresh snapshot of a category so it can answer "what's the going rate for X in Da Nang?".

Why use this Chợ Tốt Scraper?

  • Keyless and login-free — nothing to register, nothing to rotate, no account to get banned.
  • 41 fields per listing, including GPS coordinates and seller reputation that most scrapers drop.
  • Bulk by design — 50 listings per request and up to 10,000 per filter; run several regions or categories to go wider.
  • Every vertical in one Actor — the same run shape works for flats, motorbikes, iPhones or puppies.
  • Sale and rental separated correctly — rental prices are per month on Chợ Tốt, and the Actor labels them as such instead of mixing them into sale prices.
  • Export anywhere — JSON, CSV, Excel, or straight into Google Sheets, and pay only per result.

What data can you extract?

Every row is one listing. Fields left blank by the seller come back as null rather than an empty string, so a missing value is never confused with a zero.

FieldTypeDescription
listingIdstringChợ Tốt's own ad id
titlestringAd headline
descriptionstringFull ad body text
urlstringDirect link to the listing
pricenumberPrice in VND (monthly for rentals)
priceTextstringPrice exactly as displayed, e.g. "4,8 tỷ"
pricePerSqmMillionVndnumberPrice per m² in millions of VND, where the site computes it
currencystringAlways VND when a price is quoted
categoryIdstringNumeric category id
categoryNamestringCategory name in Vietnamese, e.g. "Căn hộ/Chung cư"
adTypestringfor sale or for rent
areaSqmnumberFloor or land area in m²
areaUnitstringUnit the area was quoted in
roomsnumberRoom count, where the seller filled it in
floorsnumberNumber of floors
lengthMeters / widthMetersnumberPlot dimensions for land and houses
houseTypeCodestringChợ Tốt's house-type code
legalDocumentCodestringOwnership-paper code (red book, pink book, etc.)
isMainStreetbooleanWhether the property fronts a main street
streetNamestringStreet
wardNamestringWard (phường/xã)
districtNamestringDistrict (quận/huyện)
regionNamestringProvince or city
latitude / longitudenumberGPS coordinates
postedAtstringISO 8601 posting timestamp
postedTextstringRelative time as shown, e.g. "6 phút trước"
sellerIdstringSeller account id
sellerNamestringSeller display name
sellerIsCompanybooleanBusiness seller flag
sellerAvatarUrlstringSeller avatar image
sellerLiveAdsnumberHow many ads the seller currently has live
sellerSoldAdsnumberHow many the seller has sold
sellerRatingnumberAverage rating
sellerRatingCountnumberNumber of ratings
shopNamestringShop name for storefront sellers
imageUrlstringMain photo
imageCountnumberNumber of photos
imagesstringUp to 20 photo URLs, pipe-separated
hasVideobooleanWhether the ad includes video
scrapedAtstringISO 8601 collection timestamp

Sample output

{
"listingId": "134125447",
"title": "Giỏ hàng đẹp Trellia Cove - Mizuki 77m2 2PN 2WC trực tiếp CĐT",
"description": "Căn hộ 2 phòng ngủ, view nội khu, bàn giao nội thất cơ bản...",
"url": "https://www.chotot.com/134125447.htm",
"price": 4800000000,
"priceText": "4,8 tỷ",
"pricePerSqmMillionVnd": 62.3,
"currency": "VND",
"categoryId": "1010",
"categoryName": "Căn hộ/Chung cư",
"adType": "for sale",
"areaSqm": 77,
"areaUnit": "m²",
"rooms": 2,
"streetName": "Nguyễn Văn Linh",
"wardName": "Xã Bình Hưng",
"districtName": "Huyện Bình Chánh",
"regionName": "Tp Hồ Chí Minh",
"latitude": 10.7211,
"longitude": 106.6702,
"postedAt": "2026-08-13T17:13:19.000Z",
"sellerName": "PKD CĐT Nam Long",
"sellerIsCompany": true,
"sellerLiveAds": 4,
"sellerSoldAds": 3,
"imageCount": 8,
"hasVideo": false,
"scrapedAt": "2026-08-13T17:14:02.118Z"
}

How to use the Chợ Tốt Scraper

Option A — browse a whole category

Pick a category and let the Actor walk it newest-first. This is the right shape for monitoring: run it on a schedule and every new ad shows up at the top.

{
"category": "1010",
"region": "13000",
"adType": "s",
"sortBy": "date",
"maxResults": 1000,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "VN" }
}
  1. Choose Category — for example Real estate — apartments.
  2. Choose a Region, or leave it nationwide.
  3. Set Ad type to For sale or For rent if you want them separated.
  4. Set Max results and run.

Option B — search by keyword

Search exactly as you would on the site. The keyword works across every category, so pair it with a broad category when you want reach and a narrow one when you want precision.

{
"keyword": "Toyota Vios",
"category": "2000",
"sortBy": "date",
"maxResults": 500,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "VN" }
}

Input parameters

ParameterTypeDefaultDescription
keywordstringFree-text search term. Leave empty to browse the category.
categorystring1000Category to crawl (real estate, vehicles, electronics, …).
categoryIdstringRaw category id, overrides the dropdown. Use for sub-categories such as 2010 (cars) or 2020 (motorbikes).
regionstring""Province or region; empty means nationwide.
adTypestring""s for sale, u for rent, empty for both.
sortBystringdatedate (newest first) or relevance.
maxResultsinteger500How many listings to collect.
proxyConfigurationobjectResidential / VNChợ Tốt answers reliably from Vietnamese IPs.

Tips for best results

  • Newest-first plus a schedule beats one huge run. Chợ Tốt caps a single filter at about 10,000 ads; a daily run sorted by date keeps a complete rolling history without ever hitting the ceiling.
  • Split by region to go past the cap. Thirteen regions × 10,000 is a lot more coverage than one nationwide run.
  • Use categoryId for precision. The dropdown covers the big verticals; sub-category ids from the site's own URLs get you exactly one product type.
  • Rental prices are monthly. Filter adType to u before comparing rents, or you will average a monthly rent against a sale price.
  • Keep the Vietnam proxy country. The gateway is served from Vietnam and non-local exits are throttled harder.
  • sellerIsCompany separates dealers from private sellers — useful both for lead lists and for cleaning price analyses.
  • pricePerSqmMillionVnd is the site's own computation, so it matches what buyers see; derive your own from price and areaSqm if you need a different basis.
  • Deduplicate across runs on listingId, not on URL: sellers sometimes repost with a new slug.
  • Empty result? Widen the category first, then drop the keyword — a very specific Vietnamese phrase can legitimately match nothing.

Integrations

Connect the Actor to the rest of your stack from the Apify platform:

  • Google Sheets — push each run's dataset straight into a sheet for non-technical colleagues.
  • Slack — post a message when a run finds new listings.
  • Zapier / Make — trigger downstream automations on run completion.
  • Webhooks — call your own endpoint with the dataset id the moment a run succeeds.
  • Schedules — run hourly or daily; combined with newest-first sorting this gives you a change feed.

API usage

Run the Actor and collect its dataset from anywhere.

cURL

curl -X POST "https://api.apify.com/v2/acts/logiover~chotot-vn-marketplace-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"category":"1010","region":"13000","maxResults":200}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/chotot-vn-marketplace-scraper').call({
category: '1010',
region: '13000',
adType: 's',
maxResults: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'listings');

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/chotot-vn-marketplace-scraper").call(run_input={
"keyword": "Toyota Vios",
"category": "2000",
"maxResults": 500,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["price"])

Use with AI agents (MCP)

This Actor works as a tool for AI agents through Apify's MCP server, so an assistant can pull live Vietnamese marketplace data mid-conversation instead of guessing from stale training data. Point your MCP client at https://mcp.apify.com and expose this Actor, then ask questions in plain language.

"Use the Chợ Tốt scraper to collect 200 apartment listings for sale in Ho Chi Minh City, then tell me the median price per square metre by district."

FAQ

Do I need a Chợ Tốt account or API key?

No. The Actor reads public listing data through the site's own public gateway. There is nothing to register and no credential to store.

Which categories are supported?

All of them. The dropdown covers real estate (all, apartments, houses, land, rooms), vehicles, electronics, appliances, home and furniture, fashion, entertainment, food, office and agriculture, mother and baby, pets, and services. Any sub-category id from the site's own URLs works through the categoryId field.

How many listings can one run return?

Chợ Tốt exposes roughly 10,000 ads per filter combination. Within that, set maxResults to whatever you need. To go beyond it, split the crawl by region, by sub-category, or by keyword.

Why did my run return zero rows?

Almost always an over-narrow filter: a rare keyword combined with a specific region and a sub-category can genuinely match nothing. Clear the keyword first, then widen the category. The log states the number of matches Chợ Tốt reports for your filter, which tells you immediately whether the filter or the crawl is the problem.

Why are some fields null?

Because the seller left them blank. Room counts, plot dimensions and legal-document codes are optional on Chợ Tốt and are common on property ads but absent on electronics. A null means "not published", never "zero".

Are rental prices monthly?

Yes. Chợ Tốt quotes rentals per month ("triệu/tháng") and sale prices as a total. The adType field tells you which one a row is, so filter on it before averaging.

How fresh is the data?

Every run fetches live pages. With sortBy set to newest first, the first page contains ads posted minutes ago — postedAt and postedText let you verify freshness on every row.

Can I export to CSV or Excel?

Yes. Every dataset can be downloaded as JSON, CSV, Excel, XML or RSS from the run's Storage tab, or fetched through the API in any of those formats.

How fast is it?

Roughly 50 listings per request with a short pause between pages to stay polite. A 500-row run typically finishes in well under a minute.

The Actor collects only publicly visible listing information — the same data any visitor sees without logging in. It does not touch private messages, accounts or anything behind authentication. See the legal note below.

How often is the Actor updated?

It is monitored and maintained. Because it reads a structured JSON source rather than CSS selectors, it survives visual redesigns that break card-parsing scrapers.

Can I get seller phone numbers?

No. Chợ Tốt keeps phone numbers behind a session-gated reveal, so they are not part of the public listing payload and this Actor does not attempt to extract them. You get the seller's name, id, reputation and shop link.

This Actor collects publicly available information only — listings that Chợ Tốt publishes openly to every visitor, with no login and no paywall. Scraping public data is broadly lawful in most jurisdictions, but you remain responsible for how you use what you collect.

Review Chợ Tốt's Terms of Service before running large-scale or commercial collection, and take care with personal data. Seller display names may constitute personal data under Vietnam's PDPD, the GDPR or similar regimes; make sure you have a lawful basis before storing or processing them. If in doubt, consult a lawyer — this is not legal advice.