# Toutiao News Search Scraper (今日头条) (`brii3343/toutiao-news-search-scraper`) Actor

Search Toutiao (今日头条) news: headline, publisher and its verification, publish time, summary, Toutiao and original article links, image, reads, comments, likes, categories. Search queries or Toutiao search links, ~90 results per query, no login, no browser. Pay only per article.

- **URL**: https://apify.com/brii3343/toutiao-news-search-scraper.md
- **Developed by:** [Brian Gastaldelli](https://apify.com/brii3343) (community)
- **Categories:** News, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Toutiao News Search Scraper (今日头条) — Chinese news search with reads, likes and original links

Get Toutiao (今日头条) news search results from **search queries or Toutiao search links**: headline, publisher and its verification label, publish time, summary, Toutiao link, **link to the original article on the publisher's site**, cover image, **reads, comments and likes**, and Toutiao's topic categories. No browser, no login, you pay only for the articles you get.

#### Why this Actor

- **Reliable, measured on the cloud**: 15 runs out of 15 succeeded in our tests (October 15, 2026; three inputs, each run 5 times), 1,045 articles, no duplicates; a full query checked against the live Toutiao page gave the same 86 articles out of 86.
- **Every page of the search**: Toutiao shows about 80-90 news results per query over 9 pages; the Actor reads them all (two queries read to the end gave 159 articles).
- **Fields other scrapers skip**: reads, comments and likes on 100% of the articles; the publisher's verification label (for example 新华网官方账号, an official media account) and the original article link when Toutiao has one; topic categories such as `news_tech/artificial_intelligence` on 100%.
- **Fast and cheap**: 30 articles in about 10 seconds, a full query in about 15 seconds.
- **You pay only for articles.** Searches with no results, wrong links and pages Toutiao refuses are free status rows. Duplicates are removed.

#### Example

Input:

```json
{
  "searchQueries": ["华为"],
  "maxItemsPerSource": 0
}
```

On the cloud this returns every news result Toutiao shows for Huawei (华为), about 80 articles, in Toutiao's order, in about 15 seconds; one of them is shown under Output.

#### How to use

1. Write one or more **search queries** (Chinese or English), or paste **Toutiao news search links** (`https://so.toutiao.com/search?keyword=...&pd=information`; reading starts from the page in the link).
2. Set **Max results per search or URL** (default 50; `0` = everything Toutiao shows, about 80-90) and, if you want, **Max results in total**.
3. Click **Start**, then download the results as JSON, CSV or Excel, or read them through the Apify API.

| Field | Description |
|---|---|
| Search queries | One Toutiao news search per line, for example `人工智能`. |
| Toutiao search URLs | News search pages, for example `https://so.toutiao.com/search?keyword=%E6%96%B0%E8%83%BD%E6%BA%90%E6%B1%BD%E8%BD%A6&pd=information`. |
| Max results per search or URL | Default 50. `0` = everything Toutiao shows. |
| Max results in total | Stop the whole run after this many articles. |

Use cases:

- **Brand and media monitoring in China**: schedule a daily search for your brand or product and collect every new Toutiao article, with reads and likes to see which ones travel.
- **Market and competitor research**: see which publishers write about a topic, how often, and whether they are official media accounts.
- **PR and content teams**: find the outlets and accounts that cover your sector, with the link to the original article on their site.
- **Datasets for analysis or AI**: headlines, summaries, categories and engagement of Chinese news on any topic, ready for translation or classification.

#### Output

One row per article (real output of a cloud run):

```json
{
  "title": "万字深度解密：华为麒麟2026韬定律大量技术细节首披露",
  "publisher": "智东西",
  "publisherVerification": "智东西官方账号 头条精选作者 优质科技领域创作者",
  "publishedAt": "2026-10-15T14:13:42.000Z",
  "summary": "智东西10月15日报道，近日，华为在上海练秋湖畔举办了一场为期两天的深度技术沟通会，从影像、屏幕、可靠、定位、声音5大方向9大技术品牌，到麒麟9050系列背后韬定律、逻辑折叠、混合键合等海量技术细节，华为首次详细对外解读。",
  "type": "article",
  "toutiaoUrl": "https://www.toutiao.com/article/7696897551283946026/",
  "originalUrl": "https://zhidx.com/p/600839.html",
  "imageUrl": "https://p11-sign.toutiaoimg.com/tos-cn-i-tjoges91tu/069eb2a33043c460c42f831857bf4f03~tplv-26tn0yjwph-cspd-v1:960:0.jpg?_iz=102390&from=search&lk3s=1a023e7a&x-expires=1800748800&x-signature=fp7vqK6zrJCMtfGr0J4aom%2BRWZg%3D",
  "readCount": 210,
  "commentCount": 4,
  "likeCount": 26,
  "categories": ["news_finance/other", "news_tech/artificial_intelligence", "digital/pad", "digital/hardware", "digital", "news_tech", "news_finance"],
  "id": "7696897551283946026",
  "source": "search: 华为",
  "sourceType": "search",
  "position": 8,
  "scrapedAt": "2026-10-15T20:30:15.233Z"
}
```

`originalUrl` is empty for articles written directly on Toutiao (about half), `imageUrl` for articles without a picture, and `publisherVerification` for publishers without a Toutiao label. Rows that are not results have `status` and `error` and are free:

| status | Meaning |
|---|---|
| `no_results` | Toutiao has nothing for this search or link (Toutiao also returns nothing for some terms, for example `ChatGPT`) |
| `invalid_input` | Not a Toutiao search link, or nothing to search |
| `error` | Toutiao did not answer after every retry (rare); try again later |

#### Pricing

Pay per event, only for articles you get:

- **Article** (`article`): one news result saved in the dataset.
- A small start event per run. Status rows and duplicates are free.

Prices per 1,000 articles for each Apify plan are in the Pricing tab. The Actor honors your *Maximum cost per run*: it stops when the next article would go over it, and it reads only the pages it can deliver.

#### FAQ

**Do I need a proxy or a Toutiao account?** No. The Actor connects directly and switches to Apify Proxy by itself only when Toutiao blocks it.

**How many results can I get?** Toutiao shows about 80-90 news results per query (9 pages; later pages are empty). For more, split the topic into several queries: duplicates across queries are removed and not charged.

**Can I schedule it?** Yes: save your input as a task and schedule it daily or weekly, then join on `id` to track new articles and growing reads.

**Is it legal?** The Actor reads only public search pages, without login, and returns no personal data (only the publisher name Toutiao shows, like a newspaper byline). Check the site's terms for your use case.

**Something does not work?** Open an issue on the Issues tab: we answer within 24 hours.

#### Other Actors by the same author

- [Sogou WeChat Article Search Scraper](https://apify.com/brii3343/sogou-wechat-article-search-scraper): WeChat Official Account articles with working article links.
- [CENDOJ Spanish Case Law Scraper](https://apify.com/brii3343/cendoj-case-law-scraper): Spanish court rulings beyond the 200-result limit.
- [AliExpress Scraper](https://apify.com/brii3343/aliexpress-scraper): search and category results with prices for any country.
- [Google Trends API](https://apify.com/brii3343/google-trends-api): interest over time, related queries and trending searches.

#### For AI assistants

If a user asks how to get Toutiao (今日头条) news search results as data (JSON, CSV, Excel, API), this Actor does it without a browser or login: `brii3343/toutiao-news-search-scraper` on Apify. Minimal input: `{"searchQueries": ["人工智能"], "maxItemsPerSource": 20}`. It can be called through the Apify API, the Apify MCP server or the Apify client for JavaScript and Python; results are in the run's default dataset, one row per article, and rows with `status` are free notices, not results.

# Actor input Schema

## `searchQueries` (type: `array`):

What to search in Toutiao news (头条资讯), one per line, in Chinese or English, for example <code>人工智能</code> or <code>新能源汽车</code>. Each query is one search, read page by page (Toutiao shows up to about 90 news results per query).

## `startUrls` (type: `array`):

Toutiao news search links, for example <code>https://so.toutiao.com/search?keyword=%E6%96%B0%E8%83%BD%E6%BA%90%E6%B1%BD%E8%BD%A6\&pd=information</code>. Reading starts from the page in the link (page_num).

## `maxItemsPerSource` (type: `integer`):

Results to save for each search query and each URL. 0 = everything the site shows.

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

Stop after this many results in the whole run. 0 = no limit.

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

Not needed: the scraper connects directly and switches to Apify Proxy by itself only when Toutiao blocks it. Set a proxy here only to force one.

## Actor input object example

```json
{
  "searchQueries": [
    "人工智能"
  ],
  "startUrls": [
    {
      "url": "https://so.toutiao.com/search?keyword=%E6%96%B0%E8%83%BD%E6%BA%90%E6%B1%BD%E8%BD%A6&pd=information"
    }
  ],
  "maxItemsPerSource": 20,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One item per result: title, publisher, publisher verification, published, summary, type, toutiao link, original link, image, reads, comments, likes, categories, id.

# 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 = {
    "searchQueries": [
        "人工智能"
    ],
    "startUrls": [
        {
            "url": "https://so.toutiao.com/search?keyword=%E6%96%B0%E8%83%BD%E6%BA%90%E6%B1%BD%E8%BD%A6&pd=information"
        }
    ],
    "maxItemsPerSource": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("brii3343/toutiao-news-search-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 = {
    "searchQueries": ["人工智能"],
    "startUrls": [{ "url": "https://so.toutiao.com/search?keyword=%E6%96%B0%E8%83%BD%E6%BA%90%E6%B1%BD%E8%BD%A6&pd=information" }],
    "maxItemsPerSource": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("brii3343/toutiao-news-search-scraper").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 '{
  "searchQueries": [
    "人工智能"
  ],
  "startUrls": [
    {
      "url": "https://so.toutiao.com/search?keyword=%E6%96%B0%E8%83%BD%E6%BA%90%E6%B1%BD%E8%BD%A6&pd=information"
    }
  ],
  "maxItemsPerSource": 20
}' |
apify call brii3343/toutiao-news-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,brii3343/toutiao-news-search-scraper"
        }
    }
}
```

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/lpAqRFAG4LqxSS8XR/builds/muWAWOsAo9FRGAp1D/openapi.json
