# Tiki Product Scraper (`crawlerbros/tiki-product-scraper`) Actor

Scrape Tiki.vn - Vietnam's leading e-commerce marketplace. Search products by keyword, fetch full product details, or browse by category. Returns prices (VND), ratings, seller info, brand, and more.

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

## Pricing

from $3.00 / 1,000 results

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

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

## 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 Product Scraper

Extract product listings, prices, ratings, seller details, and category data from **Tiki.vn** — Vietnam's largest and most trusted e-commerce marketplace. No login required. Data is returned in clean, structured JSON ready for analysis, price monitoring, or competitive research.

---

### What is Tiki.vn?

Tiki is one of Vietnam's leading online shopping platforms, offering millions of products across electronics, fashion, beauty, home goods, books, and more. It operates a verified seller program (`Tiki Trading`, official brand stores) that makes it a reliable source for authentic product data.

---

### What this scraper does

- **Search products** by any keyword (e.g. "smartphone", "laptop gaming", "tai nghe bluetooth")
- **Fetch full product detail** for a specific product by its Tiki product ID
- **Browse products by category** using Tiki category IDs

All output is clean, structured JSON with no null fields.

---

### Input options

| Field | Type | Description |
|---|---|---|
| **Mode** | Select | `searchProducts`, `getProductDetail`, or `browseCategory` |
| **Keyword** | Text | Search term (required for Search mode) |
| **Product ID** | Text | Tiki product ID, e.g. `278630241` (required for Detail mode) |
| **Category ID** | Text | Tiki category ID for browsing (optional — leave blank to list all categories) |
| **Min Price** | Integer | Minimum price filter in VND |
| **Max Price** | Integer | Maximum price filter in VND |
| **Sort By** | Select | `default`, `top_seller`, `newest`, `price_asc`, `price_desc` |
| **Max Items** | Integer | Maximum number of products to return (1–500, default 50) |

---

### Output fields

Each product record includes:

| Field | Type | Description |
|---|---|---|
| `productId` | String | Tiki unique product identifier |
| `sku` | String | Product SKU code |
| `name` | String | Full product name |
| `productUrl` | String | Direct link to the product page on Tiki.vn |
| `price` | Integer | Current selling price in Vietnamese Dong (VND) |
| `originalPrice` | Integer | Original price before discount (VND) |
| `discountRate` | Integer | Discount percentage (e.g. `15` for 15% off) |
| `ratingAverage` | Float | Average customer rating (0–5 scale) |
| `reviewCount` | Integer | Total number of customer reviews |
| `brandName` | String | Brand name (e.g. "Samsung", "Apple", "Xiaomi") |
| `sellerName` | String | Seller name (e.g. "Tiki Trading", official brand store) |
| `categoryName` | String | Primary product category |
| `thumbnailUrl` | String | Product thumbnail image URL |
| `quantitySold` | Integer | Number of units sold |
| `isOfficialStore` | Boolean | Whether sold by an official brand store |
| `isAuthentic` | Boolean | Whether product is certified authentic |
| `origin` | String | Country of origin (e.g. "Vietnam", "Korea", "China") |
| `scrapedAt` | String | ISO-8601 timestamp of when the record was scraped |

Fields are only included when data is available — no null or empty values will appear in the output.

---

### Example use cases

- **Price monitoring** — track price changes for specific products or categories over time
- **Competitor research** — analyze which brands and sellers dominate search results
- **Market analysis** — understand product availability, discount rates, and rating distributions in Vietnamese e-commerce
- **Catalog building** — collect product data for comparison shopping or recommendation systems
- **Sales trend detection** — use `quantitySold` to identify top-performing products

---

### Sample output

```json
{
  "productId": "278630241",
  "sku": "5327429832462",
  "name": "Điện thoại Samsung Galaxy S24 Ultra 12GB/256GB",
  "productUrl": "https://tiki.vn/dien-thoai-samsung-galaxy-s24-ultra-12gb-256gb/p278630241",
  "price": 33990000,
  "originalPrice": 36990000,
  "discountRate": 8,
  "ratingAverage": 4.8,
  "reviewCount": 1234,
  "brandName": "Samsung",
  "sellerName": "Tiki Trading",
  "categoryName": "Điện thoại",
  "thumbnailUrl": "https://salt.tikicdn.com/cache/280x280/ts/product/ab/cd/ef.jpg",
  "quantitySold": 5000,
  "isOfficialStore": true,
  "isAuthentic": true,
  "origin": "Korea",
  "scrapedAt": "2026-06-03T10:30:00+00:00"
}
````

***

### Frequently asked questions

**Does this require login or API keys?**
No. The scraper uses Tiki's public product API. No account, login, or API key is needed.

**Is a proxy required?**
No proxy is needed. Tiki's public API is accessible without proxy.

**What currency are prices in?**
All prices are in Vietnamese Dong (VND). For reference, 1 USD ≈ 25,000 VND.

**How many products can I scrape?**
Up to 500 products per run. For large-scale data needs, run multiple searches with different keywords or category IDs.

**How do I find a Tiki category ID?**
Run the scraper in `browseCategory` mode without a Category ID — it will return a list of all top-level categories with their IDs and names.

**How do I find a product ID?**
The product ID appears in the URL on Tiki.vn. For example, in `https://tiki.vn/product-name/p278630241`, the ID is `278630241`.

**How fresh is the data?**
Data is fetched live from Tiki's API at the time of the run. Prices and availability reflect current listings.

**Does it support Vietnamese keywords?**
Yes. Both Vietnamese and English keywords are supported (e.g. "điện thoại", "smartphone", "laptop gaming").

**What happens if a product is out of stock?**
Out-of-stock products are included in results if Tiki's API returns them. The `availability` field from the raw API is not included in output since it is unreliable for some product types.

**Can I filter by price range?**
Yes. Use the `minPrice` and `maxPrice` fields (in VND) to filter results.

***

### Data source

This scraper fetches data from Tiki.vn's public product API (`tiki.vn/api/v2/products`). Data is owned by Tiki and the respective sellers/brands. Use in accordance with Tiki's terms of service.

# Actor input Schema

## `mode` (type: `string`):

What to scrape from Tiki.vn.

## `keyword` (type: `string`):

Keyword to search for products (required for searchProducts mode).

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

Tiki product ID to fetch details for (required for getProductDetail mode, e.g. '278630241').

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

Tiki category ID to browse products in (for browseCategory mode). Leave blank to list all available categories.

## `minPrice` (type: `integer`):

Filter products with price at or above this value in Vietnamese Dong (VND).

## `maxPrice` (type: `integer`):

Filter products with price at or below this value in Vietnamese Dong (VND).

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

How to sort search/category results.

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

Maximum number of products to return.

## Actor input object example

```json
{
  "mode": "searchProducts",
  "keyword": "smartphone",
  "sortBy": "default",
  "maxItems": 20
}
```

# Actor output Schema

## `products` (type: `string`):

Dataset containing all scraped Tiki.vn products with pricing, ratings, brand, seller, category, and more.

# 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 = {
    "mode": "searchProducts",
    "keyword": "smartphone",
    "sortBy": "default",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/tiki-product-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 = {
    "mode": "searchProducts",
    "keyword": "smartphone",
    "sortBy": "default",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/tiki-product-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 '{
  "mode": "searchProducts",
  "keyword": "smartphone",
  "sortBy": "default",
  "maxItems": 20
}' |
apify call crawlerbros/tiki-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tiki Product Scraper",
        "description": "Scrape Tiki.vn - Vietnam's leading e-commerce marketplace. Search products by keyword, fetch full product details, or browse by category. Returns prices (VND), ratings, seller info, brand, and more.",
        "version": "1.0",
        "x-build-id": "9nUHI1DWrBGUm4187"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~tiki-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-tiki-product-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/crawlerbros~tiki-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-tiki-product-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/crawlerbros~tiki-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-tiki-product-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "searchProducts",
                            "getProductDetail",
                            "browseCategory"
                        ],
                        "type": "string",
                        "description": "What to scrape from Tiki.vn.",
                        "default": "searchProducts"
                    },
                    "keyword": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "Keyword to search for products (required for searchProducts mode).",
                        "default": "smartphone"
                    },
                    "productId": {
                        "title": "Product ID",
                        "type": "string",
                        "description": "Tiki product ID to fetch details for (required for getProductDetail mode, e.g. '278630241')."
                    },
                    "categoryId": {
                        "title": "Category ID",
                        "type": "string",
                        "description": "Tiki category ID to browse products in (for browseCategory mode). Leave blank to list all available categories."
                    },
                    "minPrice": {
                        "title": "Minimum price (VND)",
                        "minimum": 0,
                        "maximum": 999999999,
                        "type": "integer",
                        "description": "Filter products with price at or above this value in Vietnamese Dong (VND)."
                    },
                    "maxPrice": {
                        "title": "Maximum price (VND)",
                        "minimum": 0,
                        "maximum": 999999999,
                        "type": "integer",
                        "description": "Filter products with price at or below this value in Vietnamese Dong (VND)."
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "default",
                            "top_seller",
                            "newest",
                            "price_asc",
                            "price_desc"
                        ],
                        "type": "string",
                        "description": "How to sort search/category results.",
                        "default": "default"
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of products to return.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
