# Taiwan Company Lookup - 統一編號 GCIS Registry Search (`1rrock/taiwan-company-lookup`) Actor

Taiwan company lookup by 統一編號 (tax ID) or name from the official MOEA GCIS open data API (公司登記查詢): status, capital, representative, address, directors, business items, branches, new companies. No API key. $1.50 per 1,000 results.

- **URL**: https://apify.com/1rrock/taiwan-company-lookup.md
- **Developed by:** [1rrock](https://apify.com/1rrock) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

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

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

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

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

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

# README

### What is Taiwan Company Lookup - 統一編號 GCIS Registry Search?

This Actor is a **Taiwan company lookup** and **統一編號查詢 / 公司登記查詢** tool built on the official **GCIS open data API** (經濟部商工行政資料開放平臺) of Taiwan's **Ministry of Economic Affairs (MOEA, 經濟部)**. Look up companies by **Unified Business Number (統一編號, tax ID / UBN)**, search by **company name keyword (公司名稱)**, or pull **newly established companies (新設立公司)** by date and city. You get the official Chinese name, status, authorized and paid-in capital, representative (代表人), address, registration authority, incorporation and last-change dates, plus **directors and supervisors (董監事)**, **business items (營業項目)** and optional **branch offices (分公司)**. Export as JSON, CSV or Excel or use the Apify API.

- ✅ **Official government source**: MOEA company registration (公司登記) and business registration (商業登記) data.
- ✅ **No API key, no captcha, no proxy**: uses the public GCIS API, not the findbiz.nat.gov.tw website.
- ✅ **Bulk 統一編號 check**: paste hundreds of tax IDs; the check digit is validated before querying.
- ✅ **Board and shareholding**: directors, supervisors, represented juristic persons and shares held.
- ✅ **Lead lists**: new companies established in the last N days, filtered by city (臺北市, 新竹, 臺中市 …).
- ✅ **Cheap and predictable**: **$1.50 per 1,000 results**, platform usage included.

### What Taiwanese company data can you get? 資料欄位說明

| Field | 中文 | Meaning |
|---|---|---|
| `taxId` | 統一編號 | 8-digit Unified Business Number (tax ID) |
| `name` | 公司名稱 / 商業名稱 | Registered Chinese name |
| `entityType` | 公司 / 商業 | `company` (公司登記) or `business` (商業登記: 獨資、合夥) |
| `status`, `statusEn`, `statusCode`, `isActive` | 公司狀態 | e.g. 核准設立 (active), 解散 (dissolved), 廢止 (abolished), 破產 (bankrupt) |
| `capitalAuthorized` | 資本總額 | Authorized capital (TWD) |
| `capitalPaidIn` | 實收資本額 | Paid-in capital (TWD; 0 for 有限公司, which only report 資本總額) |
| `parValuePerShare`, `sharesIssued` | 每股金額、已發行股份總數 | Par value and number of shares issued |
| `representative` | 代表人 / 負責人 | Company representative |
| `address` | 公司所在地 | Registered address |
| `registrationAuthority` | 登記機關 | Registering authority (e.g. 臺北市政府, 科學園區管理局) |
| `setupDate` | 核准設立日期 | Incorporation approval date (converted from the ROC calendar) |
| `lastChangeDate` | 最後核准變更日期 | Last approved change |
| `revokeDate`, `suspensionStart`, `suspensionEnd` | 撤銷日期、停業起訖 | Revocation and suspension dates |
| `businessItems`, `businessScopeText` | 所營事業資料 / 營業項目 | Business item codes + descriptions, free-text scope |
| `directors[]` | 董監事資料 | `position` (職稱), `name` (姓名), `representingJuristicPerson` (所代表法人), `shares` (持有股份數) |
| `branches[]` | 分公司資料 | Branch tax ID, name, manager (經理人), status, address, dates |
| `source`, `sourceUrl`, `license`, `attribution`, `retrievedAt` | 資料來源與授權 | Source link and the required attribution (顯名聲明) |

No personal identification numbers are returned; the GCIS open data only contains names of directors and representatives, as shown in the public registry.

### Use cases for Taiwan company lookup

- 🔎 **KYB and supplier verification in Taiwan**: confirm that a vendor's 統一編號 exists, is 核准設立, and who the representative and directors are.
- 🏭 **Supply-chain due diligence**: check capital, board composition, juristic-person shareholders and business scope of Taiwanese suppliers.
- 📈 **B2B lead generation**: new companies (新設立公司) by city every day or week.
- 🧾 **Invoice and ERP master data**: validate 統一編號 check digits and normalize company names for e-invoicing (電子發票).
- 🗂️ **CRM enrichment**: add official Chinese names, addresses and capital to Taiwanese accounts.

### How to look up Taiwanese companies 如何查詢

1. Click **Try for free** (or **Start**).
2. Paste **統一編號 / Tax IDs**, one per line, and/or type a **Company name keyword** such as `半導體` or `鴻海`.
3. For lead lists, set **Established in the last N days** and optionally a **City filter** (e.g. `臺北市`).
4. Choose details: **directors (董監事)**, **business items (營業項目)**, **branches (分公司)**.
5. Set **Max results**, click **Start**, then open **Output** or export **JSON, CSV, Excel, XML or HTML**.

With empty input the Actor looks up three demo companies: TSMC (台灣積體電路製造), Hon Hai / Foxconn (鴻海精密工業) and MediaTek (聯發科技).

#### Input example: bulk 統一編號 lookup

```json
{
  "taxIds": ["22099131", "04541302", "84149961"],
  "includeDirectors": true,
  "includeBusinessItems": true
}
```

#### Input example: new companies in Taipei (last 7 days)

```json
{
  "establishedWithinDays": 7,
  "cities": ["臺北市"],
  "includeDirectors": false,
  "maxItems": 200
}
```

| Field | Description |
|-------|-------------|
| `taxIds` | 8-digit 統一編號, one per line (7-digit numbers get the leading zero back). |
| `companyName` | Keyword contained in the Chinese company name (台 and 臺 are different characters in the registry). |
| `status` | `active` (default) or `all` for name search and new-company lists. |
| `cities` | Address must contain one of these (台/臺 normalized). |
| `establishedWithinDays`, `establishedFrom`, `establishedTo` | New companies by incorporation approval date (max 366 days per run). |
| `includeDirectors`, `includeBusinessItems`, `includeBranches`, `maxBranches` | Extra details per company. |
| `maxItems` | Max records per run (default 100, up to 10,000). |
| `delaySeconds` | Delay between API calls (default 0.3 s). |

#### Output example

```json
{
  "ok": true,
  "taxId": "22099131",
  "entityType": "company",
  "name": "台灣積體電路製造股份有限公司",
  "status": "核准設立",
  "statusEn": "Active (approved)",
  "isActive": true,
  "capitalAuthorized": 280500000000,
  "capitalPaidIn": 259323700670,
  "parValuePerShare": 10,
  "sharesIssued": 25932370067,
  "representative": "魏哲家",
  "address": "新竹科學園區新竹市力行六路8號",
  "registrationAuthority": "國家科學及技術委員會新竹科學園區管理局",
  "setupDate": "1987-02-21",
  "lastChangeDate": "2026-08-21",
  "businessItems": [{"code": "CC01080", "description": "電子零組件製造業"}],
  "directors": [
    {"position": "董事長", "name": "魏哲家", "representingJuristicPerson": null, "shares": 7452349},
    {"position": "董事", "name": "葉俊顯", "representingJuristicPerson": "行政院國家發展基金管理會", "shares": 1653709980}
  ],
  "directorCount": 10,
  "method": "taxId",
  "source": "gcis_moea_open_data",
  "license": "政府資料開放授權條款－第1版 (Open Government Data License, version 1.0), compatible with CC BY 4.0",
  "retrievedAt": "2026-10-07T08:00:00+00:00"
}
```

Invalid or unknown numbers produce an item with `"ok": false` and an `error`: `invalid_tax_id_checksum`, `invalid_tax_id_format`, `branch_office` (the number belongs to a 分公司) or `not_found`. If GCIS does not answer after several retries (`api_error`), that number is **not** written to the dataset and not charged; it is listed in the run summary instead (see below).

### How much does Taiwan company data cost?

This Actor uses **pay-per-result** pricing: **$1.50 per 1,000 results** ($0.0015 per company), with Apify platform usage already included. Apify also charges a tiny Actor start fee of $0.00005 per run per GB of memory.

- **What counts as a result?** Every dataset item: one per company found, plus one per invalid / not-found tax ID.
- **Temporary failures are not charged.** If GCIS is temporarily unavailable (network errors, timeouts, HTTP 5xx, quota messages), the affected tax IDs are not written to the dataset and nothing is charged for them. They are listed under `failedLookups` in the run summary (key-value store record `OUTPUT`, linked as *Run summary* in the run's Output tab) so you can run them again later. After 3 such failures in a row the run stops; if nothing billable was found, it is marked as failed.
- **Directors, business items and branches are included**: they are nested in the company record (they only make the run slower).
- **Control your spend** with `maxItems` (default 100).
- **How much fits in one run?** At the defaults a run outputs at most **100** records; extra tax IDs are skipped with a warning. Raise `maxItems` (up to 10,000) for bigger jobs. Each company takes about 1–3 s with directors and business items on, so one run with the default 30-minute timeout handles roughly **500–1,000 companies**. For more, turn off the extra details, raise the run timeout, or split the list into several runs.
- **Examples:** 1,000 companies ≈ $1.50. The default input (3 companies) ≈ $0.005.
- **Free plan:** Apify's free plan includes $5 of monthly usage, which covers about 3,000 companies.

### Use the Taiwan company API from Python, JavaScript or no-code tools

**Python** ([apify-client](https://docs.apify.com/api/client/python)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("1rrock/taiwan-company-lookup").call(
    run_input={"taxIds": ["22099131", "04541302", "84149961"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("taxId"), item.get("name"), item.get("status"), item.get("capitalPaidIn"))
```

**JavaScript / Node.js** ([apify-client](https://docs.apify.com/api/client/js)):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('1rrock/taiwan-company-lookup').call({
    companyName: '半導體', cities: ['新竹'], maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((i) => [i.taxId, i.name, i.representative]));
```

**HTTP (one call, returns the results):**

```bash
curl -X POST "https://api.apify.com/v2/acts/1rrock~taiwan-company-lookup/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"taxIds": ["22099131"]}'
```

**No-code:** connect the Actor to [Zapier](https://docs.apify.com/platform/integrations/zapier), [Make](https://docs.apify.com/platform/integrations/make), Google Sheets (with [Google Sheets Import & Export](https://apify.com/lukaskrivka/google-sheets)), webhooks and [other integrations](https://docs.apify.com/platform/integrations). Run it on a [schedule](https://docs.apify.com/platform/schedules) for a daily new-companies feed, or let AI agents call it through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

### FAQ

#### Is it legal to use GCIS company data commercially? 可以商業使用嗎？

Yes. GCIS publishes the data under the **政府資料開放授權條款－第1版 (Open Government Data License, version 1.0)**, which allows any use, including commercial, without a fee, and is compatible with CC BY 4.0. You must keep the attribution statement (顯名聲明); every record carries it in `attribution`.

#### How is the 統一編號 check digit validated?

Weights 1-2-1-2-1-2-4-1 are applied, the digits of each product are summed, and the total must be divisible by 5 (the Ministry of Finance rule since 2023, compatible with older numbers). If the 7th digit is 7, the special case is handled. Invalid numbers are reported without calling the API.

#### Does it include sole proprietorships (商業登記)?

Yes, for tax ID lookups: if a number is not a company, the Actor checks the business registry (獨資、合夥) and returns name, status, organization type, address, authority and business items. Name search and new-company lists cover companies (公司) only.

#### How fresh is the data?

Results come live from the GCIS API, which follows MOEA's registry updates (new incorporations appear the same or next day).

#### What are the limits?

- The name keyword must match the Chinese registered name; English names are not part of the open API.
- Name search returns active companies by default; set `status` to `all` to include dissolved ones.
- Name searches and new-company lists fetch details per company, so they take about 1–3 s per company with directors and business items on (roughly 500–1,000 companies within the default 30-minute timeout). Turn off the extra details or raise the run timeout for bigger jobs.
- Financial statements and shareholder registers are not part of the open data.

#### Fair use

The Actor calls the GCIS API sequentially with a polite delay and backs off on errors or quota messages. Please keep runs reasonable; GCIS applies daily usage limits.

### Data source and license 資料來源與授權

- Source: **經濟部商業發展署 商工行政資料開放平臺 (GCIS open data platform)**, https://data.gcis.nat.gov.tw/ — 公司登記基本資料、公司登記董監事資料、公司登記關鍵字查詢、公司資料設立查詢、統編查分公司資料、商業登記基本資料.
- License: [政府資料開放授權條款－第1版 (Open Government Data License, version 1.0)](https://data.gov.tw/license), compatible with CC BY 4.0.
- 顯名聲明 / Attribution: 經濟部商業發展署 商工行政資料開放平臺 公司登記/商業登記資料。此開放資料依政府資料開放授權條款 (Open Government Data License) 進行公眾釋出，使用者於遵守本條款各項規定之前提下，得利用之。Field names were translated and dates converted from the ROC calendar by this Actor.
- This Actor is not affiliated with or endorsed by the Ministry of Economic Affairs.

### Other actors by 1rrock

Official open-data company lookups, all at $1.50 per 1,000 results:

- 🇯🇵 [Japan Company Data API - gBizINFO Corporate Lookup](https://apify.com/1rrock/japan-gbizinfo-lookup): Japanese companies by 法人番号 or name with capital, employees and subsidies.
- 🇯🇵 [Japan Invoice Number Checker - T-Number Lookup](https://apify.com/1rrock/japan-invoice-lookup): bulk-verify Japanese qualified invoice registration numbers.
- 🇨🇴 [Colombia NIT Lookup - RUES Company Registry Search](https://apify.com/1rrock/colombia-nit-lookup): Colombian companies by NIT, new-company lead lists.
- 🇧🇷 [Brazil CNPJ Lookup - Receita Federal Company Data](https://apify.com/1rrock/brazil-cnpj-lookup): bulk consulta CNPJ with razão social, situação cadastral, CNAE and QSA.
- 🇲🇽 [Mexico Business Directory - INEGI DENUE Lookup](https://apify.com/1rrock/mexico-denue-lookup): search 6M+ Mexican establishments by name, keyword, state or GPS radius.

# Actor input Schema

## `taxIds` (type: `array`):

8-digit Taiwan Unified Business Numbers (統一編號), one per line. The check digit is validated before querying. Companies (公司) and sole proprietorships/partnerships (商業) are supported. If this, the name search and the date filters are empty, three demo companies are looked up.

## `companyName` (type: `string`):

Keyword contained in the registered Chinese company name, e.g. <code>半導體</code>, <code>台積電</code> or <code>鴻海</code>. Note that 台 and 臺 are different characters in the registry. Combined with the establishment-date filters, it filters the new-companies list instead.

## `status` (type: `string`):

Status filter for name search and new-company lists. Tax ID lookups always return the company whatever its status.

## `cities` (type: `array`):

Only companies whose registered address contains one of these, e.g. <code>臺北市</code>, <code>新竹</code>, <code>臺中市</code>. 台 and 臺 are treated as the same.

## `establishedWithinDays` (type: `integer`):

List companies whose incorporation was approved (核准設立日期) in the last N days, newest first. Great for scheduled new-company lead feeds.

## `establishedFrom` (type: `string`):

Incorporation approval date from (inclusive), YYYY-MM-DD. Max range 366 days.

## `establishedTo` (type: `string`):

Incorporation approval date to (inclusive), YYYY-MM-DD. Defaults to today.

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

Add the board: position, name, represented juristic person and shareholding. One extra API call per company.

## `includeBusinessItems` (type: `boolean`):

Add registered business item codes and descriptions plus the free-text business scope. One extra API call per company.

## `includeBranches` (type: `boolean`):

Add branch offices with their own tax ID, manager, status and address. One extra API call per company.

## `maxBranches` (type: `integer`):

Cap on branch offices returned per company.

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

Maximum number of records per run. This is your cost cap: each record is one result.

## `delaySeconds` (type: `number`):

Polite throttle between GCIS API calls.

## Actor input object example

```json
{
  "taxIds": [
    "22099131",
    "04541302",
    "84149961"
  ],
  "status": "active",
  "includeDirectors": true,
  "includeBusinessItems": true,
  "includeBranches": false,
  "maxBranches": 50,
  "maxItems": 100,
  "delaySeconds": 0.3
}
```

# Actor output Schema

## `companies` (type: `string`):

No description

## `runSummary` (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 = {
    "taxIds": [
        "22099131",
        "04541302",
        "84149961"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("1rrock/taiwan-company-lookup").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 = { "taxIds": [
        "22099131",
        "04541302",
        "84149961",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("1rrock/taiwan-company-lookup").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "taxIds": [
    "22099131",
    "04541302",
    "84149961"
  ]
}' |
apify call 1rrock/taiwan-company-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,1rrock/taiwan-company-lookup"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Y4Cvv9F4WHWWUOjPy/builds/OZt7EYZO1TpPAMkOW/openapi.json
