# Thailand Company Data — Directors, Financials & Firmographics (`foxlabs/thailand-company-data`) Actor

Look up any Thai company by 13-digit juristic ID: firmographics, 5-year financial statements (assets, revenue, net profit, equity), directors & shareholders — official DBD data as clean JSON for KYC, due diligence & B2B intelligence.

- **URL**: https://apify.com/foxlabs/thailand-company-data.md
- **Developed by:** [Berkan Kaplan](https://apify.com/foxlabs) (community)
- **Categories:** Business, Lead generation
- **Stats:** 9 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $25.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 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

<p align="center"><a href="https://apify.com/foxlabs/thailand-company-data"><img src="https://data.foxlabs.com.tr/img/thailand-company-data-banner.svg" alt="Thailand Company Data — Directors, Financials &amp; Firmographics" width="100%" /></a></p>

## Thailand Company Data — Directors, Financials & Shareholders (DBD)

Need **deep, verified company intelligence on the Thai market** — not just a name and an address? This Actor turns Thailand's official **Department of Business Development (DBD)** registry into ready-to-use records: look up any company **by 13-digit juristic ID or by name** and get firmographics, **up to 5 years of financial statements**, the **board of directors**, and shareholder nationality — all in one clean JSON record.

Built on **DBD's official public data** — the keyless OpenAPI plus the DBD DataWarehouse. **No API key, no login, no account:** the Actor handles the anonymous session and the DataWarehouse's AES-GCM encryption for you, so you just pass an ID or a name — and it doesn't break when a website's HTML changes.

- 🇹🇭 **Any registered company** — look up by 13-digit juristic ID, or search by Thai / English name
- 📊 **Up to 5 years of financials** — assets, revenue, net profit, equity, liabilities and cash from the official DBD DataWarehouse
- 👔 **Board directors** — names in Thai *and* English (where DBD has them) plus nationality
- ⚡ **One run → one clean, flat record** (JSON / CSV / Excel / API) — no fragile aggregator HTML

### Quick start (API)

Get PTT and CP All with five years of financials and their full boards, in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/foxlabs~thailand-company-data/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "juristicIds": ["0107544000108", "0107542000011"], "includeFinancials": true, "financialYears": 5, "includeDirectors": true }'
````

No juristic IDs? Swap in `"searchKeywords": ["PTT"]` and the Actor finds and scrapes every match. Prefer no code? Open the **Input** tab, keep the prefilled examples or set your own, and click **Start** — then download the results.

### What you get

One clean, flat record per company:

| Field | Type | Description |
|---|---|---|
| `juristic_id` | string | 13-digit Thai juristic (registration) number |
| `name_th` / `name_en` | string | Registered company name in Thai and English (English where DBD has it) |
| `entity_type` | string | Legal entity type, in Thai (e.g. *บริษัทมหาชนจำกัด* = public limited company) |
| `status` | string | Registration status, in Thai (e.g. *ยังดำเนินกิจการอยู่* = active) |
| `register_date` | string | Registration date, ISO `YYYY-MM-DD` |
| `tsic_code` / `tsic_th` / `tsic_en` | string | TSIC industry code + description (Thai & English) |
| `registered_capital` / `_fmt` | number / string | Registered capital — raw THB + compact `฿` string |
| `paidup_capital` | number | Paid-up capital (THB) |
| `address` | string | Registered address, in Thai (as DBD publishes it) |
| `branch` | string | Branch name where the record is a branch, else `null` |
| `financials` | array | Up to 5 fiscal years, newest first — see the financial fields below |
| `financials_text` | string | One-line summary of the latest year (e.g. `Revenue ฿… · Net profit ฿… · Assets ฿… · FY2024`) |
| `directors` | array | Board members: `{ seq, name_th, name_en, nationality }` |
| `directors_count` | number | Number of directors returned |
| `directors_text` | string | Semicolon-joined names of the first 10 directors |
| `shareholders` | array | Shareholders `{ name_th, nationality, shares, ratio_pct }` — best-effort, opt-in |
| `shareholders_by_nationality` | array | Foreign-ownership breakdown by nationality — best-effort, opt-in |
| `matched` | boolean | `true` when data was found; unmatched inputs return `matched: false` + an `error` |
| `source` / `source_url` | string | DBD attribution + the company's DataWarehouse profile URL |
| `scraped_at` | string | ISO timestamp of the run |

**Each `financials[]` entry** carries: `fiscal_year` (AD) and `fiscal_year_be` (Buddhist Era = AD + 543), `business_size`, `total_assets` (+ `_fmt`), `current_assets`, `cash`, `total_liabilities`, `current_liabilities`, `equity` (+ `_fmt`), `revenue` (+ `_fmt`), `total_income`, `cost_of_sales`, `gross_profit`, `expenses`, and `net_profit` (+ `_fmt`).

- **Language.** `name_th`, `entity_type`, `status`, `address` and `tsic_th` come in Thai exactly as DBD publishes them; `name_en` and `tsic_en` give the English equivalents where DBD has registered them.
- **Money.** Every headline figure comes twice — a raw number for maths (`revenue: 3760000000000`) and a compact Baht string (`revenue_fmt: "฿3.76T"`, where `T` = trillion, `B` = billion, `M` = million; smaller values render as `฿1,234`).

#### Sample output

Illustrative record (abridged — Thai text and figures shown for shape, not as measured values):

```json
{
  "juristic_id": "0107544000108",
  "name_th": "บริษัท ปตท. จำกัด (มหาชน)",
  "name_en": "PTT PUBLIC COMPANY LIMITED",
  "entity_type": "บริษัทมหาชนจำกัด",
  "status": "ยังดำเนินกิจการอยู่",
  "register_date": "2001-10-01",
  "tsic_code": "19200",
  "tsic_en": "Manufacture of refined petroleum products",
  "registered_capital": 28572457250,
  "registered_capital_fmt": "฿28.57B",
  "paidup_capital": 28562996250,
  "address": "555 ถนนวิภาวดีรังสิต, จตุจักร, จตุจักร, กรุงเทพมหานคร",
  "financials": [
    {
      "fiscal_year": 2024,
      "fiscal_year_be": "2567",
      "total_assets": 3400000000000,
      "total_assets_fmt": "฿3.40T",
      "revenue": 3760000000000,
      "revenue_fmt": "฿3.76T",
      "net_profit": 90070000000,
      "net_profit_fmt": "฿90.07B",
      "equity": 1050000000000,
      "equity_fmt": "฿1.05T"
    }
  ],
  "financials_text": "Revenue ฿3.76T · Net profit ฿90.07B · Assets ฿3.40T · FY2024",
  "directors": [
    { "seq": 1, "name_th": "นาย ตัวอย่าง กรรมการ", "name_en": "Mr. Example Director", "nationality": "TH" }
  ],
  "directors_count": 15,
  "directors_text": "Mr. Example Director; …",
  "shareholders": null,
  "shareholders_by_nationality": null,
  "matched": true,
  "source": "DBD — Department of Business Development, Ministry of Commerce (Thailand)",
  "source_url": "https://datawarehouse.dbd.go.th/company/profile/7/0107544000108",
  "scraped_at": "2026-07-05T00:00:00.000Z"
}
```

`directors`, `shareholders` and each `financials[]` entry are trimmed here for readability — a real record lists every board member and every fiscal year you requested. Fields that DBD doesn't publish for a company return `null`, never a guess.

### Input & filters

- **Companies** — supply exact **juristic IDs** (13-digit, fastest and unambiguous), or **search keywords** (Thai or Latin company-name tokens). Each keyword is searched on DBD and every match is scraped, capped by `maxResults`.
- **Financial statements** — toggle on/off, and choose how many recent fiscal years (`financialYears`, 1–5).
- **Directors** — board / committee members with Thai + English names and nationality.
- **Shareholders** — *opt-in, best-effort.* The anonymous public tier often withholds named partners; leave off unless you need it.
- **Max results** — hard cap on companies processed per run (up to 100,000).
- **Concurrency** — parallel firmographic lookups (1–4). The encrypted deep tier always runs sequentially, so this mainly speeds up firmographics-only runs.
- **Proxy** — a **datacenter** proxy is sufficient; DBD's bot protection passes from datacenter IPs.

A few well-known juristic IDs to try: `0107544000108` (PTT), `0107542000011` (CP All), `0107536000102` (Siam Commercial Bank).

### Example inputs (copy & paste)

```jsonc
// 1) Deep dive: PTT, CP All & SCB with 5 years of financials and full boards
{ "juristicIds": ["0107544000108", "0107542000011", "0107536000102"],
  "includeFinancials": true, "financialYears": 5, "includeDirectors": true }

// 2) No IDs? Search by name and scrape every match (capped by maxResults)
{ "searchKeywords": ["PTT", "ปูนซิเมนต์ไทย"], "includeFinancials": true, "maxResults": 20 }

// 3) Fast firmographics only — name, capital, TSIC, address (no deep tier)
{ "juristicIds": ["0107544000108", "0107542000011"],
  "includeFinancials": false, "includeDirectors": false, "maxConcurrency": 4 }

// 4) Full ownership picture — directors + shareholders (best-effort) + financials
{ "juristicIds": ["0107544000108"],
  "includeDirectors": true, "includeShareholders": true, "includeFinancials": true }

// 5) Lean financials — latest year only, skip directors
{ "juristicIds": ["0107544000108", "0107542000011"],
  "includeFinancials": true, "financialYears": 1, "includeDirectors": false }

// 6) Keyword sector browse — Thai "ธนาคาร" (banks), enriched
{ "searchKeywords": ["ธนาคาร"], "includeFinancials": true, "includeDirectors": true, "maxResults": 50 }
```

Tip: DBD matches on the **registered name** — a Thai name or a distinctive Latin token (e.g. `PTT`) works best; long English phrases may miss.

### Use cases

- **KYC / KYB & due diligence.** Verify a Thai counterparty before you sign: pass its `juristicIds` and get official legal identity, entity type, status, registered capital, the **board of directors** and multi-year **financial health** in one record — no manual registry look-ups.
- **B2B lead enrichment.** Already have Thai company names or IDs? Feed them in to append firmographics, TSIC industry, capital and a revenue signal, so sales can prioritise by size and sector.
- **Supply-chain & vendor intelligence.** Map Thai suppliers and manufacturers by industry (TSIC), capital and financial size, and screen new vendors for solvency before onboarding.
- **Investment & credit research.** Compare **up to 5 years** of DBD financials — assets, revenue, net profit, equity, liabilities — across a set of companies to gauge trajectory and creditworthiness.
- **Market & competitor research.** Pull a list of players by name search or ID, then rank by capital, revenue and board size to size a market and spot the leaders.
- **CRM enrichment & cleanup.** Refresh stale Thai records with current status, capital and directors. Missing fields return `null`, never a fabricated value.

### Performance & throughput

This Actor is built for **depth, not bulk**. Firmographics come from the keyless DBD OpenAPI; the deep tier (financials, directors, shareholders) comes from the encrypted DataWarehouse, which the Actor reaches through a single anonymous browser session and queries **sequentially** — with short, polite pauses — to stay WAF-friendly. So each company is a handful of requests rather than an instant lookup; plan for depth-oriented runs and use `maxResults` to bound them.

Need speed over depth? Turn `includeFinancials` and `includeDirectors` **off**: firmographics-only runs skip the DataWarehouse entirely and can fan out in parallel (`maxConcurrency` up to 4). There are no external API keys, and a datacenter proxy is sufficient — throughput is otherwise bounded only by your Apify plan.

### Integrations

**JavaScript** (`apify-client`):

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('foxlabs/thailand-company-data').call({
  juristicIds: ['0107544000108', '0107542000011'], includeFinancials: true, financialYears: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**Python** (`apify-client`):

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("foxlabs/thailand-company-data").call(run_input={
    "juristicIds": ["0107544000108"], "includeFinancials": True, "financialYears": 5,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name_en"], item.get("financials_text"))
```

Also works with **Make / n8n / Zapier** (Apify app → run this Actor, map the input), scheduled runs and webhooks.

**Use it as an MCP tool (inside any AI agent).** Call this Actor from Claude, Cursor, ChatGPT, LangChain, Make, n8n or Zapier over the **Model Context Protocol**.

- **Hosted (zero setup)** — point your MCP client at `https://mcp.apify.com?tools=foxlabs/thailand-company-data`
- **Self-hosted (stdio clients — Claude Desktop, Cursor, Cline, Continue):**

```json
{
  "mcpServers": {
    "thailand-company-data": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--tools", "foxlabs/thailand-company-data"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}
```

Your agent can then ask *"Pull PTT's directors and 5-year financials"* and get the record back inline.

### Data quality

All fields come **straight from DBD** — never inferred or fabricated; anything DBD doesn't publish for a company is returned as `null`.

- **Identity & firmographics** (name, juristic ID, entity type, status, TSIC, capital, address) come from the OpenAPI and are present for essentially every registered company.
- **English name** and **English TSIC** appear where DBD has registered them — common for large / public companies, sparser for small ones.
- **Financials** are available for companies that have filed statements with DBD; how many years come back depends on what the company has on file (you request up to 5).
- **Directors** are returned for companies whose board DBD exposes on the public profile.
- **Shareholders** are **best-effort and opt-in** — the anonymous DataWarehouse tier frequently withholds named partners, so this field is often `null`; `shareholders_by_nationality` may still summarise foreign ownership when named partners aren't public.

We don't quote fixed fill-rate percentages, because coverage varies by company size and filing history — the honest answer is *"as much as DBD exposes, and `null` otherwise."*

### Pricing

Billed through Apify's usage-based pricing — see the **Pricing** tab on this Actor's page for the current rate. There's an Apify **free tier** so you can evaluate the full output (firmographics + financials + directors) before you scale. DBD access is **keyless** — there's no third-party API or proxy subscription to buy.

### FAQ

**Do I need a DBD account or API key?** No — no key, no login, no account. The Actor uses only DBD's public, anonymous tier.

**Can I look up a company without its juristic ID?** Yes — put company-name tokens in `searchKeywords`. Each is searched on DBD and every match is scraped (up to `maxResults`).

**What is a juristic ID?** The 13-digit registration number DBD assigns each juristic person (e.g. `0107544000108` for PTT). It's the reliable key for an exact match.

**Why are the address, entity type and status in Thai?** DBD publishes them in Thai. `name_en` and `tsic_en` give English where DBD has registered it.

**What are the `fiscal_year_be` numbers?** DBD reports fiscal years in the **Buddhist Era** (AD + 543). The Actor returns both `fiscal_year_be` and the Gregorian `fiscal_year`.

**Why are shareholders often empty?** The anonymous public tier usually withholds named partners, so `shareholders` is best-effort and opt-in; `shareholders_by_nationality` may still be present.

**How many companies can I get in one run?** Up to 100,000 via `maxResults` — but the deep tier is sequential, so large runs are depth-oriented and take time.

**Are the money values raw or formatted?** Both — a raw number for calculations and a compact `฿` string (`T` / `B` / `M`) for display.

**What export formats are available?** JSON, CSV, Excel, or via the Apify API and integrations.

**Can I call it from an AI agent?** Yes — it's exposed over the Apify MCP server (see Integrations).

### Troubleshooting

- **`matched: false` / 0 results** → check the juristic ID is exactly 13 digits, or that your keyword matches DBD's **registered name** (a Thai name or a distinctive Latin token like `PTT` works best; long English phrases may miss).
- **A company has no financials** → it may not have filed statements with DBD, or filed fewer years than you requested. The field is `null`, not an error — never a fabricated figure.
- **The run feels slow** → the encrypted deep tier is sequential by design. For fast, wide runs turn `includeFinancials` and `includeDirectors` off and raise `maxConcurrency`.
- **`shareholders` is empty** → expected on the anonymous tier; the field is best-effort and opt-in.

### Notes, limits & legal (honest)

- **Source.** All data is official, public information from Thailand's **Department of Business Development (DBD)**, Ministry of Commerce — the keyless OpenAPI (`openapi.dbd.go.th`) and the public DBD DataWarehouse. This Actor uses **only the public, anonymous tier** — no login, no account, no private data. Verify DBD's terms of service before commercial redistribution.
- **Personal data / PDPA.** Director and shareholder names are individuals published by DBD itself. If you process this personal data you are responsible for your own legal basis under Thailand's **PDPA** and any other applicable law.
- **Language.** Several fields (`name_th`, `entity_type`, `status`, `address`, `tsic_th`) are returned in Thai exactly as DBD publishes them.
- **Not affiliated** with DBD or the Ministry of Commerce; this Actor redistributes their public data.

### Support

Questions, a field you'd like added, or a custom build? Open the **Issues** tab on this Actor, or email **info@foxlabs.com.tr**. We reply fast.

*If this Actor saves you time, a ⭐ review really helps.*

### Changelog

#### 0.2 — 2026-07-05

- Reworked docs: API quick-start, full field table, corrected sample output, integration snippets (JS / Python / Make / MCP), data-quality, FAQ & troubleshooting.

#### 0.1.1 — 2026-06-27

- **Search by company name** (`searchKeywords`) — find and scrape companies without a juristic ID.
- Shareholders: nationality / foreign-ownership breakdown surfaced even when named partners aren't public on the anonymous tier.
- Reliability: navigation retry against intermittent WAF timeouts.

#### 0.1.0 — 2026-06-27

- Initial release on Apify Store.
- DBD OpenAPI firmographics (keyless): TH/EN name, entity type, status, register date, TSIC, registered & paid-up capital, address.
- DBD DataWarehouse deep tier via anonymous session + AES-GCM decryption: up to 5 years of financial statements, board directors, best-effort shareholders.
- Money formatting: raw number + compact `฿T/B/M`.
- Buddhist Era → Gregorian fiscal-year mapping.
- Datacenter-proxy compatible; deep tier runs sequentially for WAF-friendliness.

***

Part of the **[foXLabs data platform](https://data.foxlabs.com.tr/)** — official public-data company, contact, ownership, financial & AI-search intelligence scrapers. Browse the full suite at **[data.foxlabs.com.tr](https://data.foxlabs.com.tr/)** or **[apify.com/foxlabs](https://apify.com/foxlabs)**.

**Related:** [Korean Company Data](https://apify.com/foxlabs/korean-company-data) · [UK Company Data](https://apify.com/foxlabs/uk-company-data) · [Estonia Company Data](https://apify.com/foxlabs/estonia-company-data)

# Actor input Schema

## `juristicIds` (type: `array`):

Thai juristic registration numbers — one per line, e.g. 0107544000108 (PTT). The 13-digit ID is the reliable key for an exact match.

## `searchKeywords` (type: `array`):

Company name keywords (Thai or English), e.g. "PTT" or "ปตท". Each keyword is searched on DBD and matching companies are scraped — use this when you don't have juristic IDs. Combine with maxResults to cap how many.

## `includeFinancials` (type: `boolean`):

Multi-year financials: total assets, revenue, net profit, equity and balance-sheet items, from the official DBD DataWarehouse.

## `financialYears` (type: `integer`):

How many recent fiscal years of financials to fetch (1–5). More years = slightly higher cost.

## `includeDirectors` (type: `boolean`):

Board directors / committee members with names (Thai + English where available) and nationality.

## `includeShareholders` (type: `boolean`):

Shareholder list + nationality breakdown. Often empty on the public/anonymous tier — leave off unless you specifically need it.

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

Hard cap on the number of companies processed in one run.

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

Parallel firmographic lookups. The encrypted deep tier always runs sequentially (single browser session), so this mainly affects firmographics-only runs.

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

Apify Proxy. Datacenter is enough — DBD's bot protection passes from datacenter IPs (verified).

## Actor input object example

```json
{
  "juristicIds": [
    "0107544000108",
    "0107542000011",
    "0107536000102"
  ],
  "searchKeywords": [],
  "includeFinancials": true,
  "financialYears": 3,
  "includeDirectors": true,
  "includeShareholders": false,
  "maxResults": 100,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "juristicIds": [
        "0107544000108",
        "0107542000011",
        "0107536000102"
    ],
    "searchKeywords": [],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("foxlabs/thailand-company-data").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 = {
    "juristicIds": [
        "0107544000108",
        "0107542000011",
        "0107536000102",
    ],
    "searchKeywords": [],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("foxlabs/thailand-company-data").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 '{
  "juristicIds": [
    "0107544000108",
    "0107542000011",
    "0107536000102"
  ],
  "searchKeywords": [],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call foxlabs/thailand-company-data --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Thailand Company Data — Directors, Financials & Firmographics",
        "description": "Look up any Thai company by 13-digit juristic ID: firmographics, 5-year financial statements (assets, revenue, net profit, equity), directors & shareholders — official DBD data as clean JSON for KYC, due diligence & B2B intelligence.",
        "version": "0.1",
        "x-build-id": "M5qbBWcoZlSHybPZL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/foxlabs~thailand-company-data/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-foxlabs-thailand-company-data",
                "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/foxlabs~thailand-company-data/runs": {
            "post": {
                "operationId": "runs-sync-foxlabs-thailand-company-data",
                "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/foxlabs~thailand-company-data/run-sync": {
            "post": {
                "operationId": "run-sync-foxlabs-thailand-company-data",
                "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": {
                    "juristicIds": {
                        "title": "Juristic IDs (13-digit)",
                        "type": "array",
                        "description": "Thai juristic registration numbers — one per line, e.g. 0107544000108 (PTT). The 13-digit ID is the reliable key for an exact match.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchKeywords": {
                        "title": "…or search by company name",
                        "type": "array",
                        "description": "Company name keywords (Thai or English), e.g. \"PTT\" or \"ปตท\". Each keyword is searched on DBD and matching companies are scraped — use this when you don't have juristic IDs. Combine with maxResults to cap how many.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeFinancials": {
                        "title": "Include financial statements",
                        "type": "boolean",
                        "description": "Multi-year financials: total assets, revenue, net profit, equity and balance-sheet items, from the official DBD DataWarehouse.",
                        "default": true
                    },
                    "financialYears": {
                        "title": "Financial years (most recent N)",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "How many recent fiscal years of financials to fetch (1–5). More years = slightly higher cost.",
                        "default": 3
                    },
                    "includeDirectors": {
                        "title": "Include directors",
                        "type": "boolean",
                        "description": "Board directors / committee members with names (Thai + English where available) and nationality.",
                        "default": true
                    },
                    "includeShareholders": {
                        "title": "Include shareholders (best-effort)",
                        "type": "boolean",
                        "description": "Shareholder list + nationality breakdown. Often empty on the public/anonymous tier — leave off unless you specifically need it.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max companies",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Hard cap on the number of companies processed in one run.",
                        "default": 100
                    },
                    "maxConcurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 4,
                        "type": "integer",
                        "description": "Parallel firmographic lookups. The encrypted deep tier always runs sequentially (single browser session), so this mainly affects firmographics-only runs.",
                        "default": 2
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Apify Proxy. Datacenter is enough — DBD's bot protection passes from datacenter IPs (verified).",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
