Zhihu Article Scraper
Pricing
Pay per event
Zhihu Article Scraper
📝 Extract public Zhihu Zhuanlan articles by URL into clean text, Markdown and HTML, with authors, topics, images, timestamps, permissions and engagement metrics.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract complete public Zhihu Zhuanlan articles from known URLs.
Turn long-form Chinese content into clean HTML, plain text, Markdown, author metadata, topics, images, timestamps, and engagement metrics—without maintaining a browser or a Zhihu account.
Zhihu Article Scraper is built for repeatable research, monitoring, localization, and LLM data pipelines.
What does Zhihu Article Scraper do?
Give the Actor one or more public URLs such as:
https://zhuanlan.zhihu.com/p/2055333119083992479
For every valid article, the Actor:
- 📝 extracts the title, excerpt, and full article;
- 👤 captures author identity and profile metadata;
- 🏷️ normalizes topics and images;
- 📈 records votes, comments, favorites, and likes;
- 🕐 converts publication and update times to ISO timestamps;
- 🧹 returns sanitized HTML, readable text, and Markdown;
- 🔗 preserves both canonical and submitted source URLs.
The result is a structured dataset ready for JSON, CSV, Excel, XML, RSS, or API export.
Who is it for?
Consumer intelligence teams
Track known Zhihu essays from brands, experts, and commentators.
Compare engagement and messaging over time.
Content and SEO researchers
Archive source articles and analyze topics, headings, links, and terminology.
Build repeatable content-gap or citation workflows.
Localization agencies
Export Chinese source text as Markdown or plain text for translation tools.
Keep author and source provenance beside each document.
LLM and RAG builders
Create structured document records for retrieval, classification, summarization, and embeddings.
Use contentText for simple pipelines or contentMarkdown when headings and links matter.
Social-listening operators
Schedule recurring runs for known public article URLs and send fresh snapshots downstream.
Why use this Zhihu article extractor?
- No browser maintenance: extraction uses the public server-rendered article state.
- No Zhihu credentials: the supported route is anonymous.
- Three content formats: HTML, text, and Markdown are returned together.
- Typed metadata: authors, topics, dates, and counts use stable fields.
- Low concurrency: conservative defaults reduce rate-limit risk.
- Fail-closed scope: Q&A and profile URLs are rejected instead of producing misleading data.
- Apify integrations: connect datasets to webhooks, Make, Zapier, Google Sheets, or your own API.
Supported pages and scope
Supported:
- public
zhuanlan.zhihu.com/p/{numeric-id}article pages; - one URL or batches of known article URLs;
- duplicate URL removal within a run.
Not supported in v1:
- Zhihu question or answer pages;
- keyword search;
- user profiles;
- hot lists;
- column listing and pagination;
- login-only, private, deleted, or restricted content.
This boundary keeps the product honest and predictable.
What data can you extract?
| Field | Description |
|---|---|
articleId | Numeric Zhihu article ID |
title | Article title |
url | Canonical article URL |
authorId | Zhihu author identifier |
authorName | Display name |
authorUrl | Public author URL |
authorHeadline | Author headline or description |
authorAvatarUrl | Avatar image URL |
excerpt | Article excerpt |
contentHtml | Sanitized article HTML |
contentText | Whitespace-normalized plain text |
contentMarkdown | Markdown generated from the article body |
imageUrl | Main article image |
images | All discovered article image URLs |
topics | Topic IDs, names, and URLs |
createdAt | Publication time in ISO format |
updatedAt | Last update time in ISO format |
voteupCount | Vote count |
commentCount | Comment count |
favoriteCount | Favorite-list count |
likedCount | Like count when exposed |
commentPermission | Comment permission state |
copyrightPermission | Copyright permission state |
state | Source article state |
status | Source article status |
isVisible | Visibility flag when exposed |
canComment | Whether comments are allowed |
ipLocation | IP/location label when publicly exposed |
sourceUrl | URL submitted by the user |
scrapedAt | Extraction timestamp |
How to scrape Zhihu articles
- Open the Actor input page.
- Paste one or more public Zhuanlan article URLs into Zhihu article URLs.
- Keep Maximum concurrency at 2 or 3 for normal batches.
- Set Maximum articles to your desired cap.
- Leave proxy disabled unless direct requests are blocked from your region.
- Click Start.
- Export the dataset in your preferred format.
A prefilled one-article run is the cheapest way to validate your workflow.
Input configuration
startUrls
Required list of public article pages.
Each URL must use https://zhuanlan.zhihu.com/p/{numeric-id}.
Tracking query strings and fragments are normalized away.
maxItems
Maximum unique article records to save.
The default is 10; the Store prefill uses 3 to keep first runs inexpensive.
maxConcurrency
Number of parallel article requests.
Allowed range: 1–5.
Use 1–3 for stable recurring jobs.
proxyConfiguration
Optional Apify Proxy or custom proxy URLs.
Direct HTTP is used when this setting is disabled.
Example input
{"startUrls": [{ "url": "https://zhuanlan.zhihu.com/p/2055333119083992479" }],"maxItems": 10,"maxConcurrency": 2,"proxyConfiguration": {"useApifyProxy": false}}
For recurring monitoring, keep the same URL list in an Apify Task and schedule it.
Example output
{"articleId": "2055333119083992479","title": "2026“普通人”就业现状:这5大变化你要知道!","url": "https://zhuanlan.zhihu.com/p/2055333119083992479","authorName": "Example author","excerpt": "A public article excerpt","topics": [{ "id": "19590199", "name": "就业", "url": "https://www.zhihu.com/api/v4/topics/19590199" }],"voteupCount": 0,"commentCount": 0,"favoriteCount": 0,"contentText": "Complete normalized article text...","contentMarkdown": "## Complete article...","sourceUrl": "https://zhuanlan.zhihu.com/p/2055333119083992479","scrapedAt": "2026-07-24T04:00:00.000Z"}
Actual authors, content, counts, and dates come from the source page.
How much does it cost to extract Zhihu articles?
The Actor uses pay-per-event pricing.
- Run start: $0.005 per run.
- Article extracted: BRONZE price $0.0005267 per saved article, with plan-based volume tiers.
- Failed URLs do not trigger the article event.
- Apify platform compute may apply according to your plan.
You can estimate a BRONZE run as $0.005 + saved articles × $0.0005267.
For example, 10 successfully extracted articles cost about $0.01027 before any plan-specific platform usage.
See the live pricing tab for the price applicable to your account tier.
Reliability and retries
Every article request has a 30-second timeout and up to three bounded attempts.
HTTP 403, 429, and server errors trigger a retry.
When a proxy configuration is present, retries can use a fresh proxy session.
A mixed batch can save valid articles and log warnings for failed URLs.
If no complete article is extracted, the run fails instead of returning an empty success.
Tips for stable recurring runs
- Keep concurrency low.
- Submit canonical Zhuanlan article URLs.
- Remove deleted or private URLs from long-lived tasks.
- Enable a proxy only after confirming direct access is blocked.
- Split very large URL inventories into scheduled batches.
- Monitor logs for new source-side restrictions.
- Store immutable historical snapshots in a named dataset or external warehouse.
Export and integrations
Google Sheets
Use an Apify integration to append new article records to a research sheet.
Select title, authorName, topics, createdAt, counts, and url for a compact view.
Make and Zapier
Trigger a scenario when a run succeeds.
Send Markdown to translation, summarization, or editorial-review steps.
Webhooks
Attach a run-succeeded webhook and fetch dataset items from your backend.
This works well for scheduled watchlists.
Data warehouses
Export JSON or CSV to object storage, BigQuery, Snowflake, or a relational database.
Use articleId as the source identity and scrapedAt as the snapshot time.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/zhihu-article-scraper').call({startUrls: [{ url: 'https://zhuanlan.zhihu.com/p/2055333119083992479' }],maxItems: 10,maxConcurrency: 2});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("automation-lab/zhihu-article-scraper").call(run_input={"startUrls": [{"url": "https://zhuanlan.zhihu.com/p/2055333119083992479"}],"maxItems": 10,"maxConcurrency": 2,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
API usage with cURL
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~zhihu-article-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"startUrls": [{"url":"https://zhuanlan.zhihu.com/p/2055333119083992479"}],"maxItems": 10,"maxConcurrency": 2}'
Poll the returned run ID, then read its default dataset.
Use with Apify MCP
Connect the Actor to Claude Code or another MCP client through Apify MCP.
Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/zhihu-article-scraper"
Claude Desktop
Add this remote server in Settings → Developer → Edit Config:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/zhihu-article-scraper"}}}
Cursor
Open Settings → Tools & Integrations → MCP, add a remote HTTP server, and use:
https://mcp.apify.com/?tools=automation-lab/zhihu-article-scraper
VS Code
Open the Command Palette, choose MCP: Add Server, select HTTP, and enter the same Apify MCP URL.
Example prompts:
- “Extract these three Zhihu articles and summarize their shared themes.”
- “Return Markdown and author metadata for this Zhuanlan URL.”
- “Compare votes and update dates across my monitored article list.”
Data quality notes
Counts are snapshots from the public page at extraction time.
Optional source fields can be null when Zhihu does not expose them.
Plain text intentionally collapses whitespace for downstream analysis.
Markdown preserves meaningful headings, links, lists, and images where possible.
HTML is sanitized and does not include executable page scripts.
Limitations
Zhihu can change its public page structure or apply regional rate limits.
The Actor cannot access login-only, private, deleted, or removed articles.
It does not discover article URLs for you.
It does not execute JavaScript or solve human verification challenges.
Engagement values can change after a run completes.
Is it legal to scrape Zhihu articles?
Public web data can still be subject to copyright, database rights, privacy law, contract terms, and local regulation.
Use the Actor only for data you are authorized to collect.
Do not republish copyrighted article bodies without an appropriate legal basis.
Minimize personal data, respect deletion requests, and follow Zhihu's applicable terms.
This information is general guidance, not legal advice.
Troubleshooting
Why did my URL fail validation?
Only public zhuanlan.zhihu.com/p/{numeric-id} article URLs are supported.
Question, answer, profile, search, and column-list URLs fail closed.
Why did the run return HTTP 403 or 429?
Reduce concurrency and try an Apify Proxy configuration appropriate for your lawful use case.
Avoid repeatedly retrying a restricted article.
Why did the run fail with no output?
The article may be private, deleted, incomplete, or blocked.
Review the log message for each submitted URL and test a known public article.
Why is an optional field null?
Zhihu does not expose every author, permission, or location field on every article.
The Actor preserves absence rather than inventing a value.
FAQ
Can I scrape a list of Zhihu search results?
No. This version accepts known public article URLs only.
Can I scrape questions and answers?
No. Q&A uses a different protected surface and is intentionally outside this Actor's scope.
Does it require cookies or a Zhihu account?
No for supported public article pages.
Can I obtain Markdown for RAG ingestion?
Yes. Use contentMarkdown, or use contentText for embedding pipelines that do not need structure.
Are duplicate URLs charged twice?
No. Canonical duplicates are removed within the run before fetching.
Can I schedule the Actor?
Yes. Save the input as an Apify Task and attach a schedule.
Related scrapers
Explore other purpose-built tools from Automation Labs:
- Reddit Scraper for communities, posts, and discussion research.
- Medium Scraper for English-language publishing workflows, when available.
- G2 Scraper for software review intelligence.
Use a related Actor only when its source and entity type match your workflow.
Start extracting Zhihu articles
Paste a public Zhuanlan article URL, run the prefilled example, and inspect the structured dataset.
For recurring work, save the configuration as a task and connect the resulting dataset to your research or AI pipeline.