# BAAI / Zhiyuan AI Research Papers Scraper (`maximedupre/baai`) Actor

Collect the current public BAAI/Zhiyuan curated AI research feed. Get structured paper records with titles, authors, abstracts, identifiers, curator notes, links, and source context.

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

## Pricing

from $0.70 / 1,000 papers

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

### 📚 BAAI research papers from the current feed

Researchers, analysts, and AI teams can collect the current public BAAI/Zhiyuan curated research feed. Each paper becomes one structured row with titles, authors, abstracts, identifiers, Chinese BAAI editorial notes, source links, and available citation or hotness signals. Use the rows for literature reviews, research monitoring, and downstream data work. A run covers what the source currently exposes.

- Collect **[BAAI AI Papers](https://apify.com/maximedupre/baai/examples/baai-ai-papers)** for a literature review.
- Gather **[BAAI Academic Papers](https://apify.com/maximedupre/baai/examples/baai-academic-papers)** for a bibliography.
- Scrape **[BAAI Paper Scraper](https://apify.com/maximedupre/baai/examples/baai-paper-scraper)** into structured paper rows.
- Review **[BAAI Research Papers](https://apify.com/maximedupre/baai/examples/baai-research-papers)** with abstracts and source links.
- Monitor **[BAAI Research Feed](https://apify.com/maximedupre/baai/examples/baai-research-feed)** across recurring runs.

#### 🧾 What each BAAI paper row contains

**Paper record**

Each dataset row represents one paper from the current publicly accessible BAAI/Zhiyuan feed. The row can include the paper's English and Chinese titles, authors and affiliations, publication date, venue, identifiers, abstracts, keywords, categories, Chinese BAAI editorial notes, source links, citation or hotness signals, BAAI authorship status, and related BAAI model releases. Optional values appear when the source provides them.

#### ▶️ How to collect the current BAAI feed

**Run steps**

1. Open the input and leave the paper limit empty, or enter a positive whole number.
2. Start the run. An empty limit returns all available papers until the source is exhausted. A number stops the run after that many papers.
3. Open the `dataset` link in the run output to read the saved paper rows.

**Scope**

Each run reads the current feed the source exposes. It does not search arbitrary topics, authors, venues, dates, or keywords, and it does not backfill older BAAI paper history in the same run. The Actor returns source links instead of downloading or transforming full PDF contents.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `maxItems` | integer | Stops after the chosen number of papers. Leave it empty to return all available papers until the source is exhausted. |

**Example input**

This is the public input from a successful current-beta default-input run. It submits no paper limit.

```json
{
}
```

#### 🧾 Output

**Run output**

| Field | Type | What it does |
| --- | --- | --- |
| `dataset` | string URL | Links to the paper results from this run. |

**Dataset row**

Fields other than `title` appear when the source provides them.

| Field | Type | What it does |
| --- | --- | --- |
| `title` | string | Main paper title shown by the BAAI feed. |
| `titleEnglish` | string | English title of the paper, when available. |
| `titleChinese` | string | Chinese title of the paper, when available. |
| `authors` | array of objects | Authors listed for the paper. |
| `authors.name` | string | Name of one paper author. |
| `authors.affiliations` | array of strings | Organizations linked to that author, when available. |
| `publicationDate` | string | Publication date listed for the paper. |
| `venue` | string | Journal, conference, or other venue listed for the paper. |
| `identifiers` | object | Public identifiers for the paper. |
| `identifiers.arxiv` | string | arXiv identifier, when available. |
| `identifiers.doi` | string | Digital Object Identifier, when available. |
| `abstracts` | object | English and Chinese abstracts for the paper. |
| `abstracts.english` | string | English abstract, when available. |
| `abstracts.chinese` | string | Chinese abstract, when available. |
| `keywords` | array of strings | Keywords linked to the paper. |
| `categories` | array of strings | Research categories linked to the paper. |
| `editorialNotes` | object | Chinese BAAI notes about the paper. |
| `editorialNotes.summary` | string | BAAI summary of the paper, when available. |
| `editorialNotes.problem` | string | Problem described by BAAI, when available. |
| `editorialNotes.approach` | string | Approach described by BAAI, when available. |
| `editorialNotes.highlights` | string | Highlights described by BAAI, when available. |
| `editorialNotes.relatedWork` | string | Related work described by BAAI, when available. |
| `links` | object | Useful links for the paper. |
| `links.baai` | string URL | Link to the paper page on BAAI, when available. |
| `links.pdf` | string URL | Direct link to the paper PDF, when available. |
| `links.github` | string URL | Link to the paper code on GitHub, when available. |
| `source` | object | Source that supplied this paper record. |
| `source.name` | string | Name of the source feed. |
| `source.feedUrl` | string URL | URL of the source feed. |
| `citationCount` | integer | Number of citations shown by the source, when available. |
| `hotness` | number | Hotness score shown by the source, when available. |
| `hasBaaiAuthor` | boolean | Whether the paper has an author linked to BAAI. |
| `relatedModelReleases` | array of objects | BAAI model releases linked to the paper. |
| `relatedModelReleases.name` | string | Name of a related model release. |
| `relatedModelReleases.url` | string URL | Link to a related model release, when available. |

**Example paper row from the default-input run**

This unshortened row is a genuine result from the successful current-beta default-input run.

```json
{
  "title": "Fantastic Pretraining Optimizers and Where to Find Them II: Hyperball Optimization",
  "links": {
    "baai": "https://hub.baai.ac.cn/paper/3ccbaee4-487f-48ed-9ea0-9cb6ca7d5482",
    "pdf": "https://simg.baai.ac.cn/paperfile/3ccbaee4-487f-48ed-9ea0-9cb6ca7d5482.pdf"
  },
  "source": {
    "name": "BAAI/Zhiyuan",
    "feedUrl": "https://hub.baai.ac.cn/papers"
  },
  "titleEnglish": "Fantastic Pretraining Optimizers and Where to Find Them II: Hyperball Optimization",
  "authors": [
    {
      "name": "Kaiyue Wen"
    },
    {
      "name": "Xingyu Dang"
    },
    {
      "name": "Kaifeng Lyu"
    },
    {
      "name": "Tengyu Ma"
    },
    {
      "name": "Percy Liang"
    }
  ],
  "publicationDate": "2026-06-15T16:09:02.000Z",
  "identifiers": {
    "arxiv": "2606.16899v1"
  },
  "abstracts": {
    "english": "Matrix based optimizers such as Muon can substantially speed up language model pretraining, but their gains over AdamW are observed to shrink as model size and data scale grow when using standard constant decoupled weight decay. We propose Hyperball, a simple optimizer wrapper that addresses this issue. Given a base optimizer such as Adam or Muon, Hyperball sets the Frobenius norms of weight matrices and their corresponding optimizer updates to fixed constants. On Qwen3 style models up to 1.2B parameters, Muon Hyperball achieves 20--30% token equivalent speedup over weight decay baselines. Hyperball also improves learning rate transfer across widths and depths compared to decoupled weight decay. This method is motivated by prior theory showing that training with weight decay leads to an equilibrium weight norm that only depends on the training hyperparameters. Through this mechanism, the weight decay then decides the angular learning rate, i.e. how fast the direction of the weight matrix changes.",
    "chinese": "基于矩阵的优化器（例如 Muon）可显著加速语言模型的预训练，但在采用标准的常数解耦权重衰减（constant decoupled weight decay）时，其相较于 AdamW 的优势会随着模型规模与数据规模的增大而逐渐减弱。为此，我们提出了 Hyperball——一种简洁的优化器封装方法，专门用于解决这一问题。Hyperball 以 Adam 或 Muon 等基础优化器为输入，将各权重矩阵及其对应优化器更新的弗罗贝尼乌斯范数（Frobenius norm）分别固定为预设常数。在参数量高达 12 亿（1.2B）的 Qwen3 风格模型上，Muon + Hyperball 相较于采用解耦权重衰减的基线方法，实现了 20%–30% 的“词元等效”（token-equivalent）训练加速。此外，相较于解耦权重衰减，Hyperball 还显著提升了学习率在不同网络宽度与深度间的可迁移性。该方法的理论动因源于先前研究：已有理论表明，在使用权重衰减进行训练时，系统会收敛至一个平衡态权重范数，而该范数仅取决于训练超参数；借助这一机制，权重衰减实质上决定了“角度学习率”（angular learning rate），即控制权重矩阵方向变化快慢的速率。"
  },
  "categories": [
    "cs.LG"
  ],
  "editorialNotes": {
    "summary": "基于矩阵的优化器（例如 Muon）可显著加速语言模型的预训练，但在采用标准的常数解耦权重衰减（constant decoupled weight decay）时，其相较于 AdamW 的优势会随着模型规模与数据规模的增大而逐渐减弱。为此，我们提出了 Hyperball——一种简洁的优化器封装方法，专门用于解决这一问题。Hyperball 以 Adam 或 Muon 等基础优化器为输入，将各权重矩阵及其对应优化器更新的弗罗贝尼乌斯范数（Frobenius norm）分别固定为预设常数。在参数量高达 12 亿（1.2B）的 Qwen3 风格模型上，Muon + Hyperball 相较于采用解耦权重衰减的基线方法，实现了 20%–30% 的“词元等效”（token-equivalent）训练加速。此外，相较于解耦权重衰减，Hyperball 还显著提升了学习率在不同网络宽度与深度间的可迁移性。该方法的理论动因源于先前研究：已有理论表明，在使用权重衰减进行训练时，系统会收敛至一个平衡态权重范数，而该范数仅取决于训练超参数；借助这一机制，权重衰减实质上决定了“角度学习率”（angular learning rate），即控制权重矩阵方向变化快慢的速率。",
    "problem": "随着语言模型规模和数据量增大，基于矩阵的优化器（如Muon）相对于AdamW的训练加速优势逐渐减弱，尤其是在使用标准常数解耦权重衰减时。论文试图解决大规模模型预训练中优化器缩放性下降的问题，验证‘权重衰减导致的权重范数动态失配是限制优化器可扩展性的关键瓶颈’这一假设。该问题在大模型训练实践中日益突出，但此前未被系统建模为范数-角度解耦失效问题，具有一定新颖性。",
    "approach": "提出Hyperball——一种轻量级优化器封装器：对每个权重矩阵及其对应优化器更新向量强制约束其Frobenius范数为固定常数，从而显式解耦权重大小（径向方向）与方向更新（角方向）的学习动力学；其理论依据是权重衰减隐式设定平衡范数，而Hyperball将该范数显式、统一地锚定，使角学习率（方向更新效率）不再受超参数（如weight decay系数）间接调制，从而提升大模型下的优化稳定性与缩放一致性。",
    "highlights": "在Qwen3风格模型（0.5B–1.2B参数）上，Muon+Hyperball相较标准weight decay基线实现20–30% token-equivalent加速；显著提升学习率跨宽度/深度的可迁移性（例如在不同层数模型间复用同一lr无需重调）；方法仅需两行代码修改（norm-clipping + scaling），无额外参数或计算开销；实验覆盖预训练全程（含长序列、多阶段warmup），未依赖特定数据集（使用公开中文语料混合），代码已开源（GitHub链接见论文附录）；值得深入的方向包括：将Hyperball推广至注意力头内子矩阵、结合自适应范数调度、以及在RLHF微调阶段的泛化性验证。",
    "relatedWork": "1. Loshchilov & Hutter (2019) - Decoupled Weight Decay Regularization\n2. Zhang et al. (2022) - Muon: A Matrix-Based Optimizer for Large Language Models\n3. Liu et al. (2023) - NormFormer: Improved Training of Transformer with Norm-based Preconditioning\n4. Chen et al. (2024) - Spherical Optimization for Deep Learning\n5. You et al. (2023) - Layer-wise Adaptive Rate Scaling (LARS) and Its Large-Scale Variants"
  },
  "hotness": 687
}
```

#### 💳 Pricing

**Billing**

This Actor uses pay-per-event billing. One paper event applies when one paper from the current BAAI/Zhiyuan curated research feed is saved. The final amount depends on how many papers are saved, and the current tier price is shown in the Apify pricing panel.

#### 🔌 Integrations

**Video guide**

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

**Workflow options**

Open the dataset link from the run output in Apify, or use Apify's API, schedules, webhooks, and dataset exports to move the paper rows into a research workflow.

#### ❓ FAQ

##### What does one paper row contain?

It contains the available paper titles, authors, publication details, identifiers, abstracts, keywords, BAAI editorial notes, source links, and related signals listed in the Output section.

##### Are Chinese BAAI editorial notes included?

Yes, when the source provides them. The `editorialNotes` object can include a summary, problem, approach, highlights, and related work.

##### What happens when I leave the paper limit empty?

The Actor returns all available papers until the source is exhausted. Enter a positive whole number when you want the run to stop after a chosen count.

##### Can I collect older papers in the same run?

No. A run captures the current feed the source exposes. It does not backfill older BAAI history or compare runs.

##### Can I filter by topic, author, date, or keyword?

No. The public input has only the paper limit. You can filter or group the saved fields after the run.

##### Does the Actor download PDF files?

No. It returns available BAAI and PDF links. It does not download or transform the full paper files.

##### Does the source require a login?

No. The Product Contract describes the BAAI feed as publicly accessible without a login.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

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

### 🔗 Related Actors

**Recommended tools**

- [arXiv Papers Scraper](https://apify.com/maximedupre/arxiv-papers-scraper) - Find related arXiv papers and compare their metadata with this feed.
- [URL to BibTeX Converter](https://apify.com/maximedupre/url-to-bibtex-converter) - Turn BAAI paper or PDF links into BibTeX citations.
- [ORCID Researcher Profile Search](https://apify.com/maximedupre/orcid-researcher-profile-search) - Enrich paper authors with public profiles, affiliations, and works.
- [RSS Feed Reader](https://apify.com/maximedupre/rss-feed-reader) - Read other public research feeds for scheduled paper monitoring.
- [BAAI / Zhiyuan AI Research Papers Scraper](https://apify.com/jungle_synthesizer/baai-zhiyuan-ai-research-publication-scraper) - Compare this current BAAI/Zhiyuan feed with another paper scraper.

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

# Actor input Schema

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

Enter a positive whole number to stop after that many papers. Leave it empty to return all available papers until the source is exhausted.

## Actor input object example

```json
{
  "maxItems": 10
}
```

# Actor output Schema

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

Link to the paper results from this run.

# 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": 10
};

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

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

```

## MCP server setup

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

```

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/iijw8MxTga9Vt7fYi/builds/eDWtjolCd4tOB3rpc/openapi.json
