# Taiwan Government Tender Monitor (`chamarix/taiwan-tender-monitor`) Actor

Monitor public procurement tenders from Taiwan's Government e-Procurement System. Filter by keyword, agency, date range, and tender type. Structured JSON for journalism, research, and business intelligence.

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

## Pricing

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

## Taiwan Government Tender Monitor

Monitor **public procurement tenders** from Taiwan's Government e-Procurement System (政府電子採購網) — the official record of every contract the Taiwan government opens, awards, or cancels. Filter by keyword, tender type, agency, and date range.

### Why this data matters

Every year, Taiwan's government and public agencies issue **hundreds of thousands of tenders** covering everything from IT systems and medical equipment to construction and consulting services. This data is publicly available but buried in a clunky search interface. This Actor makes it queryable.

### Who this is for

| Use case | User |
|----------|------|
| **B2G sales intelligence** | Vendors, consultancies tracking new tender opportunities in their category |
| **Investigative journalism** | Reporters investigating procurement anomalies, conflicts of interest |
| **Market sizing research** | Analysts estimating total addressable market for government IT/services |
| **Competitive intelligence** | Monitoring which companies win which tenders across agencies |
| **Academic research** | Public administration, procurement policy, anti-corruption studies |
| **Legal due diligence** | Law firms tracking public-sector client activity |

### Tender types

Taiwan's procurement system has four main notice types — you can filter for any subset:

| Type (Chinese) | Meaning | Typical use |
|----------------|---------|-------------|
| **招標公告** | Open call | Finding new opportunities to bid |
| **決標公告** | Award notice | Tracking competitor wins & contract values |
| **無法決標公告** | Failed tender | Identifying over-priced or ill-specified tenders |
| **定期彙送** | Batch notice | Routine procurement disclosures |

### Input parameters

```json
{
  "startDate": "2026-04-01",
  "endDate": "2026-04-04",
  "keyword": "資訊系統",
  "tenderTypes": ["招標公告"],
  "unitIdPrefix": "",
  "includeDetail": true,
  "maxResults": 500
}
````

| Field | Type | Description |
|-------|------|-------------|
| `startDate` | string | YYYY-MM-DD (required) |
| `endDate` | string | YYYY-MM-DD, inclusive. Empty = single day |
| `keyword` | string | Filter titles containing this term (e.g., "資訊" for IT) |
| `tenderTypes` | array | Filter by type. Empty = all types |
| `unitIdPrefix` | string | Agency ID prefix filter (e.g., `3.92` for specific ministry chain) |
| `includeDetail` | bool | Fetch full details (budget, deadlines, contact info). Slower but richer |
| `maxResults` | int | Cap on output records (default 500) |

### Output example

**Without `includeDetail`:**

```json
{
  "date": "2026-03-31",
  "job_number": "HCVS1150311",
  "unit_id": "3.92.5.11",
  "unit_name": "新竹市立光武國中",
  "tender_type": "決標公告",
  "title": "115年度友善提供多元生理用品採購",
  "company_ids": ["12070727", "24594066"],
  "company_names": ["旺泉食品行", "康興醫療器材有限公司"],
  "url": "/index/case/3.92.5.11/HCVS1150311/20260331/aaa-71144888"
}
```

**With `includeDetail: true`** adds:

```json
{
  "detail": {
    "detail_type": "決標公告",
    "案號": "HCVS1150311",
    "標案名稱": "115年度友善提供多元生理用品採購",
    "預算金額": "850000",
    "截止投標": "2026/03/20 17:00",
    "開標時間": "2026/03/21 10:00",
    "公告日": "2026/03/05",
    "招標方式": "公開招標",
    "機關名稱": "新竹市立光武國中",
    "機關地址": "新竹市東區光復路二段370號",
    "raw_detail": { ... all 100+ raw fields ... }
  }
}
```

### Pricing

**Pay-per-result**: $2.00 per 1,000 records. Higher than other scrapers because:

- Each record represents high-value B2B intelligence
- Detail fetching requires 1 additional API call per record

Typical usage:

- 1 day of IT-related tenders (~30 records): **~$0.06**
- 1 month of all tenders matching a keyword: **~$1-3**
- Quarterly competitive intelligence report: **~$5-15**

### Common queries

**"Find new IT system tenders this week"**

```json
{"startDate": "2026-03-29", "endDate": "2026-04-04",
 "keyword": "資訊系統", "tenderTypes": ["招標公告"]}
```

**"What did my competitor win last month?"**

```json
{"startDate": "2026-03-01", "endDate": "2026-03-31",
 "tenderTypes": ["決標公告"], "keyword": "公司名稱"}
```

**"All failed tenders in last quarter (pricing/spec issues)"**

```json
{"startDate": "2026-01-01", "endDate": "2026-03-31",
 "tenderTypes": ["無法決標公告"]}
```

### Data source & legal

- **Source**: [政府電子採購網](https://web.pcc.gov.tw/) via the open-source [g0v PCC API](https://pcc.g0v.ronny.tw/) (community-maintained mirror)
- **Original data license**: Public records under Taiwan's Freedom of Information Act
- **Commercial use**: Taiwan's e-procurement site permits use for **reporting, commentary, teaching, research, or other legitimate purposes** with attribution. Please credit "資料來源：政府電子採購網" in published outputs.
- For heavy commercial/redistribution use, consider the official [Open Data dataset](http://web.pcc.gov.tw/tpsreport/transfer/dataTransfer.do?method=getOkfnOpenDataXml)

### Tips

- Start with `includeDetail: false` to explore tender titles, then re-run with detail for only the ones you need
- Use `unitIdPrefix` for ministry-level filtering (e.g., `3.1` for Executive Yuan agencies)
- Combine with a calendar: run weekly on Monday morning for fresh opportunities

### Keywords

Taiwan government tenders, Taiwan procurement data, 政府電子採購網 API, 招標公告, 決標公告, Taiwan B2G intelligence, public sector RFP Taiwan, procurement monitoring API, Taiwan public contracts, 標案監控, 政府標案 API, government contract tracking Taiwan, competitor win tracking, Taiwan open data

# Actor input Schema

## `startDate` (type: `string`):

Start date in YYYY-MM-DD format.

## `endDate` (type: `string`):

End date in YYYY-MM-DD format (inclusive). Leave empty for single day.

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

Only include tenders whose title contains this keyword. Leave empty for no filter.

## `tenderTypes` (type: `array`):

Filter by tender type. Options: 招標公告 (open call), 決標公告 (award), 無法決標公告 (failed), 定期彙送 (batch). Leave empty for all types.

## `unitIdPrefix` (type: `string`):

Filter by agency unit\_id prefix (e.g., '3.92' for specific ministry). Leave empty for all agencies.

## `includeDetail` (type: `boolean`):

Fetch full tender details (amounts, deadlines, specifications). Adds 1 API call per tender. Slower but richer data.

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

Maximum number of records to return. Set 0 for unlimited.

## Actor input object example

```json
{
  "startDate": "2026-04-01",
  "endDate": "",
  "keyword": "",
  "tenderTypes": [
    "招標公告"
  ],
  "unitIdPrefix": "",
  "includeDetail": false,
  "maxResults": 500
}
```

# 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 = {
    "startDate": "2026-04-01",
    "tenderTypes": [
        "招標公告"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("chamarix/taiwan-tender-monitor").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 = {
    "startDate": "2026-04-01",
    "tenderTypes": ["招標公告"],
}

# Run the Actor and wait for it to finish
run = client.actor("chamarix/taiwan-tender-monitor").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 '{
  "startDate": "2026-04-01",
  "tenderTypes": [
    "招標公告"
  ]
}' |
apify call chamarix/taiwan-tender-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Taiwan Government Tender Monitor",
        "description": "Monitor public procurement tenders from Taiwan's Government e-Procurement System. Filter by keyword, agency, date range, and tender type. Structured JSON for journalism, research, and business intelligence.",
        "version": "0.1",
        "x-build-id": "3Xo7Y5bnwFlJ6v6fB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/chamarix~taiwan-tender-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-chamarix-taiwan-tender-monitor",
                "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/chamarix~taiwan-tender-monitor/runs": {
            "post": {
                "operationId": "runs-sync-chamarix-taiwan-tender-monitor",
                "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/chamarix~taiwan-tender-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-chamarix-taiwan-tender-monitor",
                "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",
                "required": [
                    "startDate"
                ],
                "properties": {
                    "startDate": {
                        "title": "Start date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Start date in YYYY-MM-DD format.",
                        "default": "2026-04-01"
                    },
                    "endDate": {
                        "title": "End date",
                        "pattern": "^(|\\d{4}-\\d{2}-\\d{2})$",
                        "type": "string",
                        "description": "End date in YYYY-MM-DD format (inclusive). Leave empty for single day.",
                        "default": ""
                    },
                    "keyword": {
                        "title": "Title keyword filter",
                        "type": "string",
                        "description": "Only include tenders whose title contains this keyword. Leave empty for no filter.",
                        "default": ""
                    },
                    "tenderTypes": {
                        "title": "Tender types",
                        "type": "array",
                        "description": "Filter by tender type. Options: 招標公告 (open call), 決標公告 (award), 無法決標公告 (failed), 定期彙送 (batch). Leave empty for all types.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "unitIdPrefix": {
                        "title": "Agency ID prefix",
                        "type": "string",
                        "description": "Filter by agency unit_id prefix (e.g., '3.92' for specific ministry). Leave empty for all agencies.",
                        "default": ""
                    },
                    "includeDetail": {
                        "title": "Include full tender detail",
                        "type": "boolean",
                        "description": "Fetch full tender details (amounts, deadlines, specifications). Adds 1 API call per tender. Slower but richer data.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of records to return. Set 0 for unlimited.",
                        "default": 500
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
