# CALT Long March Rocket Fleet News Scraper (`maximedupre/calt`) Actor

Collect articles from the official CALT mission archive with original-language titles and readable article content. Filter by date, rocket family, launch site, or mission outcome, then save source URLs, mission context, and image links in a structured dataset.

- **URL**: https://apify.com/maximedupre/calt.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** News, Developer tools, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 news articles

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### 🚀 Turn CALT Mission News into Dataset Rows

For aerospace researchers, writers, and data teams, this Actor reads the public CALT mission archive and saves original-language article content, dates, source links, rocket families, launch sites, mission outcomes, and image links in structured rows. Use the rows to study Long March missions and related CALT news with clear source and mission context.

- Use [**Rocket Launch Outcomes**](https://apify.com/maximedupre/calt/examples/rocket-launch-outcomes) to review mission outcomes from CALT articles.
- Use [**Rocket Launch Sites**](https://apify.com/maximedupre/calt/examples/rocket-launch-sites) to group CALT articles by launch site.
- Use [**Rocket Launch History**](https://apify.com/maximedupre/calt/examples/rocket-launch-history) to review past CALT rocket launches.
- Build a [**China Rocket Launch Archive**](https://apify.com/maximedupre/calt/examples/china-rocket-launch-archive) from CALT mission articles.
- Use the [**CALT Mission Archive**](https://apify.com/maximedupre/calt/examples/calt-mission-archive) to collect articles from the CALT source.

#### 🧾 CALT Article Rows

**What you get**

Each saved row represents one CALT article. The Actor keeps the source title and readable article content, then adds dates, the source URL, collection time, mission fields, and links to embedded images when present.

#### ▶️ Collect CALT Mission News

**How a run works**

The Actor reads public CALT article pages, applies the date and mission filters, and saves matching articles to the Apify dataset. Leave Maximum items empty to return all available results until the source is exhausted. You do not enter CALT credentials because the source is public. Each run uses one set of filters, so start another run for a different filter set.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `publishedFrom` | string | Includes articles published on or after this date. Enter `YYYY-MM-DD`. |
| `publishedTo` | string | Includes articles published on or before this date. Enter `YYYY-MM-DD`. |
| `rocketFamilies` | array of strings | Includes only articles that mention these rocket families. Enter names as CALT writes them; leave empty for all families. |
| `launchSites` | array of strings | Includes only articles with these launch sites. Enter names as CALT writes them; leave empty for all sites. |
| `missionOutcomes` | array of strings | Includes only articles with these mission outcomes. Enter values as CALT writes them; leave empty for all outcomes. |
| `maxItems` | integer | Stops after this many articles. Leave it empty to return all available results until the source is exhausted. |

The form starts Maximum items at 20. Change it for a smaller sample or leave it empty for all available results until the source is exhausted.

**Example input**

This is the public input from a successful beta run:

```json
{
  "maxItems": 20
}
```

#### 🧾 Output

**Output fields**

| Field | Type | What it does |
| --- | --- | --- |
| `articleId` | string | Stable ID of the CALT article. |
| `title` | string | Article title in the original language. |
| `articleContent` | string | Full readable content available from the article. |
| `publishedAt` | date string | Date when CALT published the article. |
| `articleUrl` | URL | Canonical CALT URL for the article. |
| `collectedAt` | date-time string | Time when this Actor collected the article. |
| `rocketFamilies` | array of strings | Rocket families named in the article; empty when CALT gives no rocket family. |
| `launchSites` | array of strings | Launch sites named in the article; empty when CALT gives no launch site. |
| `missionOutcome` | string or null | Mission outcome from CALT; `null` when CALT gives no outcome. |
| `imageUrls` | array of URLs | URLs for images embedded in the article; empty when there are no image links. |

**Genuine example row**

This row comes from the successful current-beta default-input run:

```json
{
  "articleId": "c2585519",
  "title": "捷龙三号火箭“一箭双星”发射成功",
  "articleContent": "8月5日10时38分，火箭院研制的捷龙三号运载火箭（以下简称“捷龙三号火箭”）在山东海阳附近海域点火升空，以“一箭双星”方式成功将东方慧眼高光谱01、02星送入预定轨道，发射任务按计划完成。 本次发射是捷龙三号火箭今年第4次发射。本次任务中，型号团队进一步提升了射前测发通信的可靠性，同时深入推进火箭去任务化总装测试工作，实现零部件产品流水化生产交付以及脉动式总装测试，缩短履约周期；持续推进标准化设计，不断提升生产设计效率，高效完成卫星发射和组网任务。 自首飞以来，捷龙三号火箭深耕商业航天市场，形成“快速响应、高频发射、成本可控、安全可靠”的成熟技术体系。后续，型号团队将继续挖潜，为用户提供更加优质高效的商业发射服务。 任务期间，发射队临时党委深入贯彻落实习近平总书记关于科技创新、人才培养等工作的重要指示批示精神，扎实开展树立和践行正确政绩观学习教育，并围绕科技自立自强、培育新质生产力、打造航天新质战斗力开展专题研讨，凝聚攻坚共识。同时，发射队全体队员尽职尽责、担当作为，以严实作风统筹推进各项工作，全力以赴保障发射任务成功。",
  "publishedAt": "2026-08-05",
  "articleUrl": "http://www.calt.com/n689/c2585519/content.html",
  "collectedAt": "2026-08-11T23:06:40.847Z",
  "rocketFamilies": [
    "捷龙三号"
  ],
  "launchSites": [
    "山东海阳"
  ],
  "missionOutcome": "成功",
  "imageUrls": [
    "http://www.calt.com/n689/c2585519/part/2585529.png"
  ]
}
```

#### 💳 Pricing

**How charging works**

This Actor uses pay-per-event pricing. One `News article` event covers one successfully collected article with readable content; mission context is included when available. Current tier prices appear on the Store page.

#### 🔌 Integrations

**Use the dataset**

Read the Apify dataset or its API link to send structured article rows to a research workflow. This Actor reads the public CALT site and does not need a separate CALT integration.

Watch the Actor walkthrough:

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

**Common questions**

##### What does CALT mean here?

CALT is the China Academy of Launch Vehicle Technology. This Actor reads its public mission and news archive, including Long March launch coverage.

##### Can I filter by dates, rocket families, launch sites, or mission outcomes?

Yes. Use the date fields or add one or more values to the rocket family, launch site, or mission outcome filters. The values should match the names used by CALT.

##### How do I return the full available archive?

Leave Maximum items empty. The Actor then returns all available results until the source is exhausted.

##### What happens when CALT does not publish a mission detail?

The Actor keeps the source article and leaves the missing value explicit. Rocket and site arrays are empty when CALT gives no rocket family or launch site, and `missionOutcome` is `null` when CALT gives no outcome.

##### Does the Actor translate the article content?

No. `title` and `articleContent` keep the original-language content available from CALT.

##### Are images included in each row?

The `imageUrls` field lists image links embedded in the article. It is empty when the article has no image links.

##### Do I need CALT credentials?

No CALT credentials are requested. The Actor reads the public CALT source.

##### Can I use several filter sets in one run?

No. Each run uses one set of filters. Start another run when you need a different filter set.

##### Is this a replacement for a launch schedule API?

No. This Actor reads CALT's published archive. It is not a web-wide launch search or a pre-launch schedule.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~calt/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [CALT Long March Rocket Fleet News Scraper](https://apify.com/jungle_synthesizer/calt-long-march-rocket-fleet-news-scraper) — Compare CALT mission news with Long March fleet-focused coverage.
- [CASC SpaceChina Corporate News Scraper](https://apify.com/jungle_synthesizer/casc-spacechina-corporate-news-scraper) — Collect corporate news and subsidiary mentions from SpaceChina.com.
- [CAST China Space Technology News Scraper](https://apify.com/jungle_synthesizer/cast-cn-china-academy-space-technology-news-scraper) — Read satellite-technology news from CAST channels.
- [Launch Library 2 (The Space Devs) Rocket Launches Scraper](https://apify.com/parseforge/ll-spacedevs-launch-scraper) — Track upcoming and historical orbital launches across providers.
- [SpaceX Scraper · Launches, Rockets, Payloads & Landings](https://apify.com/reapx/spacex-scraper) — Filter SpaceX launches by year, rocket family, mission success, or launch site.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `publishedFrom` (type: `string`):

Include articles published on or after this date. Enter YYYY-MM-DD.

## `publishedTo` (type: `string`):

Include articles published on or before this date. Enter YYYY-MM-DD.

## `rocketFamilies` (type: `array`):

Only include articles that mention these rocket families. Enter names as CALT writes them. Leave empty for all families.

## `launchSites` (type: `array`):

Only include articles with these launch sites. Enter names as CALT writes them. Leave empty for all sites.

## `missionOutcomes` (type: `array`):

Only include articles with these mission outcomes. Enter values as CALT writes them. Leave empty for all outcomes.

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

Stop after this many articles. Leave empty to return all available results until the source is exhausted.

## Actor input object example

```json
{
  "maxItems": 20
}
```

# Actor output Schema

## `dataset` (type: `string`):

Articles collected from the public CALT mission archive.

# 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 = {
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/calt").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 = { "maxItems": 20 }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/calt").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 '{
  "maxItems": 20
}' |
apify call maximedupre/calt --silent --output-dataset

```

## MCP server setup

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

```

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/9dp40OU8AJEbpDuY8/builds/5eZKdIGPlNfx4SUQX/openapi.json
