# Tiki.vn Scraper - Vietnam E-Commerce Products & Prices (`logiover/tiki-vn-scraper`) Actor

Scrape Tiki.vn products via REST API. Extract prices, discounts, ratings, reviews, seller info, brands. Parallel scraping, filters, deduplication. Ultra-cheap datacenter proxies. No browser needed.

- **URL**: https://apify.com/logiover/tiki-vn-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Tiki.vn Product Scraper

Scrape product listings from **Tiki.vn** — Vietnam's leading e-commerce platform with 50M+ monthly visitors. Extract structured product data including prices, ratings, reviews, seller information, discounts, brands, and more.

### What is Tiki.vn?

Tiki is one of Vietnam's "Big 4" e-commerce platforms (alongside Shopee, Lazada, Sendo). Founded in 2010, Tiki is known for fast delivery (TikiNOW 2-hour delivery), authentic products, and a strong focus on books, electronics, and household goods. It hosts thousands of official brand stores including Samsung, Apple, Sony, LG, Unilever, P&G, and more.

### Why scrape Tiki.vn?

- **Vietnam Market Research**: Track pricing trends in Vietnam's fast-growing e-commerce market
- **Competitor Analysis**: Monitor competitor pricing, discounts, and seller strategies
- **Price Monitoring**: Automated price tracking across product categories
- **E-commerce Analytics**: Analyze ratings, reviews, and sales volume
- **Brand Monitoring**: Track official vs third-party seller pricing
- **Product Sourcing**: Discover trending products and suppliers
- **Academic Research**: Study Vietnamese e-commerce dynamics

### Features

- **Fast HTTP-only scraping** — no browser required, extremely cheap to run
- **REST API** — direct access to Tiki's product search API
- **Parallel processing** — scrape multiple queries simultaneously
- **Smart deduplication** — removes duplicate products across queries
- **All filters** — price range, sort order (relevance, price, newest, best seller)
- **Rich data** — 23+ fields per product including seller, brand, badges
- **Datacenter proxies work** — no need for expensive residential proxies
- **Auto-retry with backoff** — handles rate limits gracefully

### Output Data Fields

| Field | Example |
|-------|---------|
| Product ID | `87619253` |
| Name | `Laptop ASUS ROG Strix G16 G614JV` |
| Price | `32990000` |
| Original Price | `39990000` |
| Discount Rate | `18` |
| Rating | `4.8` |
| Review Count | `342` |
| Quantity Sold | `1200` |
| Brand | `ASUS` |
| Seller | `Tiki Trading` |
| Category | `Laptop` |
| Official Seller | `true` |

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `queries` | string[] | Required | Search keywords |
| `maxPages` | integer | `5` | Max pages per query (48 products/page) |
| `maxProductsTotal` | integer | `0` | Global limit (0 = unlimited) |
| `sortBy` | string | `default` | default, top_seller, newest, price,asc, price,desc |
| `priceMin` | integer | `0` | Min price in VND |
| `priceMax` | integer | `0` | Max price in VND |
| `maxConcurrency` | integer | `3` | Parallel requests |

### Example Input

```json
{
    "queries": ["laptop", "tai nghe bluetooth", "samsung galaxy"],
    "maxPages": 10,
    "sortBy": "top_seller",
    "maxConcurrency": 3,
    "proxyConfig": {
        "useApifyProxy": true
    }
}
````

### Cost Estimates

| Products | Est. Time | Est. Cost |
|----------|-----------|-----------|
| 480 | ~30 sec | ~$0.01 |
| 4,800 | ~3 min | ~$0.05 |
| 48,000 | ~20 min | ~$0.30 |
| 480,000 | ~3 hrs | ~$2.50 |

### Popular Search Queries

**Electronics**: `laptop`, `điện thoại`, `tai nghe`, `samsung galaxy`, `iphone`, `máy tính bảng`, `smartwatch`, `loa bluetooth`

**Home & Living**: `máy giặt`, `tủ lạnh`, `máy lọc không khí`, `nồi cơm điện`, `robot hút bụi`, `máy xay sinh tố`

**Books**: `sách tiếng anh`, `sách thiếu nhi`, `manga`, `sách self-help`, `sách kinh doanh`

**Fashion**: `áo thun nam`, `giày nike`, `túi xách nữ`, `đồng hồ`, `kính mát`

**Beauty**: `kem chống nắng`, `serum`, `son môi`, `nước hoa`, `sữa rửa mặt`

### Top Brands on Tiki

Samsung, Apple, Sony, LG, Panasonic, Xiaomi, ASUS, Dell, HP, Lenovo, Unilever, P\&G, L'Oréal, Nike, Adidas, The North Face

### Tips

1. **Vietnamese keywords get more results** — Tiki is a Vietnamese platform
2. **Datacenter proxies work fine** — no need for residential proxies (saves money!)
3. **Start with 2-3 pages** for testing, then scale up
4. **Use `top_seller` sort** to get most popular products first
5. **Multiple queries** — split broad searches into specific keywords

### FAQ

**Q: Do I need residential proxies?**
A: No! Tiki's API is accessible with standard datacenter proxies, making this scraper extremely cheap to run.

**Q: How many products per page?**
A: 48 products per page. With `maxPages=200`, up to 9,600 products per query.

**Q: What currency are prices in?**
A: Vietnamese Dong (VND). Divide by ~25,000 for approximate USD value.

**Q: Is this fast?**
A: Very fast — HTTP-only with no browser overhead. ~48 products/second with concurrent requests.

### Legal Disclaimer

This scraper is provided for educational and research purposes. Users are responsible for compliance with Tiki.vn's Terms of Service and applicable laws.

# Actor input Schema

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

List of search keywords to scrape. Each keyword will be searched separately.

## `maxPages` (type: `integer`):

Maximum number of result pages per query. Each page returns up to 48 products.

## `maxProductsTotal` (type: `integer`):

Global limit on total products across all queries. 0 = unlimited.

## `sortBy` (type: `string`):

Sort order for results.

## `priceMin` (type: `integer`):

Filter products with price >= this value. 0 = no minimum.

## `priceMax` (type: `integer`):

Filter products with price <= this value. 0 = no maximum.

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

Number of parallel requests.

## `proxyConfig` (type: `object`):

Apify proxy configuration. Datacenter proxies should work fine for Tiki.

## Actor input object example

```json
{
  "queries": [
    "samsung galaxy",
    "máy giặt",
    "tai nghe bluetooth"
  ],
  "maxPages": 5,
  "maxProductsTotal": 0,
  "sortBy": "default",
  "priceMin": 0,
  "priceMax": 0,
  "maxConcurrency": 3,
  "proxyConfig": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `productId` (type: `string`):

No description

## `sku` (type: `string`):

No description

## `name` (type: `string`):

No description

## `price` (type: `string`):

No description

## `originalPrice` (type: `string`):

No description

## `discount` (type: `string`):

No description

## `discountRate` (type: `string`):

No description

## `ratingAverage` (type: `string`):

No description

## `reviewCount` (type: `string`):

No description

## `quantitySold` (type: `string`):

No description

## `thumbnailUrl` (type: `string`):

No description

## `productUrl` (type: `string`):

No description

## `categoryId` (type: `string`):

No description

## `categoryName` (type: `string`):

No description

## `brandName` (type: `string`):

No description

## `sellerId` (type: `string`):

No description

## `sellerName` (type: `string`):

No description

## `sellerIsOfficial` (type: `string`):

No description

## `inventoryStatus` (type: `string`):

No description

## `badges` (type: `string`):

No description

## `deliveryInfo` (type: `string`):

No description

## `searchQuery` (type: `string`):

No description

## `pageNumber` (type: `string`):

No description

## `scrapedAt` (type: `string`):

No description

# 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": [
        "laptop",
        "iphone"
    ],
    "proxyConfig": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/tiki-vn-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": [
        "laptop",
        "iphone",
    ],
    "proxyConfig": { "useApifyProxy": True },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "laptop",
    "iphone"
  ],
  "proxyConfig": {
    "useApifyProxy": true
  }
}' |
apify call logiover/tiki-vn-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/tiki-vn-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tiki.vn Scraper - Vietnam E-Commerce Products & Prices",
        "description": "Scrape Tiki.vn products via REST API. Extract prices, discounts, ratings, reviews, seller info, brands. Parallel scraping, filters, deduplication. Ultra-cheap datacenter proxies. No browser needed.",
        "version": "0.0",
        "x-build-id": "Y3LkuDu1HEM7Tx1Dx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~tiki-vn-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-tiki-vn-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/logiover~tiki-vn-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-tiki-vn-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/logiover~tiki-vn-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-tiki-vn-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "List of search keywords to scrape. Each keyword will be searched separately.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPages": {
                        "title": "Max Pages per Query",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of result pages per query. Each page returns up to 48 products.",
                        "default": 5
                    },
                    "maxProductsTotal": {
                        "title": "Max Products Total",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Global limit on total products across all queries. 0 = unlimited.",
                        "default": 0
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "default",
                            "top_seller",
                            "newest",
                            "price,asc",
                            "price,desc"
                        ],
                        "type": "string",
                        "description": "Sort order for results.",
                        "default": "default"
                    },
                    "priceMin": {
                        "title": "Minimum Price (VND)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Filter products with price >= this value. 0 = no minimum.",
                        "default": 0
                    },
                    "priceMax": {
                        "title": "Maximum Price (VND)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Filter products with price <= this value. 0 = no maximum.",
                        "default": 0
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of parallel requests.",
                        "default": 3
                    },
                    "proxyConfig": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Datacenter proxies should work fine for Tiki."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
