# RentHub Thailand Apartment Scraper (`mai_amm/renthub-thailand-apartment-scraper`) Actor

Search apartment listings across Thailand by location, price, rental period, and amenities, with optional full property details.

- **URL**: https://apify.com/mai\_amm/renthub-thailand-apartment-scraper.md
- **Developed by:** [wiseld\_squid](https://apify.com/mai_amm) (community)
- **Categories:** Automation, Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## RentHub Thailand Apartment Scraper

Find apartment and short-stay listings across Thailand by province, neighborhood, road, landmark, or transit station.

### What you can collect

- Property name, address, district, province, and listing URL
- Monthly, daily, and short-contract prices
- Property type, verification status, promotion, and amenities
- Listing dates and cover image
- Optional full details: descriptions, rooms, fees, coordinates, reviews, nearby areas, and all pictures
- Optional public listing contacts

### Input

Enter a location in Thai or English, select monthly or daily rentals, then optionally add price, contract, amenity, sorting, and result-limit filters.

Example:

```json
{
  "location": "Lat Phrao",
  "language": "en",
  "rentalType": "MONTHLY",
  "minPrice": 4000,
  "maxPrice": 10000,
  "hasAir": true,
  "hasInternet": true,
  "sortBy": "priceLowToHigh",
  "maxResults": 100,
  "detailLevel": "summary"
}
```

Use `zoneId` and `provinceCode` only when you need to select an exact location that shares a similar name with other areas.

### Usage limits

Free users can collect up to 20 listings per run. Users on a paid Apify plan can request any number of listings, subject to matching data and run timeout.

### Output

Each dataset item is one normalized property listing.

```json
{
  "id": "48543",
  "name": "For You Apartment",
  "url": "https://www.renthub.in.th/en/for-you-apartment",
  "propertyType": "APARTMENT",
  "province": "Bangkok",
  "district": "Huai Khwang",
  "monthlyPriceMin": 7000,
  "monthlyPriceMax": 22000,
  "verified": true,
  "amenities": ["airConditioning", "furniture", "internet", "parking"],
  "coverImage": "https://bcdn.renthub.in.th/listing_picture/example.jpg",
  "refreshedAt": "2026-03-10T08:16:22.828Z"
}
```

The `OUTPUT` record also reports the access tier, applied result limit, resolved location, total matching listings, saved results, pages processed, and full-detail success or failure counts.

### Notes

- Available listings and prices can change between runs.
- Full detail mode takes longer because it processes each property page.
- Public contacts are excluded unless explicitly enabled.
- Use the Actor only for data you are authorized to collect and follow applicable terms and privacy requirements.

# Actor input Schema

## `location` (type: `string`):

Province, district, road, landmark, or transit station in Thai or English.

## `language` (type: `string`):

Language used for listing names, addresses, and property links.

## `rentalType` (type: `string`):

Choose regular monthly apartments or properties offering daily stays.

## `minPrice` (type: `number`):

Monthly or daily price according to the selected rental type.

## `maxPrice` (type: `number`):

Monthly or daily price according to the selected rental type.

## `shortTerm` (type: `string`):

Optional. Applies to monthly rentals only.

## `petFriendly` (type: `boolean`):

Only return listings that allow pets.

## `hasAir` (type: `boolean`):

Only return listings with air conditioning.

## `hasFurniture` (type: `boolean`):

Only return listings that include furniture.

## `hasInternet` (type: `boolean`):

Only return listings that provide internet or Wi-Fi.

## `hasParking` (type: `boolean`):

Only return listings with parking.

## `hasPool` (type: `boolean`):

Only return listings with a swimming pool.

## `hasFitness` (type: `boolean`):

Only return listings with a fitness room.

## `hasLift` (type: `boolean`):

Only return listings with a lift or elevator.

## `hasEvCharger` (type: `boolean`):

Only return listings with an electric-vehicle charger.

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

Order matching listings by update date or the selected rental price.

## `maxResults` (type: `integer`):

Maximum listing records to save. Free users receive up to 20 results per run; users on a paid Apify plan can request any number, subject to matching data and run timeout.

## `detailLevel` (type: `string`):

Full details add rooms, fees, coordinates, descriptions, reviews, and all pictures.

## `includeContacts` (type: `boolean`):

Adds contact fields published on the property page. Full detail mode is required.

## `includeSummary` (type: `boolean`):

The run summary is always available in OUTPUT.

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

Number of full property pages processed at once.

## `zoneId` (type: `string`):

Optional override when a location name is ambiguous.

## `provinceCode` (type: `integer`):

Use with an exact zone ID.

## Actor input object example

```json
{
  "location": "Bangkok",
  "language": "en",
  "rentalType": "MONTHLY",
  "shortTerm": "ANY",
  "petFriendly": false,
  "hasAir": false,
  "hasFurniture": false,
  "hasInternet": false,
  "hasParking": false,
  "hasPool": false,
  "hasFitness": false,
  "hasLift": false,
  "hasEvCharger": false,
  "sortBy": "newest",
  "maxResults": 100,
  "detailLevel": "summary",
  "includeContacts": false,
  "includeSummary": false,
  "maxConcurrency": 4
}
```

# Actor output Schema

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

Normalized listing records matching the selected filters.

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

Access tier, resolved location, filters, available count, saved count, and detail status.

# 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 = {
    "location": "Bangkok"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mai_amm/renthub-thailand-apartment-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 = { "location": "Bangkok" }

# Run the Actor and wait for it to finish
run = client.actor("mai_amm/renthub-thailand-apartment-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 '{
  "location": "Bangkok"
}' |
apify call mai_amm/renthub-thailand-apartment-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/JYNUAAhaykj3UxOcq/builds/4AvmfzzJj7cliGEb2/openapi.json
