# Mobile01 爬蟲｜看板主題、作者、回覆數、發文時間一鍵匯出（免 API） (`claude_code_reviewer/mobile01-scraper`) Actor

免登入抓 Mobile01 看板主題列表：標題、作者、發佈時間、最後回覆時間與回覆數，輸出 JSON／CSV／Excel。3C／汽車社群輿情、熱門話題追蹤、選題必備。

- **URL**: https://apify.com/claude\_code\_reviewer/mobile01-scraper.md
- **Developed by:** [Chad](https://apify.com/claude_code_reviewer) (community)
- **Categories:** SEO tools, Social media, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 看板主題

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

## Mobile01 爬蟲｜看板主題列表、作者、回覆數、發文時間一鍵下載（免 API）

抓 Mobile01（mobile01.com）看板主題列表：標題、作者、發佈時間、最後回覆時間、回覆數，結構化輸出，**不需要帳號、不需要 API Key**。CheerioCrawler 純 HTML，不用 Playwright，成本極低。

> **v1.0 只有看板列表模式。** 單篇主題全文與回覆（開箱心得、車主回饋內文）計畫於 v1.1 推出——目前 Mobile01 的主題內頁（`topicdetail.php`）有 Akamai Bot Manager 防護，需要瀏覽器才能穩定通過，正在評估方案，暫不上線。

---

### 輸出欄位

#### 看板主題列表模式（`forum`）

| 欄位 | 型別 | 說明 | 有值? |
|---|---|---|---|
| `topic_id` | string\|null | 主題 ID（如 `7276326`） | 一定有（非有效列才 null，該列不會被輸出） |
| `forum_id` | string\|null | 看板 ID（如 `291`） | 一定有 |
| `forum_name` | string\|null | 看板名稱（動態從頁面標題取得，如 `投資理財綜合`） | 一定有 |
| `title` | string\|null | 主題標題 | 一定有 |
| `author` | string\|null | 原PO 帳號 | 通常有 |
| `reply_count` | number\|null | 回應數 | 通常有 |
| `view_count` | null | 瀏覽數——**列表頁沒有這個欄位，固定為 `null`** | 一定 null |
| `created_at` | string\|null | 發佈時間（ISO 8601，`+08:00`） | 通常有 |
| `last_reply_at` | string\|null | 最後回覆時間（ISO 8601，`+08:00`） | 通常有 |
| `last_reply_author` | string\|null | 最後回覆者帳號 | 通常有 |
| `topic_url` | string | 完整主題網址 | 一定有 |
| `source_mode` | string | `"forum"` | 一定有 |
| `source_query` | string | 查詢的看板 ID | 一定有 |
| `scraped_at` | string | 抓取時間（ISO 8601） | 一定有 |

> **誠實聲明**：Mobile01 看板列表頁本身只有 4 欄（主題、發佈時間、最後回覆時間、回應），**沒有瀏覽數／人氣欄位**，所以 `view_count` 一律輸出 `null`，不會用其他數字冒充。

---

### 模式說明

| mode | 輸入欄位 | 產出 | 計費事件 |
|---|---|---|---|
| `forum` | `forumIds[]` 看板 ID | 看板主題列表 | `search-listing` 每筆 $0.002 |

---

### 輸入設定

| 欄位 | 型別 | 說明 | 預設值 |
|---|---|---|---|
| `mode` | `"forum"` | v1.0 只支援 `forum` | `forum` |
| `forumIds` | string[] | 看板數字 ID，例如 `291`（投資理財綜合）、`638`（台灣新聞） | — |
| `keywords` | string[] | 標題關鍵字過濾（選填，含任一關鍵字即保留） | — |
| `dateFrom` | string | 起始日期過濾（選填），格式 `YYYY-MM-DD` 或 `N days ago` / `N天前` | — |
| `dateTo` | string | 結束日期過濾（選填），格式同上 | — |
| `bulkInput` | string | 批量貼入：一行一個看板 ID，自動併入 `forumIds` | — |
| `maxItems` | integer | 每個看板最多抓幾則主題 | `50`（上限 500） |
| `proxyConfiguration` | object | Proxy 設定（通常不需要，Mobile01 列表頁直連友善） | 不使用 |

---

### JSON 輸入範例

#### 範例 1：抓「投資理財綜合」板最新 20 則

```json
{
    "mode": "forum",
    "forumIds": ["291"],
    "maxItems": 20
}
````

#### 範例 2：同時抓多個看板 + 關鍵字過濾

```json
{
    "mode": "forum",
    "forumIds": ["291", "638"],
    "keywords": ["台股", "黃金"],
    "maxItems": 50
}
```

#### 範例 3：批量貼入看板 ID + 日期過濾

```json
{
    "mode": "forum",
    "bulkInput": "291\n638\n775",
    "dateFrom": "2026-06-01",
    "maxItems": 100
}
```

***

### 注意事項

1. **只有列表資料**：v1.0 抓的是看板主題列表（標題/作者/時間/回覆數），**不含主題內文與回覆全文**。內文/回覆是 v1.1（待 Akamai 防護方案確認）。
2. **`view_count` 一律 null**：Mobile01 看板列表頁沒有瀏覽數欄位，本 actor 不會用其他數字冒充。
3. **翻頁行為**：從第 1 頁往後翻，達到 `maxItems` 或連續 5 頁無新資料時停止（避免空轉燒錢）。
4. **置頂主題去重**：置頂主題會出現在每一頁列表中，本 actor 用 `topic_id` 在同一次執行內去重，不會重複計費。
5. **看板 ID**：可在 Mobile01 網址列 `topiclist.php?f=` 後面的數字找到；也可直接貼完整網址，會自動擷取 ID。
6. **贊助/推廣列**：少數列的主題連結是 `redir.php?url=...` 轉址包裝（非直接 `topicdetail.php`），本 actor 已解碼處理，正常輸出 `topic_id`/`topic_url`。
7. **抓取速度**：每個 domain 最多 5 並發，Mobile01 列表頁為靜態 HTML，一般不需 proxy。

***

### FAQ

**Q: 可以抓單篇主題的內文和回覆嗎？**
v1.0 還不行。Mobile01 主題內頁（`topicdetail.php`）有 Akamai Bot Manager 防護，需要瀏覽器才能穩定通過——依 CLAUDE.md 成本鐵律本專案不用 Playwright，正在評估方案，計畫於 v1.1 推出。

**Q: `view_count` 為什麼永遠是 null？**
Mobile01 看板列表頁本身就沒有瀏覽數欄位（只有主題、發佈時間、最後回覆時間、回應數 4 欄），無法在列表模式取得，所以誠實輸出 `null`，不猜測。

**Q: 看板 ID 要去哪裡找？**
打開任一 Mobile01 看板頁面，網址列 `topiclist.php?f=` 後面的數字就是看板 ID（如 `f=291`）。也可以直接把整個網址貼進 `forumIds`，本 actor 會自動擷取。

**Q: 可以抓多遠的舊主題？**
可以往前翻頁，直到 `maxItems` 上限（最高 500）或連續 5 頁無新資料為止。置頂主題不會重複計費。

***

### 免責聲明

本 actor 僅用於個人研究、學術分析、市場調查、品牌監控等合法用途。使用時請遵守 Mobile01 服務條款（mobile01.com）及台灣相關法規。請勿大量爬取、勿商業轉售原始資料。作者不對任何因使用本工具造成的損害承擔責任。

***

Mobile01 爬蟲、Mobile01 論壇、看板主題、論壇監控、台灣論壇數據、輿情

# Actor input Schema

## `mode` (type: `string`):

要抓什麼？v1.0 只支援看板主題列表。

## `forumIds` (type: `array`):

看板（討論區）數字 ID，例如：291（投資理財綜合）、638（台灣新聞）。可在 Mobile01 看板網址 topiclist.php?f= 後面找到。

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

（選填）只保留標題包含任一關鍵字的主題。留空表示不過濾。

## `dateFrom` (type: `string`):

（選填）只保留發佈時間在此日期（含）之後的主題。格式 YYYY-MM-DD，或「N days ago」/「N天前」。

## `dateTo` (type: `string`):

（選填）只保留發佈時間在此日期（含）之前的主題。格式 YYYY-MM-DD，或「N days ago」/「N天前」。

## `bulkInput` (type: `string`):

**一行一個**，按 Enter 換行，貼看板 ID，執行時自動併入上面的看板 ID 欄位。

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

每個看板最多抓幾則主題。越多費用越高。

## `proxyConfiguration` (type: `object`):

Mobile01 看板列表對直連友善，通常不需要 proxy。遇到封鎖才開。

## Actor input object example

```json
{
  "mode": "forum",
  "forumIds": [
    "291"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "mode": "forum",
    "forumIds": [
        "291"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("claude_code_reviewer/mobile01-scraper").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 = {
    "mode": "forum",
    "forumIds": ["291"],
}

# Run the Actor and wait for it to finish
run = client.actor("claude_code_reviewer/mobile01-scraper").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 '{
  "mode": "forum",
  "forumIds": [
    "291"
  ]
}' |
apify call claude_code_reviewer/mobile01-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Mobile01 爬蟲｜看板主題、作者、回覆數、發文時間一鍵匯出（免 API）",
        "description": "免登入抓 Mobile01 看板主題列表：標題、作者、發佈時間、最後回覆時間與回覆數，輸出 JSON／CSV／Excel。3C／汽車社群輿情、熱門話題追蹤、選題必備。",
        "version": "1.0",
        "x-build-id": "GaObFCeiggpP9cX7m"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/claude_code_reviewer~mobile01-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-claude_code_reviewer-mobile01-scraper",
                "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/claude_code_reviewer~mobile01-scraper/runs": {
            "post": {
                "operationId": "runs-sync-claude_code_reviewer-mobile01-scraper",
                "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/claude_code_reviewer~mobile01-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-claude_code_reviewer-mobile01-scraper",
                "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": [
                    "forumIds"
                ],
                "properties": {
                    "mode": {
                        "title": "🎯 模式",
                        "enum": [
                            "forum"
                        ],
                        "type": "string",
                        "description": "要抓什麼？v1.0 只支援看板主題列表。",
                        "default": "forum"
                    },
                    "forumIds": {
                        "title": "📋 看板 ID",
                        "maxItems": 50,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "看板（討論區）數字 ID，例如：291（投資理財綜合）、638（台灣新聞）。可在 Mobile01 看板網址 topiclist.php?f= 後面找到。",
                        "items": {
                            "type": "string"
                        }
                    },
                    "keywords": {
                        "title": "🔍 標題關鍵字過濾",
                        "maxItems": 20,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "（選填）只保留標題包含任一關鍵字的主題。留空表示不過濾。",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dateFrom": {
                        "title": "📅 起始日期",
                        "type": "string",
                        "description": "（選填）只保留發佈時間在此日期（含）之後的主題。格式 YYYY-MM-DD，或「N days ago」/「N天前」。"
                    },
                    "dateTo": {
                        "title": "📅 結束日期",
                        "type": "string",
                        "description": "（選填）只保留發佈時間在此日期（含）之前的主題。格式 YYYY-MM-DD，或「N days ago」/「N天前」。"
                    },
                    "bulkInput": {
                        "title": "📋 批量貼上",
                        "type": "string",
                        "description": "**一行一個**，按 Enter 換行，貼看板 ID，執行時自動併入上面的看板 ID 欄位。"
                    },
                    "maxItems": {
                        "title": "📊 最多抓幾筆",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "每個看板最多抓幾則主題。越多費用越高。",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "🌐 Proxy（進階，通常不用開）",
                        "type": "object",
                        "description": "Mobile01 看板列表對直連友善，通常不需要 proxy。遇到封鎖才開。",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
