# JobThai Thailand Jobs Scraper (`beige_unison/jobthai-scraper`) Actor

Thai job scraper for JobThai.com. Extract Thailand job listings in Thai or English with salary, company, province, job type, WFH, hybrid tags, descriptions, qualifications, benefits, and optional public contacts.

- **URL**: https://apify.com/beige\_unison/jobthai-scraper.md
- **Developed by:** [wiseld\_squid](https://apify.com/beige_unison) (community)
- **Categories:** Jobs
- **Stats:** 3 total users, 0 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

## JobThai Thailand Jobs Scraper - Thai Job Scraper

ดึงข้อมูลงานสาธารณะจากหน้า search และหน้ารายละเอียดงานของ JobThai ได้ทั้งภาษาไทยและอังกฤษ เหมาะสำหรับติดตามตลาดแรงงานในไทย วิเคราะห์ตำแหน่งที่เปิดรับ เงินเดือน บริษัทที่กำลังจ้างงาน และส่งออกข้อมูลเป็น JSON, CSV, Excel, Google Sheets, Make, Zapier หรือ API workflow ของคุณ

This is a Thai jobs scraper for Thailand job market data. It extracts public JobThai job listings in Thai or English, including job title, company, salary, location, province, job type, work-from-home tags, hybrid work tags, job description, qualifications, benefits, application instructions, and optional public contact fields.

ตัว Actor รองรับการค้นหาด้วยคำค้นหาเดียวหรือหลายคำค้นหา, ตัวกรองเงินเดือน, รหัสประเภทงาน, งาน Work from Home, งาน Hybrid, งานใกล้รถไฟฟ้า, นิคมอุตสาหกรรม และ URL ของ JobThai ที่ใส่เองได้โดยตรง

Keywords: JobThai scraper, Thai job scraper, Thailand jobs scraper, Thai jobs, Thailand job listings, JobThai data extractor, งานไทย, หางานไทย, งาน JobThai

### รองรับภาษาไทย

- ค่าเริ่มต้นของ `language` เป็น `th`
- ถ้าต้องการหน้าอังกฤษ ให้เลือก `language: "en"`
- URL ที่สร้างจาก search จะเป็น `/th/jobs` หรือ `/en/jobs` ตามภาษาที่เลือก
- การดึง detail รองรับหัวข้อไทย เช่น `รายละเอียดงาน`, `คุณสมบัติผู้สมัคร`, `สวัสดิการ`, `วิธีการสมัคร`
- ฟอร์ม input และ dataset overview แสดงชื่อ field แบบไทย/อังกฤษ

### ข้อมูลที่ดึงได้

- ชื่อตำแหน่ง, บริษัท, รหัสบริษัท, โลโก้บริษัท
- URL งานและ URL รายละเอียดงาน
- จังหวัด, เขต/อำเภอ, ภูมิภาค, สถานที่ทำงาน และสถานีรถไฟฟ้าใกล้เคียง
- เงินเดือนและจำนวนอัตรา
- ประเภทงานและรหัสประเภทงานของ JobThai
- แท็ก เช่น สัมภาษณ์ออนไลน์, Hybrid Work, Work from Home
- รายละเอียดงาน, คุณสมบัติ, สวัสดิการ, วิธีการสมัคร
- อีเมล, เบอร์โทร และ LINE ID สาธารณะ เมื่อเปิด `includeContacts`
- metadata เช่น source URL, หน้า, ลำดับในผลค้นหา, total results และเวลาที่ scrape

### Input หลัก

| Field | คำอธิบาย |
| --- | --- |
| `mode` | `search`, `urls`, หรือ `auto` |
| `keyword` | คำค้นหาเดียว เช่น `โปรแกรมเมอร์`, `บัญชี`, `Python` |
| `keywords` | หลายคำค้นหา แต่ละคำจะเริ่ม search แยกกัน |
| `jobTypes` | รหัสประเภทงาน JobThai เช่น `["7"]` สำหรับ Computer/IT |
| `salaryMin` / `salaryMax` | ช่วงเงินเดือน หน่วยบาท |
| `orderBy` | เว้นว่างสำหรับงานล่าสุด หรือใช้ `SALARY_ASC`, `SALARY_DESC` |
| `massTransit` | ใช้ `all` สำหรับงานใกล้รถไฟฟ้า หรือใส่รหัสสถานีถ้าทราบ |
| `industrialEstate` | รหัสหรือ slug นิคมอุตสาหกรรม |
| `workFromHome` | กรองงาน Work from Home |
| `hybrid` | กรองงาน Hybrid |
| `startUrls` | URL หน้าค้นหาหรือหน้ารายละเอียดงานของ JobThai |
| `language` | `th` หรือ `en` |
| `maxItems` | จำนวนงานสูงสุดที่จะบันทึก |
| `maxPages` | จำนวนหน้าผลค้นหาสูงสุดต่อ keyword |
| `includeDetails` | เปิดหน้ารายละเอียดงานเพื่อดึงข้อมูลเพิ่ม |
| `includeContacts` | รวมข้อมูลติดต่อสาธารณะ ปิดไว้เป็นค่าเริ่มต้น |
| `maxConcurrency` | จำนวน request พร้อมกัน |
| `proxyConfiguration` | ตั้งค่า Apify Proxy |

### ตัวอย่าง Input ภาษาไทย

```json
{
  "mode": "search",
  "language": "th",
  "keyword": "โปรแกรมเมอร์",
  "jobTypes": ["7"],
  "salaryMin": 30000,
  "salaryMax": 80000,
  "orderBy": "SALARY_DESC",
  "maxItems": 50,
  "maxPages": 3,
  "includeDetails": true,
  "includeContacts": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

### ตัวอย่าง Input ภาษาอังกฤษ

```json
{
  "mode": "search",
  "language": "en",
  "keyword": "Python",
  "jobTypes": ["7"],
  "maxItems": 50,
  "maxPages": 3,
  "includeDetails": true,
  "includeContacts": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

### ตัวอย่าง Output

```json
{
  "source": "jobthai",
  "jobId": 1758892,
  "companyId": 74449,
  "url": "https://www.jobthai.com/th/job/1758892",
  "detailUrl": "https://www.jobthai.com/th/job/1758892",
  "title": "โปรแกรมเมอร์",
  "company": "บริษัทตัวอย่าง จำกัด",
  "location": "ดินแดง, กรุงเทพมหานคร",
  "province": "กรุงเทพมหานคร",
  "district": "ดินแดง",
  "salary": "30,000 - 35,000 บาท",
  "jobType": "คอมพิวเตอร์/ไอที",
  "tags": ["สัมภาษณ์งานออนไลน์", "Hybrid Work", "Work from Home"],
  "isWorkFromHome": true,
  "isHybrid": true,
  "hasOnlineInterview": true,
  "description": "พัฒนาและดูแลระบบเว็บแอปพลิเคชัน...",
  "qualifications": "ปริญญาตรีด้านคอมพิวเตอร์หรือสาขาที่เกี่ยวข้อง...",
  "howToApply": "สมัครผ่าน JobThai หรือส่งอีเมล",
  "scrapedAt": "2026-05-03T19:33:21.785Z"
}
```

### หมายเหตุเรื่อง Output

ถ้า `includeDetails` เป็น `false` ระบบจะบันทึกเฉพาะข้อมูลระดับ listing ทำให้รันเร็วขึ้น ถ้า `includeDetails` เป็น `true` ระบบจะเปิดหน้ารายละเอียดงานแต่ละรายการและ merge field เพิ่มเข้าไป

ถ้า `includeContacts` เป็น `false` ข้อมูลติดต่อจะไม่ถูกบันทึก เปิดใช้เฉพาะเมื่อจำเป็นต้องใช้ข้อมูลติดต่อสาธารณะสำหรับการสมัครงาน และควรตรวจสอบให้สอดคล้องกับเงื่อนไขการใช้งานของ JobThai และกฎหมายข้อมูลส่วนบุคคล

### English Summary

This Actor extracts public JobThai job listings in Thai or English. It supports keyword searches, multiple keywords, salary filters, job type IDs, work-from-home and hybrid filters, mass transit filters, industrial estate filters, direct JobThai URLs, and optional detail-page enrichment.

### Compliance

Actor นี้ออกแบบมาสำหรับหน้าประกาศงานสาธารณะของ JobThai เท่านั้น ห้ามใช้กับหน้าประวัติผู้สมัคร พื้นที่ที่ต้อง login หรือ path ที่ JobThai robots.txt ไม่อนุญาต เช่น `/resume/` และ `/findresume/` ควรตรวจสอบเงื่อนไขของ JobThai ก่อนนำ dataset ไปเผยแพร่หรือใช้เชิงพาณิชย์

### Local Run

```bash
npm install
npm start
```

# Actor input Schema

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

เลือกวิธีเริ่มดึงข้อมูล: search สร้าง URL จากตัวกรอง, urls ใช้ URL ที่ใส่เอง, auto ใช้ทั้งสองแบบ.

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

ชื่อตำแหน่ง ทักษะ หรือชื่อบริษัท เช่น โปรแกรมเมอร์, บัญชี, Python.

## `keywords` (type: `array`):

ใส่หลายคำค้นหาได้ แต่ละคำจะเริ่มค้นหาแยกกัน.

## `jobTypes` (type: `array`):

รหัสประเภทงานของ JobThai เช่น 7 สำหรับ Computer/IT. ใส่หลายค่าได้ เช่น 7,35.

## `salaryMin` (type: `integer`):

เงินเดือนรายเดือนขั้นต่ำ หน่วยบาท.

## `salaryMax` (type: `integer`):

เงินเดือนรายเดือนสูงสุด หน่วยบาท.

## `orderBy` (type: `string`):

เว้นว่างเพื่อเรียงตามงานล่าสุด หรือเลือกเรียงตามเงินเดือน.

## `massTransit` (type: `string`):

ใส่ all เพื่อค้นหางานใกล้ BTS/MRT/SRT/ARL/BRT หรือใส่รหัสสถานีถ้าทราบ.

## `industrialEstate` (type: `array`):

รหัสหรือ slug ของนิคมอุตสาหกรรม ถ้าทราบ.

## `workFromHome` (type: `boolean`):

เพิ่มตัวกรองงานที่ทำงานจากบ้านของ JobThai.

## `hybrid` (type: `boolean`):

เพิ่มตัวกรองงานแบบ Hybrid ของ JobThai.

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

URL หน้าค้นหาหรือหน้ารายละเอียดงานของ JobThai.

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

เลือกภาษาเว็บไซต์ JobThai ที่ต้องการดึงข้อมูล.

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

จำนวนรายการงานสูงสุดที่จะบันทึก.

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

จำนวนหน้าผลการค้นหาสูงสุดต่อหนึ่งคำค้นหา ใช้ 0 เพื่อดึงต่อจนถึง maxItems หรือจนไม่มีหน้าถัดไป.

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

เปิดหน้ารายละเอียดงานเพื่อดึงรายละเอียดงาน คุณสมบัติ สวัสดิการ วิธีสมัคร และข้อมูลเพิ่มเติม.

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

รวมข้อมูลติดต่อสาธารณะจากหน้ารายละเอียดงาน ปิดไว้เป็นค่าเริ่มต้นเพื่อความปลอดภัยของ dataset.

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

จำนวน HTTP request ที่รันพร้อมกัน แนะนำให้ใช้ค่าพอดีสำหรับ JobThai.

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

การตั้งค่า Apify Proxy.

## Actor input object example

```json
{
  "mode": "search",
  "keyword": "โปรแกรมเมอร์",
  "orderBy": "",
  "workFromHome": false,
  "hybrid": false,
  "startUrls": [
    {
      "url": "https://www.jobthai.com/th/jobs?jobtype=7&keyword=โปรแกรมเมอร์"
    }
  ],
  "language": "th",
  "maxItems": 100,
  "maxPages": 5,
  "includeDetails": true,
  "includeContacts": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

All scraped JobThai job listings in the default dataset.

## `jobDetails` (type: `string`):

Detailed view with description, qualifications, benefits, application instructions, and optional public contact fields.

# 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": "search",
    "keyword": "โปรแกรมเมอร์",
    "startUrls": [
        {
            "url": "https://www.jobthai.com/th/jobs?jobtype=7&keyword=โปรแกรมเมอร์"
        }
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("beige_unison/jobthai-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": "search",
    "keyword": "โปรแกรมเมอร์",
    "startUrls": [{ "url": "https://www.jobthai.com/th/jobs?jobtype=7&keyword=โปรแกรมเมอร์" }],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("beige_unison/jobthai-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": "search",
  "keyword": "โปรแกรมเมอร์",
  "startUrls": [
    {
      "url": "https://www.jobthai.com/th/jobs?jobtype=7&keyword=โปรแกรมเมอร์"
    }
  ],
  "maxItems": 100
}' |
apify call beige_unison/jobthai-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "JobThai Thailand Jobs Scraper",
        "description": "Thai job scraper for JobThai.com. Extract Thailand job listings in Thai or English with salary, company, province, job type, WFH, hybrid tags, descriptions, qualifications, benefits, and optional public contacts.",
        "version": "0.1",
        "x-build-id": "7Xzztv15mrCStZEGa"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/beige_unison~jobthai-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-beige_unison-jobthai-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/beige_unison~jobthai-scraper/runs": {
            "post": {
                "operationId": "runs-sync-beige_unison-jobthai-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/beige_unison~jobthai-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-beige_unison-jobthai-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",
                "properties": {
                    "mode": {
                        "title": "โหมดการทำงาน / Mode",
                        "enum": [
                            "auto",
                            "search",
                            "urls"
                        ],
                        "type": "string",
                        "description": "เลือกวิธีเริ่มดึงข้อมูล: search สร้าง URL จากตัวกรอง, urls ใช้ URL ที่ใส่เอง, auto ใช้ทั้งสองแบบ.",
                        "default": "search"
                    },
                    "keyword": {
                        "title": "คำค้นหา / Keyword",
                        "type": "string",
                        "description": "ชื่อตำแหน่ง ทักษะ หรือชื่อบริษัท เช่น โปรแกรมเมอร์, บัญชี, Python."
                    },
                    "keywords": {
                        "title": "หลายคำค้นหา / Keywords",
                        "type": "array",
                        "description": "ใส่หลายคำค้นหาได้ แต่ละคำจะเริ่มค้นหาแยกกัน.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "jobTypes": {
                        "title": "รหัสประเภทงาน / Job type IDs",
                        "type": "array",
                        "description": "รหัสประเภทงานของ JobThai เช่น 7 สำหรับ Computer/IT. ใส่หลายค่าได้ เช่น 7,35.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "salaryMin": {
                        "title": "เงินเดือนต่ำสุด / Minimum salary",
                        "minimum": 0,
                        "type": "integer",
                        "description": "เงินเดือนรายเดือนขั้นต่ำ หน่วยบาท."
                    },
                    "salaryMax": {
                        "title": "เงินเดือนสูงสุด / Maximum salary",
                        "minimum": 0,
                        "type": "integer",
                        "description": "เงินเดือนรายเดือนสูงสุด หน่วยบาท."
                    },
                    "orderBy": {
                        "title": "การเรียงลำดับ / Sort order",
                        "enum": [
                            "",
                            "SALARY_ASC",
                            "SALARY_DESC"
                        ],
                        "type": "string",
                        "description": "เว้นว่างเพื่อเรียงตามงานล่าสุด หรือเลือกเรียงตามเงินเดือน.",
                        "default": ""
                    },
                    "massTransit": {
                        "title": "รถไฟฟ้า / Mass transit",
                        "type": "string",
                        "description": "ใส่ all เพื่อค้นหางานใกล้ BTS/MRT/SRT/ARL/BRT หรือใส่รหัสสถานีถ้าทราบ."
                    },
                    "industrialEstate": {
                        "title": "รหัสนิคมอุตสาหกรรม / Industrial estate IDs",
                        "type": "array",
                        "description": "รหัสหรือ slug ของนิคมอุตสาหกรรม ถ้าทราบ.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "workFromHome": {
                        "title": "ทำงานที่บ้าน / Work from Home",
                        "type": "boolean",
                        "description": "เพิ่มตัวกรองงานที่ทำงานจากบ้านของ JobThai.",
                        "default": false
                    },
                    "hybrid": {
                        "title": "ทำงานแบบ Hybrid / Hybrid Work",
                        "type": "boolean",
                        "description": "เพิ่มตัวกรองงานแบบ Hybrid ของ JobThai.",
                        "default": false
                    },
                    "startUrls": {
                        "title": "URL เริ่มต้น / Start URLs",
                        "type": "array",
                        "description": "URL หน้าค้นหาหรือหน้ารายละเอียดงานของ JobThai.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "language": {
                        "title": "ภาษา / Language",
                        "enum": [
                            "en",
                            "th"
                        ],
                        "type": "string",
                        "description": "เลือกภาษาเว็บไซต์ JobThai ที่ต้องการดึงข้อมูล.",
                        "default": "th"
                    },
                    "maxItems": {
                        "title": "จำนวนผลลัพธ์สูงสุด / Max items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "จำนวนรายการงานสูงสุดที่จะบันทึก.",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "จำนวนหน้าสูงสุด / Max pages",
                        "minimum": 0,
                        "type": "integer",
                        "description": "จำนวนหน้าผลการค้นหาสูงสุดต่อหนึ่งคำค้นหา ใช้ 0 เพื่อดึงต่อจนถึง maxItems หรือจนไม่มีหน้าถัดไป.",
                        "default": 5
                    },
                    "includeDetails": {
                        "title": "ดึงรายละเอียดงาน / Include job details",
                        "type": "boolean",
                        "description": "เปิดหน้ารายละเอียดงานเพื่อดึงรายละเอียดงาน คุณสมบัติ สวัสดิการ วิธีสมัคร และข้อมูลเพิ่มเติม.",
                        "default": true
                    },
                    "includeContacts": {
                        "title": "รวมข้อมูลติดต่อ / Include contacts",
                        "type": "boolean",
                        "description": "รวมข้อมูลติดต่อสาธารณะจากหน้ารายละเอียดงาน ปิดไว้เป็นค่าเริ่มต้นเพื่อความปลอดภัยของ dataset.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "จำนวน request พร้อมกัน / Max concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "จำนวน HTTP request ที่รันพร้อมกัน แนะนำให้ใช้ค่าพอดีสำหรับ JobThai.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "ตั้งค่า Proxy / Proxy configuration",
                        "type": "object",
                        "description": "การตั้งค่า Apify Proxy.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
