Chinese news from state, commercial and overseas outlets, each labeled by type, plus Weibo 微博, Baidu 百度, Zhihu 知乎, Toutiao 今日头条 and Bilibili 哔哩哔哩 hot lists. Deletion Watch flags Weibo hot search and trending topics that disappear and shows the evidence for each flag. Deletion checks included.
Public trending lists fetched logged-out. The default is every list. A list you leave out is not fetched, and its hot-list rows and deletion flags are not pushed or billed. An empty selection includes none.
Type:string[]
Default:
[
"weibo",
"baidu",
"zhihu",
"toutiao",
"bilibili",
"douyin",
"kuaishou"
]
Source types
sourceTypes
Optional
Which news rows to push and bill, by the type each row is credited to after aggregator handling. When a cluster_context record from the last 2 hours is available and this selection is narrower than every type, only sources of the selected types are fetched. If that record is missing, stale, or unusable, or this selection is every type, every approved news source is fetched. Hot lists follow hotLists. Evidence, clusters, and overseas pickup stay the same whatever you select here, using the stored context when the fetch is narrowed. The default is every type, including Commercial platform, and does not drop rows. Leaving the field unset does the same. A Commercial platform news row ships when you select that type and is left out when you select other types only. Douyin mirror rows also require douyin in hotLists; that list is in the default, so a default run still ships them, and leaving douyin out drops them even when Commercial platform is selected. Aggregator items are credited to the original outlet's type or dropped, and a credited row is kept only when that type is selected. A news row of an unselected type is not pushed and is not remembered. An empty list selects no news types.
Type:string[]
Default:
[
"State media",
"Party-gov",
"Commercial platform",
"Overseas independent",
"Dissident",
"Censorship tracker"
]
News sources
newsSources
Optional
"all" (default) = every approved outlet that can be read logged-out (about 110). Or list source ids from data/sources/news_notion.json, e.g. mfa, xinhua, bbc.
Type:string[]
Default:
[
"all"
]
Keywords
keywords
Optional
Keep only rows whose title, summary or source contains one of these keywords (case-insensitive, Chinese allowed). Combined with newsSources using AND. Empty keeps all.
Type:string[]
Default:
[]
Snapshots in this run
snapshotCount
Optional
Use 1 with a schedule (every 5-10 min). Higher values keep one run alive and poll repeatedly.
Type:integer
Minimum:1
Maximum:24
Default:1
Emit only new rows
emitOnlyNew
Optional
Push only dataset rows that are new since the last run. A deletion flag is pushed again when its status changes (for example likely censored to censored, or to returned). Turn off to push a full snapshot. Apify bills each pushed dataset row.
Type:boolean
Default:true
Minutes between in-run snapshots
snapshotIntervalMinutes
Optional
Minutes to wait between extra snapshots when snapshotCount is greater than 1.
Type:integer
Minimum:1
Default:5
Max billed rows
maxItems
Optional
Cap on the total number of billed rows this run. The Console pre-fills 30. Left empty, the cap is 200. A run capped at 200 rows or fewer finishes in about 4 minutes with the rows it collected by then.
Type:integer
Minimum:1
Default:200
Max items per news source
maxItemsPerSource
Optional
Maximum number of news items kept from each source in one run.
Type:integer
Minimum:1
Maximum:100
Default:30
Include hot-list items up to rank
maxHotRank
Optional
Hot-list rows ranked worse than this are left out of the feed.
Type:integer
Minimum:5
Maximum:50
Default:50
'High rank' threshold for censorship flags
highRank
Optional
A topic that vanishes at or above this rank (or while rising) is flagged.
Type:integer
Minimum:3
Maximum:50
Default:15
Re-check URLs of vanished topics
recheckUrls
Optional
Kept for compatibility. URL rechecks run on our side, not in this actor. The actor joins the stored result for each flag. A flag with no stored result stays pending.
Type:boolean
Default:true
Cross-check FreeWeibo (aggregate counts only)
freeweiboCheck
Optional
Kept for compatibility. FreeWeibo lookups run on our side, not in this actor. The actor joins stored aggregate counts. A flag with no stored result leaves freeweibo empty. Post text is not stored.
Type:boolean
Default:true
Topics in the readable report
topN
Optional
How many topics to include in the readable top-stories report.
Type:integer
Default:15
Clustering time budget (seconds)
clusterBudgetSeconds
Optional
Maximum seconds spent clustering items in one run. If this runs out, items not yet assigned are left as their own clusters, a warning is logged, and the run continues. The Console pre-fills 60 seconds. Left empty, the budget is 120 seconds.
Type:integer
Minimum:1
Default:120
Direct or sidecar route
sourceRoutes
Optional
Optional overrides of catalog ingest.route. Each value is direct or sidecar. China Press and Sydney Today default to sidecar: the poller fetches them on the box and this actor reads the store. Set a source to direct to use its actor fetcher instead. An empty object keeps the catalog route.
Type:object
Default:
{}
Include NFSC network rows
includeNfsc
Optional
When true (the default), the nine NFSC Dissident rows in the public sidecar record are merged into the dataset. Set false to leave them out without a new build. Telegram and YouTube NFSC rows still follow the channel redaction gate and stay internal until that sign-off.
Type:boolean
Default:true
Deletion Watch (paid add-on)
deletionWatch
Optional
Off by default. Turn on to add deletion flags. When a topic drops off the Weibo, Baidu, Zhihu, Toutiao or Bilibili hot list while still hot, we recheck it and flag it as Likely censored, or as Censored only with a dead link, a removal notice or a close tracker match. Each flag shows its evidence. From Nov 11, 2026, each Likely censored or Censored flag costs $0.05 (event deletion-watch-row) on top of the row price. Returned rows carry no add-on charge. When on, flag rows come first within maxItems. keywords, alertSummary and emitOnlyNew are free.
Type:boolean
Default:false
Alert summary record
alertSummary
Optional
When true, write an ALERT key-value record listing this run's new Censored and Likely censored rows (count 0 when none). Requires deletionWatch; no extra charge.
Type:boolean
Default:false
Use Apify Proxy
useApifyProxy
Optional
Most sources work without a proxy. Enable if lists start rate-limiting.
Type:boolean
Default:false
Proxy groups
proxyGroups
Optional
e.g. RESIDENTIAL. Leave empty for the default datacenter pool.
Type:array
Full fetch on stale context
fullFetchOnStaleContext
Optional
Fetch every news source when shared story matching is unavailable.
Type:boolean
Default:false
Run deadline in seconds
runDeadlineSecs
Optional
Time allowed for fetching before processing collected rows.
Type:integer
Minimum:1
Source wall cap in seconds
sourceWallCapSecs
Optional
Maximum time spent fetching one news source.
Type:integer
Minimum:1
Default:45
Sidecar store ID
sidecarStoreId
Optional
Optional. Overrides the SIDECAR_STORE_ID environment variable. Not shown to buyers.
Type:string
Hot-list history store
historyStore
Optional
Internal testing only. Owner runs upload trimmed history here. Buyer runs do not open this store. Leave as default.
Type:string
Default:china-feed-history
Simulate a buyer run
simulateBuyer
Optional
Internal testing only. When true, this run skips china-feed-history and uses an in-run temp file, the same as a buyer, even on the owner's account. It cannot turn history on.
Type:boolean
Default:false
Apify retention days
apifyRetentionDays
Optional
Internal testing only. Days of timestamped rows kept in Apify on each upload. The default is 7. The APIFY_RETENTION_DAYS environment variable overrides this.
Type:integer
Minimum:1
Default:7
Cluster context record key
contextKey
Optional
Internal testing only. Leave as default; changing it disables cross-run clustering.