# Singapore Live Weather Station Data Scraper (`singaporedata/singapore-weather-observations`) Actor

Export official Singapore station observations for temperature, rainfall, humidity, wind speed, and wind direction for operations, events, logistics, and analytics.

- **URL**: https://apify.com/singaporedata/singapore-weather-observations.md
- **Developed by:** [Singapore Data](https://apify.com/singaporedata) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## 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

## Singapore Weather Observations

> **Unofficial:** This Actor is independently published by Singapore Data. It is not affiliated with or endorsed by the Singapore Government or any source agency.

Export official Singapore station observations for air temperature, rainfall, relative humidity, wind speed, and wind direction. Use the data in operations dashboards, logistics, outdoor-event planning, facilities monitoring, and research.

### Input

| Field | Purpose | Default |
| --- | --- | --- |
| `metrics` | One or more official weather metrics | Temperature, rainfall, humidity |
| `date` | Optional Singapore date; empty means latest | Empty |
| `stationIds` | Exact stations; empty means all reporting stations | Empty |
| `maxItems` | Exact maximum observations | `250` |
| `maxPages` | One-day pagination safety cap per metric | `4` |
| `failOnNoResults` | Fail when no observations match | `false` |
| `dataGovApiKey` | Optional secret production key | Empty |

```json
{
  "metrics": ["airTemperature", "rainfall", "relativeHumidity"],
  "stationIds": [],
  "maxItems": 250,
  "maxPages": 4
}
```

### Output

Each row contains one metric, station, and timestamp with its numeric value, official unit and reading type, station name, device ID, coordinates when supplied, and source traceability. A station missing from one metric is absent; it is never represented as a zero reading.

### Source and limitations

The Actor uses official NEA real-time APIs published through data.gov.sg. Singapore Data is independent and is not affiliated with or endorsed by NEA or the Singapore Government.

These are station observations, not a forecast, warning service, or quality-controlled climate record. Local surroundings can influence readings, stations can be temporarily absent, and official corrections can occur. Verify safety-critical decisions against official NEA services.

Latest mode uses one request per metric. A date request follows official pagination tokens up to the visible page limit. If a token remains at the cap, `OUTPUT` reports `partial`; the Actor never describes truncated history as complete.

### Empty results and errors

Valid station filters can return `no_results`. Rate limiting and access rejection are `blocked`; invalid input, malformed readings, repeated pagination tokens, and exhausted transport retries are source failures.

### SEO summary

Singapore weather data scraper for official station temperature, rainfall, humidity, wind speed, wind direction, logistics, events, and operations analytics.

# Actor input Schema

## `metrics` (type: `array`):

Official station metrics to collect.

## `date` (type: `string`):

Optional Singapore date in YYYY-MM-DD. Leave empty for the latest snapshot.

## `stationIds` (type: `array`):

Optional exact station IDs. Leave empty to include every reporting station.

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

Exact maximum station-metric-timestamp observations.

## `maxPages` (type: `integer`):

Hard safety cap for one-day pagination. Latest snapshots normally use one page.

## `failOnNoResults` (type: `boolean`):

Fail when valid filters return no observations.

## `dataGovApiKey` (type: `string`):

Optional secret production key for higher official real-time API limits.

## Actor input object example

```json
{
  "metrics": [
    "airTemperature",
    "rainfall",
    "relativeHumidity"
  ],
  "stationIds": [],
  "maxItems": 250,
  "maxPages": 4,
  "failOnNoResults": false
}
```

# Actor output Schema

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

Normalized station-metric observations.

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

Metrics, pages, duplicates, truncation, and termination reason.

# 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("singaporedata/singapore-weather-observations").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("singaporedata/singapore-weather-observations").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 '{}' |
apify call singaporedata/singapore-weather-observations --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,singaporedata/singapore-weather-observations"
        }
    }
}

```

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/Tn0AORTcP4r9yW4x3/builds/21ez9hHztjlt3IitP/openapi.json
