# 🇻🇳 Chotot Vietnam Marketplace Scraper (`hipersoft/chotot-scraper`) Actor

Scrape Chotot.com, Vietnam's largest classifieds marketplace — cars, motorbikes, property, phones, electronics and jobs. Export one clean row per ad: title, price in VND, location, seller, rating, images and the listing URL as JSON, CSV or Excel.

- **URL**: https://apify.com/hipersoft/chotot-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0015 / listing scraped

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🇻🇳 Chotot Vietnam Marketplace Scraper

Scrape **listings from Chotot.com**, Vietnam's largest classifieds marketplace, as clean, structured **JSON, CSV, Excel or XML**. Search any keyword or paste any Chotot.com URL — **cars, motorbikes, real estate, phones, electronics, home, fashion, jobs** and every other category — and get one tidy row per ad: **title, price in VND (Vietnamese Dong), seller, region, district, category, images** and the ad's **listing URL**. Ideal for market research, price monitoring, comparables, and lead generation across Vietnam.

### What does the Chotot Scraper do?

This actor turns Chotot.com searches and category pages into a ready-to-use dataset. Type one or more keywords (for example `iphone`, `toyota`, `macbook`) or paste a Chotot.com URL straight from your browser, and it walks every result page and collects each ad with structured fields. It works across **every category** — vehicles, property, electronics, phones, fashion, home and living, jobs and services — with no configuration.

### What data can you get?

**Per ad:**

| Field | Description |
| --- | --- |
| `list_id` | Chotot internal listing id. |
| `adId` | Chotot internal ad id. |
| `title` | Ad title, as posted. |
| `description` | Ad description, when present. |
| `price` | Price as a number. |
| `priceText` | Price formatted as shown on Chotot (e.g. `11.800.000 đ`). |
| `currency` | Currency code (VND / Vietnamese Dong). |
| `areaName` | District the ad is posted in (e.g. Quận Cầu Giấy). |
| `regionName` | Province or city the ad is posted in (e.g. Hà Nội, Hồ Chí Minh). |
| `category` | Category the ad belongs to. |
| `seller` | Seller or shop name. |
| `rating` | Seller's average rating, when available. |
| `imageUrl` | Main image URL. |
| `images` | All image URLs for the ad. |
| `postedDate` | When the ad was posted, as shown on Chotot. |
| `url` | Link to the ad's page. |
| `sourceUrl` | The search or category URL the ad was collected from. |
| `collectedAt` | Timestamp when the row was collected. |

### Use cases

- **Market research** — map prices, models and stock across categories and Vietnamese provinces.
- **Price monitoring** — track asking prices and new ads over time.
- **Comparables & valuation** — pull comparable ads by category and price band.
- **Lead generation** — build lists of sellers and shops for outreach.
- **Dashboards** — power reports and dashboards from clean, structured rows.
- **Automation** — feed fresh Vietnam marketplace data into your own pipelines on a schedule.

### How to use it

1. Add **Chotot Vietnam Marketplace Scraper** to your Apify account and open its input.
2. Enter one or more **Search keywords**, or paste **Start URLs** — Chotot.com search or category pages copied from your browser (e.g. `https://www.chotot.com/mua-ban-oto` for cars).
3. Set **Max items** to cap the output.
4. Click **Run**.
5. Export the results as JSON, CSV, Excel or XML.

### Input

```json
{
  "queries": ["iphone"],
  "maxItems": 100
}
```

| Field | Description |
| --- | --- |
| `queries` | One or more keywords to search on Chotot. |
| `startUrls` | Optional. One or more Chotot.com search or category page URLs to scrape. |
| `maxItems` | Cap the number of ads. `0` = no limit. |
| `maxConcurrency` | How many requests to run in parallel. |

### What you get

One flat JSON row per ad, ready to export to CSV, Excel, JSON or XML.

```json
{
  "list_id": "119743417",
  "adId": "178571029",
  "title": "iPhone 17 Pro iPhone 16 Pro Max iPhone 15 Pro Max",
  "description": "Máy đẹp, full chức năng, bảo hành 12 tháng.",
  "price": 11800000,
  "priceText": "11.800.000 đ",
  "currency": "VND",
  "areaName": "Quận Cầu Giấy",
  "regionName": "Hà Nội",
  "category": "Điện thoại",
  "seller": "Táo Xanh Store",
  "rating": 4.8,
  "imageUrl": "https://cdn.chotot.com/preset:listing/plain/example.jpg",
  "images": ["https://cdn.chotot.com/preset:view/plain/example.jpg"],
  "postedDate": "19 giờ trước",
  "url": "https://www.chotot.com/119743417.htm",
  "sourceUrl": "https://www.chotot.com/mua-ban-dien-thoai?q=iphone",
  "collectedAt": "2026-09-05T09:00:00.000Z"
}
```

### FAQ

**Which categories are covered?**
Any category on Chotot — cars, motorbikes, real estate, electronics, phones, home and living, fashion, jobs and services, and more. Just search a keyword or paste the category URL from your browser.

**In what currency are prices returned?**
Prices are returned as a number with the `VND` (Vietnamese Dong) currency code, plus a formatted `priceText` matching what Chotot displays. Ads posted without a price return an empty price.

**How many results can I get?**
Set **Max items** to any cap you like, or `0` for no limit — the actor follows the pagination of each search automatically.

**What export formats are supported?**
JSON, CSV, Excel and XML — plus the Apify API and integrations for automation.

# Actor input Schema

## `queries` (type: `array`):

One or more keywords to search on Chotot — for example 'iphone', 'toyota' or 'macbook'. Each keyword runs its own search and the results are combined. Leave Start URLs empty to use this.

## `startUrls` (type: `array`):

Optional. One or more Chotot.com category or search page URLs to scrape. Paste the URL straight from your browser (e.g. https://www.chotot.com/mua-ban-oto for cars, or https://www.chotot.com/mua-ban-dien-thoai?q=iphone). When set, these are scraped in addition to any keywords. Pagination is followed automatically.

## `maxItems` (type: `integer`):

Maximum number of ads to collect across all searches (0 = no limit; collect everything the searches return).

## `maxConcurrency` (type: `integer`):

How many requests to run in parallel. Leave at the default unless you have a reason to change it.

## `proxyConfiguration` (type: `object`):

Proxy settings. Not required by default. If you experience reduced results, enable Apify Residential proxy for the most reliable access.

## Actor input object example

```json
{
  "queries": [
    "iphone"
  ],
  "maxItems": 100,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "iphone"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/chotot-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": ["iphone"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/chotot-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "iphone"
  ]
}' |
apify call hipersoft/chotot-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/chotot-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/69AuLBNu1H8vC7cNS/builds/zqLdJ77wfa9MurvT6/openapi.json
