# Thailand News Monitor — Thai PBS & THE STANDARD (`mai_amm/thailand-news-monitor`) Actor

Monitor and search Thai news from Thai PBS and THE STANDARD by topic, keyword, and date range.

- **URL**: https://apify.com/mai\_amm/thailand-news-monitor.md
- **Developed by:** [wiseld\_squid](https://apify.com/mai_amm) (community)
- **Categories:** News, SEO tools, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Thailand News Monitor

Collect current and historical Thai news from **Thai PBS** and **THE STANDARD** in one clean dataset.

Use it to:

- track a company, person, policy, product, or issue;
- follow politics, the economy, business, society, technology, world news, or the environment;
- create daily news feeds and alerts;
- compare coverage across publishers;
- export structured news data to JSON, CSV, Excel, Google Sheets, Make, Zapier, or your own workflow.

### Input

| Field | Description |
| --- | --- |
| `sources` | Thai PBS, THE STANDARD, or both |
| `topics` | Optional topic filter; empty includes every supported news topic |
| `keywords` | Thai or English search words; empty returns recent news |
| `keywordMatch` | Match any keyword or require all keywords |
| `excludeKeywords` | Remove unwanted matches |
| `fromDate` / `toDate` | Optional date range |
| `sortBy` | Newest, oldest, or most relevant |
| `maxItems` | Total records to save across all selected sources |
| `includeImages` | Include the main image URL |
| `includeTags` | Include publisher tags |

Example:

```json
{
  "sources": ["thaiPbs", "theStandard"],
  "topics": ["politics", "economy"],
  "keywords": ["ค่าแรง", "เศรษฐกิจ"],
  "keywordMatch": "any",
  "excludeKeywords": [],
  "fromDate": "2026-07-01",
  "toDate": "2026-07-29",
  "sortBy": "newest",
  "maxItems": 300,
  "includeImages": true,
  "includeTags": true
}
```

### Output

Each dataset item contains:

- article and source IDs;
- source name;
- headline and summary;
- normalized topic and original publisher category;
- tags and author;
- publication and update timestamps;
- article and image URLs;
- matched keywords and relevance score;
- video and sponsored-content flags;
- collection timestamp.

```json
{
  "articleId": "508813",
  "source": "thaiPbs",
  "sourceName": "Thai PBS",
  "title": "Example headline",
  "summary": "Short article summary",
  "category": "world",
  "categoryOriginal": "ต่างประเทศ",
  "tags": ["เมียนมา"],
  "author": null,
  "publishedAt": "2026-07-28T12:53:31.000Z",
  "modifiedAt": "2026-07-28T13:31:02.000Z",
  "url": "https://www.thaipbs.or.th/news/content/508813",
  "imageUrl": "https://example.com/image.jpg",
  "matchedKeywords": ["เมียนมา"],
  "relevanceScore": 1,
  "isVideo": false,
  "isSponsored": false,
  "scrapedAt": "2026-07-29T03:00:00.000Z"
}
```

`maxItems` is the combined limit, not a separate limit for each source. Results are merged, de-duplicated, sorted, and then limited.

If no start date is provided, the search covers up to the latest 90 days. A custom date range can cover up to 366 days. A narrow query can return fewer records than requested when fewer matching articles exist.

### Tips

- Leave `keywords` and `topics` empty for a broad latest-news feed.
- Use several keywords with **Any keyword** for monitoring.
- Use **All keywords** for a narrow search.
- Add ambiguous words to `excludeKeywords` to reduce noise.
- Use one source at a time when you need publisher-specific exports.

# Actor input Schema

## `sources` (type: `array`):

Select one source or combine both in a single dataset.

## `topics` (type: `array`):

Leave empty to include all supported news topics.

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

Thai or English words to find in headlines and summaries. Leave empty for the latest news.

## `keywordMatch` (type: `string`):

Match at least one keyword or require every keyword.

## `excludeKeywords` (type: `array`):

Remove articles containing any of these words.

## `fromDate` (type: `string`):

Optional start date. If empty, the Actor searches up to 90 days back.

## `toDate` (type: `string`):

Optional end date. Defaults to today in Thailand.

## `sortBy` (type: `string`):

Order the combined results from both sources.

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

Total articles across all selected sources. Free users receive up to 20 records per run; users on a paid Apify plan can request any number, subject to available matching news and run time.

## `includeImages` (type: `boolean`):

Add the main image URL when available.

## `includeTags` (type: `boolean`):

Add publisher tags when available.

## Actor input object example

```json
{
  "sources": [
    "thaiPbs",
    "theStandard"
  ],
  "topics": [],
  "keywords": [],
  "keywordMatch": "any",
  "excludeKeywords": [],
  "sortBy": "newest",
  "maxItems": 100,
  "includeImages": true,
  "includeTags": true
}
```

# Actor output Schema

## `results` (type: `string`):

Normalized articles from all selected sources.

## `summary` (type: `string`):

Input, source status, result counts, and date coverage.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("mai_amm/thailand-news-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("mai_amm/thailand-news-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 '{}' |
apify call mai_amm/thailand-news-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/l812kId9xfYltDE8J/builds/ehbbwEwXGgwSinT8H/openapi.json
