Thailand Company Data — Directors, Financials & Firmographics
Pricing
from $25.00 / 1,000 results
Thailand Company Data — Directors, Financials & Firmographics
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.
Pricing
from $25.00 / 1,000 results
Rating
0.0
(0)
Developer
Berkan Kaplan
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
3
Monthly active users
12 days ago
Last modified
Categories
Share
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:
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,addressandtsic_thcome in Thai exactly as DBD publishes them;name_enandtsic_engive 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", whereT= 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):
{"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)
// 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
juristicIdsand 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):
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):
from apify_client import ApifyClientclient = 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):
{"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_nationalitymay 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 likePTTworks 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
includeFinancialsandincludeDirectorsoff and raisemaxConcurrency. shareholdersis 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 — official public-data company, contact, ownership, financial & AI-search intelligence scrapers. Browse the full suite at data.foxlabs.com.tr or apify.com/foxlabs.
Related: Korean Company Data · UK Company Data · Estonia Company Data
