# DoHome Thailand Product Prices & Specifications (`mai_amm/dohome-thailand-product-price-scraper`) Actor

Collect DoHome Thailand product prices, promotions, specifications and optional branch stock by keyword, product link or catalog.

- **URL**: https://apify.com/mai_amm/dohome-thailand-product-price-scraper.md
- **Developed by:** [wiseld_squid](https://apify.com/mai_amm) (community)
- **Categories:** E-commerce, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 product results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## DoHome Thailand Product Prices & Specifications

Collect product prices, promotions, specifications and availability from DoHome Thailand. Use the results for competitor price tracking, purchasing research and product catalog analysis.

### What you can collect

- Product name, SKU, brand, model and product link
- Current price, regular price, promotional price and discount
- Images, categories, specifications and dimensions
- Features, package contents, usage instructions and warranty information
- Online availability and stock quantity when published
- Optional stock quantities and store details by branch
- Observation time for comparing results from separate runs

### How to use

1. Choose Preview sample or Full results, then select homepage offers, keyword search, catalog or specific product links.
2. Enter a Thai or English keyword, or paste DoHome product links.
3. Set the maximum number of products.
4. Choose whether to include detailed product information and stock by branch.
5. Start the run and download the results as JSON, CSV or Excel from Apify.

### Account limits

| Apify account | Maximum products per run |
|---|---:|
| Free plan | 20 |
| Paid plan, Preview sample | 20 |
| Paid plan, Full results | No fixed product cap |

The default is Preview sample with 20 products. For eligible paid accounts, select **Full results** and choose any positive maximum, or set **Maximum products to 0** to collect all available matching products. A smaller requested maximum is respected. Free accounts and accounts whose eligibility cannot be confirmed remain limited to 20 products, including when Full results or 0 is selected.

Full results have no fixed product ceiling imposed by this Actor. Runs still stop when matching results are exhausted, a limit you selected is reached, or the Apify spending/time budget is reached.

The free-plan limit is an access limit, not a promise of free execution. Check the charges and available credits shown by Apify before starting a run.

### Examples

#### Full keyword search for paid accounts

```json
{
  "accessMode": "full",
  "mode": "search",
  "searchQuery": "bosch",
  "maxItems": 0,
  "includeDetails": true
}
```

This continues through available matching products within your spending and run-time settings.

#### Preview products by keyword

```json
{
  "mode": "search",
  "searchQuery": "bosch",
  "maxItems": 20,
  "includeDetails": true
}
```

Thai keywords such as `ปูน` are also supported. Optional filters include brand and minimum/maximum price.

#### Collect a specific product

```json
{
  "mode": "urls",
  "startUrls": [
    { "url": "https://www.dohome.co.th/product/tcl-air-conditioner-inverter-9-500-btu-t-mtx10c-10409616" }
  ],
  "maxItems": 1,
  "includeBranchStock": true
}
```

#### Collect homepage offers

```json
{
  "mode": "homepage",
  "maxItems": 20,
  "includeDetails": true
}
```

For a broader selection, use `mode: "catalog"`. Larger runs are available to eligible paid accounts. The maximum is a ceiling; the actual number can be lower if fewer matching products are available or a run limit is reached.

### Example result

```json
{
  "sku": "10409616",
  "name": "TCL เครื่องปรับอากาศ INVERTER 9,500 BTU รุ่น T-MTX10C",
  "brand": "TCL",
  "model": "T-MTX10C",
  "price": 6990,
  "regularPrice": 7990,
  "currency": "THB",
  "availability": "InStock",
  "url": "https://www.dohome.co.th/product/tcl-air-conditioner-inverter-9-500-btu-t-mtx10c-10409616"
}
```

These values are sample observations; prices and stock can change.

### Pricing

- **$0.003 per saved product**, equivalent to **$3 per 1,000 products**.
- **$0.01 startup charge** at the standard run size. Larger run sizes may incur additional startup charges as shown by Apify.
- Apify platform usage is charged separately to the person starting the run.
- Branch information attached to a product is included in that product result; there is no separate charge per branch. Optional detail and branch information can increase platform usage.

For example, 100 saved products would cost **$0.31 plus platform usage** at the standard run size. Check the final charges and available credits shown by Apify before starting your run.

### Things to know

- Set **Include detailed product information** to get richer descriptions, specifications, warranty information and online quantities. Basic results can omit these fields.
- Set **Include stock by branch** to add branch observations. An account's product limit still applies.
- Stock is an observation, not a reservation or a guarantee that checkout will succeed.
- Prices, delivery eligibility and promotions may vary by branch, location or time.
- Missing information is left empty. Removed or unavailable products may be skipped.
- Repeated runs include SKU and observation time, but this Actor does not automatically compare historical prices.
- This is an independent tool and is not affiliated with DoHome.

# Actor input Schema

## `accessMode` (type: `string`):

Preview returns up to 20 products. Full results have no fixed product cap for eligible paid accounts.

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

Homepage offers, specific product URLs, paginated catalog, or Thai/English keyword search.

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

Used in urls mode. Only https://www.dohome.co.th/product/... URLs are accepted.

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

In Full mode, choose any positive number or enter 0 for all available products. Free accounts and Preview mode remain capped at 20. Spending and run-time limits still apply.

## `includeDetails` (type: `boolean`):

Include full specifications, descriptions, warranty and online quantities. Turn off for a smaller, faster product overview.

## `slugContains` (type: `string`):

Optional text filter for product links, such as bosch or air-conditioner. Use Search keyword to search product names.

## `maxRequests` (type: `integer`):

Optional work limit. Enter 0 to avoid an additional work cap in Full mode. Preview uses a small work budget.

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

Required in search mode; supports Thai and English.

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

Optional page limit. Enter 0 to continue through all available result pages in Full mode.

## `brandSlug` (type: `string`):

Optional brand name used in product links, such as bosch or tcl.

## `priceMin` (type: `number`):

Optional minimum product price in Thai baht.

## `priceMax` (type: `number`):

Optional maximum product price in Thai baht.

## `includeBranchStock` (type: `boolean`):

Add stock observations and details for the branches returned for each product. May increase run time and usage cost.

## `includeRaw` (type: `boolean`):

Attach the complete additional product information available for each result.

## Actor input object example

```json
{
  "accessMode": "preview",
  "mode": "homepage",
  "maxItems": 20,
  "includeDetails": true,
  "maxRequests": 0,
  "maxPages": 0,
  "includeBranchStock": false,
  "includeRaw": false
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

## `fullData` (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 = {
    "accessMode": "preview",
    "mode": "homepage",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("mai_amm/dohome-thailand-product-price-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 = {
    "accessMode": "preview",
    "mode": "homepage",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("mai_amm/dohome-thailand-product-price-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 '{
  "accessMode": "preview",
  "mode": "homepage",
  "maxItems": 20
}' |
apify call mai_amm/dohome-thailand-product-price-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mai_amm/dohome-thailand-product-price-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/afgVd5YyUBdFEcYJd/builds/DwMlH8tWMtmwS8hR1/openapi.json
