# Zhihu Scraper: Question Answers, Votes and Authors

> Zhihu scraper: paste a Zhihu question URL or ID and get its public answers with text, images, author, upvotes, date and link. No login, cookies or API key.

URL: https://cliqtomedia.com/actors/zhihu-scraper/

Category: Social media & communities · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/zhihu-scraper?fpr=cliqto

Paste a Zhihu (知乎) question link or ID. You get its public answers as a table, one row per answer. Each row has the text, author, upvotes, date and link.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `https://www.zhihu.com/question/19805218` in Question URLs or IDs. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Paste a Zhihu (知乎) question URL or ID and get its public answers as a table: full text, HTML, image links, author, upvotes, date and link. No login, cookies or API key.



### Good for

- You want to know what Chinese users think about a product, brand or topic, and you already have the question links.
- You compare opinions across several Zhihu questions in one table.
- You want answer text in your own research, translation or AI workflow.
- You need a CSV or Excel file of answers without a Zhihu account.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.0008 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Question checked | $0.0005 (from $0.00035 on paid Apify plans) | One valid question checked, including a question Zhihu does not return. |
| Answer | $0.0027 (from $0.00189 on paid Apify plans) | One public answer saved with its available text, HTML, images, author, votes and date. |

- One result: about $0.0035.
- 1,000 results: about $2.70.
- Every day 100 results, for 30 days: about $8.12 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 8 November 2026. Current price: https://apify.com/cliqtomedia/zhihu-scraper?fpr=cliqto

## Questions

### Do I need a Zhihu account or cookies?

No. The tool reads only what Zhihu shows without a login.

### Can I search Zhihu by keyword?

No. Find the question first, then paste its link.

### Why are there fewer answers than on the website?

The site can show more to signed-in users. The tool saves what Zhihu returns without a login.

### Are the answers translated?

No. You get the original text, usually in Chinese. `contentVariant` is `original` and `sourceLanguage` is `zh`.

## Data fields

- `questionId` (string): Zhihu question ID.
- `answerId` (string): Zhihu answer ID, preserved as a string.
- `title` (string): Question title.
- `author` (string): Public author name, or null when missing.
- `authorBio` (string): Short description the author shows on Zhihu, or null when missing.
- `authorAvatarUrl` (string): Link to the public author picture, or null when missing. The file is not downloaded.
- `content` (string): Answer text. Null for image-only answers or when the source provides no body.
- `contentHtml` (string): Answer HTML with active scripts and tracking images removed.
- `media` (array): Public image, audio and video URLs found in the answer HTML. Files are not downloaded.
- `voteups` (integer): Upvotes reported by Zhihu.
- `downvotes` (integer): Downvotes as reported by Zhihu, or null when missing.
- `comments` (integer): Comment count, only if you turn on comment counts and Zhihu returns the number without a login. Null otherwise.
- `createdAt` (string): Publication time in UTC.
- `url` (string): Canonical answer URL.
- `sourceUrl` (string): Public representation used to read the answer.
- `fetchedAt` (string): Collection time in UTC.
- `source` (string): Data source domain.
- `sourceLanguage` (string): Language of the original source representation.
- `contentVariant` (string): Original Zhihu content, not a translation.
- `sourceAnswerCount` (integer): Answer count reported by the source.
- `type` (string): Record type.
- `detailStatus` (string): Comment count lookup: not_requested (option off), available, unavailable (Zhihu did not return it) or deadline (no time left).

## Input settings

- `urls` (array, required): One Zhihu question per line. Paste a question URL such as https://www.zhihu.com/question/19805218 or just the number 19805218. Answer URLs are not accepted. Some questions are not available without signing in; the run summary lists them.
- `maxItems` (integer): Total number of answers to save across all questions. Default 20. In our tests 200 answers took 1 to 2.5 minutes and 1,000 answers took about 6 to 8.5 minutes, so raise the run timeout above 300 seconds for more than about 500 answers. Turning on comment counts makes a run much slower.
- `includeAnswerDetails` (boolean): Off by default. On: the Actor also tries to get each answer's comment count. Zhihu often asks for a login for this number, so most answers stay empty (about 1 in 7 in our tests), and each answer takes 2.5 to 4.5 seconds longer. Set a run timeout of 600 seconds or more for over 50 answers. Comment text is not collected.
- `deliveryConnector` (string): Your Slack, Notion or other MCP connector. After the run the Actor posts a short summary there. Connect services once in Apify Console → MCP connectors.
- `deliveryTarget` (string): Where to post the summary: a Notion page link (each run is added on top of that page) or a Slack channel ID. Leave empty to let the connector decide.

## Step by step on Apify

1. Open the Input tab. Keep the example question or paste your own URL or ID in Question URLs or IDs (box 1).
2. Keep Maximum answers at 20 for a first test (box 2).
3. Click Start.
4. Open the Output tab when the run ends. Read the author, answer text, upvotes and date in the Answers table (box 4).

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Learn what users say about a product | `urls` with one or more questions | Answer | `content`, `voteups`, `createdAt` | CSV or Excel for review |
| Find the answers people agree with most | `urls`, higher `maxItems` | Answer | `voteups`, `content`, `url` | Sort by `voteups` in your sheet |
| Prepare Chinese text for translation or AI analysis | `urls` | Answer | `content`, `contentHtml`, `sourceLanguage` | API or MCP |
| Collect image links from answers | `urls` | Answer | `media`, `url` | Your own review tool |
| Get a short summary in your team tool | `urls`, `deliveryConnector`, `deliveryTarget` | Answer summary | `author`, `content`, `url` | Slack or Notion |

## Tips

- You must give question links or IDs. The tool does not search by keyword.
- Set maxItems to the total number of answers to save across the questions.
- Answer text is in the original language, usually Chinese.

## Limits



- No keyword search. You must give question URLs or IDs.
- Some questions need a login. Zhihu does not return every question without one. In our tests `19550225` and `20702054` gave no answers. The Actor does not use accounts or cookies, so it reports these questions as failed.
- Answer count can be lower than on the website. The Actor saves what Zhihu returns without a login. `sourceAnswerCount` is the number Zhihu reports. Zhihu's pages can overlap, so if a question comes up short the Actor reads it again, up to 2 more times, and charges only for new answers. A second read can double or triple the time for that question, and the timeout still stops the run with saved rows.
- Very large questions end early. Zhihu can stop listing answers before the total it reports. One question reporting 1,613 answers listed 1,122 without a login, and those runs took about 8 to 9 minutes. The run keeps those rows, ends as a success with the status `partial` and the reason `PUBLIC_LIST_END`, and you pay only for saved answers.
- Comment counts are often empty. Zhihu usually asks for a login for this number. In our tests about 1 answer in 7 had a count: 12 of 100 in one run and 9 of 60 in another. Comment text and replies are not collected.
- Not collected: full user profiles, follower counts, articles, number of saves, and changes over time.
- Media are links. Files are not downloaded, and links on Zhihu's servers can stop working.
- Speed. The Actor waits about 1 second between requests. We measured 100 answers in 19 to 82 seconds (the slowest run had connection failures), 1 to 2.5 minutes for 200 answers from 2 questions, and about 6 to 8.5 minutes for 1,000 answers. With the default 300 second timeout, plan for about 500 answers, or fewer if a question has to be read again or the connection fails. A connection failure in the middle of a question adds pauses of 10 and 30 seconds. If Zhihu rejects a page, the Actor asks for fewer answers and then tries once more after 10 seconds, so a question that ends this way takes about 15 seconds instead of 3. After four pauses of either kind with no answers saved in between, the Actor stops pausing. If about 4 minutes or 20 MB pass with no answers saved, the run stops with `NO_ANSWERS_LIMIT`, at any timeout, so a list of failing questions does not stall. Pages read again to fill gaps count too, so a very large question can rarely stop this way, and its saved rows stay.

## Sample result

```json
{
  "type": "answer",
  "questionId": "19805218",
  "title": "哪些便宜好用的家用咖啡机值得推荐？",
  "answerId": "2734473811",
  "author": "evanxu",
  "authorBio": "创业 | 咖啡爱好者 | 数码家居评测",
  "authorAvatarUrl": "https://pic1.zhimg.com/v2-41a177c2ccfe082635b8cb92b6cdea73_l.jpg?source=57bf9c9b",
  "content": "题主，不知道多便宜算便宜，比如100元不到的法压壶？…",
  "contentHtml": "<p>题主，不知道多便宜算便宜…</p>",
  "media": [
    { "type": "image", "url": "https://pic1.zhimg.com/v2-b4fbe06ef907d0a0d26af950ce363492_b.gif" }
  ],
  "voteups": 14,
  "downvotes": 0,
  "comments": null,
  "createdAt": "2023-01-06T13:02:02.000Z",
  "url": "https://www.zhihu.com/question/19805218/answer/2734473811",
  "source": "zhihu.com",
  "sourceUrl": "https://www.zhihu.com/tardis/landing/m/360/qus/19805218",
  "sourceLanguage": "zh",
  "contentVariant": "original",
  "sourceAnswerCount": 136,
  "fetchedAt": "2026-11-06T08:48:27.711Z",
  "detailStatus": "not_requested"
}
```

## Use it from code

Actor ID: `cliqtomedia/zhihu-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/zhihu-scraper").call(run_input={
    "urls": [
        "https://www.zhihu.com/question/19805218"
    ],
    "maxItems": 20
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~zhihu-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://www.zhihu.com/question/19805218"], "maxItems": 20}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/zhihu-scraper")
result = tool.invoke({"run_input": {"urls": ["https://www.zhihu.com/question/19805218"], "maxItems": 20}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Similar tools

- [Quora Scraper: Answers, Upvotes, Views & Authors, No Login](https://cliqtomedia.com/actors/quora-scraper/)
- [Weibo Scraper: Posts, Comments & Profiles, No Login](https://cliqtomedia.com/actors/weibo-scraper/)
- [Bilibili Scraper: Videos, Comments & Creators, No Login](https://cliqtomedia.com/actors/bilibili-scraper/)
- [Xiaohongshu (RedNote) Notes Scraper, No Login](https://cliqtomedia.com/actors/xiaohongshu-scraper/)
- [Substack Newsletter Scraper: RSS Feed Metadata](https://cliqtomedia.com/actors/substack-newsletter-scraper/)
- [Hacker News Scraper: Stories, Comments & Parent IDs](https://cliqtomedia.com/actors/hacker-news-stories-comments-scraper/)
