Douban Scraper API – 豆瓣 Movies, Books, Reviews & Comments avatar

Douban Scraper API – 豆瓣 Movies, Books, Reviews & Comments

Pricing

from $2.00 / 1,000 subject / list rows

Go to Apify Store
Douban Scraper API – 豆瓣 Movies, Books, Reviews & Comments

Douban Scraper API – 豆瓣 Movies, Books, Reviews & Comments

Douban scraper API, no login: Douban movie, TV, book & music search, ratings & details (IMDb id, star distribution), short comments (短评), full reviews (影评), cast, photos, Top 250 & hot charts, group topics. Arrays, filters, only-new delta, lean JSON for AI agents. $0.002/row, $0.01/detail.

Pricing

from $2.00 / 1,000 subject / list rows

Rating

0.0

(0)

Developer

AsiaData

AsiaData

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

22 days ago

Last modified

Security

Limited permissions

Share

Scrape Douban (豆瓣) without login: Douban movie, TV, book and music search, ratings and full details (5-star distribution, cast, IMDb id, ISBN), short comments (短评), full reviews (影评/书评), cast & crew, photos, Douban Top 250 and hot charts, explore by tag, Douban groups (小组), group topics with replies and discussion search, plus a one-call research workflow (title → details + comments + reviews + free insights row). One Actor, array inputs, flat JSON rows, free error rows with a fix, and a lean mode for AI agents.

  • No login, no cookies, no proxy needed – uses Douban's public mobile JSON endpoints; if Douban rate-limits an IP, the Actor slows down and switches to Apify Proxy by itself.
  • Fast at volume (measured on Apify, 256 MB): full Top 250 in one request (~4.6 s), 150 short comments in ~2.6 s, 10 full subject details in ~3.6 s, 100 full details in ~24 s.
  • 14 operations in one Actor, chosen automatically from your input (operation: "auto"); v2 adds subject_research and topic_search.
  • Batch everything: many keywords, URLs, ids, charts or tags in one run.
  • Agent controls: fields, include, outputMode (compact / lean / full), minRating/maxRating/stars/dateFrom filters, maxItems, maxItemsPerInput, maxCostUsd, free dryRun and capabilities, deltaKey + onlyNew monitoring.
  • Trust fields on every row (v2): isPartial, unavailableFields, collectionWarnings; the summary row lists per input how many rows were requested, returned and available on Douban.
  • Pay per result: $0.002 per list row or short comment, $0.01 per full subject detail, $0.006 per full review or group topic. Error, plan and summary rows are free.

Unofficial; not affiliated with or endorsed by Douban.

Quick start

{ "keywords": ["流浪地球", "三体"] }

returns Douban search rows (id, type, title, year, rating, rating count, one-line summary). Leave the input empty to get the real-time hottest movies chart.

You giveOperation (auto)You get
keywordssearchmovie/TV (default), book, music subject rows
urls / ids of subjectssubject_detailsfull movie/TV/book/music page
review URLsreview_detailsfull review as Markdown
group URLs / idsgroup_topicstopic list of the group
topic URLsgroup_topic_detailstopic text + images
chartschartsTop 250 / hot lists in rank order
tagsexploremovies or TV by tag

{"operation":"search","keywords":["哈利波特"],"subjectType":"movie"} – subjectType: movie (movies and TV series, default), tv (TV only), book, music, all. English titles in the dictionary are translated automatically (The Wandering Earth → 流浪地球; queryUsed shows it). Up to 500 rows per keyword. If Douban asks for login on a search, the Actor falls back to Douban's public suggest endpoint; if that is empty you get a free LOGIN_REQUIRED row whose fix says to pass subject ids/URLs, or use charts/explore.

Douban ratings & details

{"operation":"subject_details","urls":["https://movie.douban.com/subject/26266893/","https://book.douban.com/subject/1084336/"]}

Movies/TV: title, original title, aka, year, Douban rating, rating count, rating distribution (1–5 stars, %), wish/watched counts, genres, countries, languages, directors, writers, actors, durations, release dates, episodes, intro, IMDb id, honors, comment and review counts, trailers. Books: authors, translators, publisher, pages, price, ISBN, binding, series, author intro, catalog. Music: singers, tracks, label, medium, barcode. Ids alone work too – movie/TV/book/music is detected without extra requests. Each detail is 3 small requests sent together (data + rating distribution + info table); with fields the unneeded ones are skipped.

Add include: ["details"] to search, charts or explore to get these full rows instead of list rows. Tip: {"charts":["movie_top250"],"maxItemsPerInput":250,"include":["details"],"fields":["title","rating","imdbId","ratingDistribution"]} maps the Top 250 to IMDb ids and star distributions with 2 tiny requests per film.

Douban research in one call (subject_research, v2)

{"operation":"subject_research","keywords":["流浪地球2"],"maxCommentsPerItem":50,"maxReviewsPerItem":10,"matchTerms":["特效"]} – finds the title, then returns 1 full subject detail row, the hot short comments, the reviews, and one free insights row per subject. Controls: maxSubjects (top hits per keyword, 1–10), maxCommentsPerItem (0–150), maxReviewsPerItem (0–40), include: ["fullText"] for review bodies (+ "replies" to embed review replies), minRatingCount, matchTerms, maxCostUsd. Ids/URLs work too ("ids":["1292052"]).

The insights row is computed from the rows returned in that run, with no LLM: author star mix, a heuristic sentiment split (author stars first, else a small Chinese/English word list), top Chinese 2–4 character terms, top IP provinces, per-term counts for matchTerms, and the most-voted positive and negative opinion. It also carries Douban's official rating and star distribution, so you can compare the sample with all ratings. matchTerms filters after fetching and before billing: rows that do not mention a term are not billed, but the fetch work is the same.

Measured on Apify (build 2.0.1, 256 MB): 1 detail + 20 comments + 5 reviews + insights in 5.9 s wall time (8 Douban requests), cost $0.06 (1 × $0.01 + 25 × $0.002).

Douban short comments (短评)

{"operation":"comments","ids":["26266893"],"maxItemsPerInput":50,"maxRating":2} – star rating (1–5), text, useful votes, time, province, user name + id. Filters minRating, maxRating, stars, dateFrom, textContains run before billing. Douban shows guests the ~150 hottest comments per subject.

Douban reviews (影评 / 书评)

{"operation":"reviews","ids":["26266893"],"include":["fullText"],"maxItemsPerInput":10} – title, abstract, stars, useful/useless votes, replies, reshares, time, user. With include: ["fullText"] each row carries the full review body as Markdown (+ images, read count, spoiler flag). Single reviews: {"operation":"review_details","urls":["https://movie.douban.com/review/9943996/"]}. Douban shows guests ~40 reviews per subject.

Douban cast & photos

{"operation":"celebrities","ids":["26266893"]} – directors and actors with character, roles, Latin name, avatar, celebrity id. {"operation":"photos","ids":["26266893"],"maxItemsPerInput":20} – stills and posters with image URL, size, caption, likes.

Douban Top 250 & charts

{"operation":"charts","charts":["movie_top250"],"maxItemsPerInput":250}

Chart ids: movie_top250, movie_showing (now showing), movie_soon, movie_real_time_hotest, movie_weekly_best, movie_hot_gaia, movie_latest, tv_real_time_hotest, tv_hot, tv_domestic, tv_american, tv_korean, tv_japanese, tv_animation, tv_variety_show, show_domestic, tv_chinese_best_weekly, tv_global_best_weekly, book_top250, book_fiction, book_nonfiction, book_bestseller, book_hot, book_latest, music_single, music_chinese, music_hot, movie_scifi, movie_comedy, movie_love. Aliases like top250, now_showing, kdrama work, and so does any subject_collection id. With deltaKey every row gets isNew, previousRank and rankChange.

Explore Douban by tag

{"operation":"explore","tags":["科幻"],"subjectType":"movie","sortBy":"rating","minRating":8} – movies or TV (subjectType: "tv") by Douban tag (科幻, 喜剧, 美国, 韩剧, 豆瓣高分…; combine as "科幻,美国"), sorted by recommend, hot, time or rating.

Douban groups (小组)

  • Find groups: {"operation":"group_search","keywords":["租房"]}
  • Topic list: {"operation":"group_topics","ids":["beijingzufang"],"maxItemsPerInput":50,"sortBy":"latest"} (default order = latest activity; also hot, elite)
  • Topic text: {"operation":"group_topic_details","urls":["https://www.douban.com/group/topic/502396963/"]} – body as Markdown, images, reply count, likes, province.
  • Topic replies (v2): add "include":["replies"] (and maxRepliesPerItem, default 20, max 200) – the topic row gets a replies array (text, votes, time, province, user, quoted reply-to) and repliesTotal. Replies are embedded in the topic row and cost nothing extra (the topic stays $0.006). Same for full reviews: review_details or reviews + fullText with include: ["replies"] embeds the review's replies (nested replies flattened, replyToId/replyToName set).
  • Discussion search across all groups (v2): {"operation":"topic_search","keywords":["小米SU7"],"sortBy":"latest"} – topic id, full title, reply count, last activity time, group id + name ($0.002 per row, up to 500 per keyword). Douban's search is fuzzy: results can include topics that only match part of the keyword; use textContains to keep exact matches.

For AI agents

  • One call, many inputs: every primary field is an array. Nothing is required.
  • Cheap first look: {"operation":"capabilities"} (free manifest: operations, chart ids, fields, prices, limits) and "dryRun": true (free cost/row estimate per input).
  • Token-lean output: "outputMode":"lean" drops null/empty keys and the envelope (kept once in the summary row), cuts long texts to 300 chars, keeps the first 10 actors (ask fields:["actors"] for all); "leanFormat":"table" also returns one TSV table. fields keeps only what you need and skips requests for fields you did not ask for.
  • Never silent: a failed input returns a free type: "error" row with errorCode (MISSING_INPUT, INVALID_INPUT, INVALID_URL, NOT_FOUND, NO_RESULTS, LOGIN_REQUIRED, UNSUPPORTED_OPERATION, BUDGET_REACHED, PARTIAL, BLOCKED, UPSTREAM_ERROR), message and fix. The run still succeeds; the last row is always type: "summary" (rows, billed events, cost, warnings, next steps) and the status message repeats the first fix.
  • Budget: maxItems (default 100), maxItemsPerInput (default 20), maxCostUsd.
  • Trust & completeness (v2): every data row has isPartial, unavailableFields (e.g. ratingDistribution when that request failed) and collectionWarnings. Rule: 0 = Douban reported zero, null = Douban does not provide the value. A list that stops on a failed page returns the rows before it plus a free PARTIAL row. The summary has requestedRows, returnedRows and perInput (requested, returned, availableOnDouban, stopReason).
  • Computed fields (v2, documented in capabilities): subject details get positivePct / negativePct (share of 4–5 / 1–2 star ratings), wishToDoneRatio, commentsPer1kRatings, reviewsPer1kRatings; reviews get helpfulRatio; topics get likesPerReply. Null when an input is missing.
  • Titles instead of ids: comments, reviews, subject_details, celebrities and photos accept keywords – each is resolved to its top search hit for free.

Copy-paste inputs:

{"operation":"search","keywords":["流浪地球","三体"]}
{"operation":"search","keywords":["三体"],"subjectType":"book","outputMode":"lean"}
{"operation":"subject_details","ids":["26266893","1084336"],"fields":["title","rating","ratingCount","ratingDistribution","imdbId","isbn"]}
{"operation":"comments","ids":["26266893"],"maxItemsPerInput":100,"stars":["1","2"],"outputMode":"lean"}
{"operation":"reviews","keywords":["流浪地球"],"include":["fullText"],"maxItemsPerInput":5}
{"operation":"review_details","urls":["https://movie.douban.com/review/9943996/"]}
{"operation":"celebrities","ids":["26266893"]}
{"operation":"photos","ids":["26266893"],"maxItemsPerInput":20}
{"operation":"charts","charts":["movie_top250","book_top250"],"maxItemsPerInput":250,"maxItems":500,"deltaKey":"top250"}
{"operation":"explore","tags":["韩剧"],"subjectType":"tv","sortBy":"hot"}
{"operation":"group_search","keywords":["租房"]}
{"operation":"group_topics","ids":["beijingzufang"],"maxItemsPerInput":50,"onlyNew":true,"deltaKey":"bj-rent"}
{"operation":"group_topic_details","ids":["502396963"]}
{"operation":"subject_research","keywords":["流浪地球2"],"maxCommentsPerItem":50,"maxReviewsPerItem":10}
{"operation":"subject_research","ids":["1292052","2567698"],"include":["fullText","replies"],"maxReviewsPerItem":5,"outputMode":"lean"}
{"operation":"comments","ids":["26266893"],"maxItemsPerInput":100,"include":["insights"]}
{"operation":"group_topic_details","urls":["https://www.douban.com/group/topic/502224433/"],"include":["replies"],"maxRepliesPerItem":100}
{"operation":"topic_search","keywords":["小米SU7"],"sortBy":"latest","maxItemsPerInput":50}
{"operation":"capabilities"}

Output example

Compact comment row:

{"type":"comment","operation":"comments","input":"26266893","queryUsed":"26266893","id":"1656169114","url":"https://movie.douban.com/subject/26266893/comments","fetchedAt":"2026-10-13T06:00:00.000Z","rank":1,"commentId":"1656169114","subjectId":"26266893","rating":3,"text":"1.从特效和技术上讲,这应该是迄今为止此类中国电影的巅峰了…","voteCount":6511,"createdAt":"2019-02-05T16:29:48+08:00","region":null,"userName":"frozenmoon","userId":"1233038"}

Lean subject row (charts):

{"type":"subject","id":"1292052","rank":1,"subjectType":"movie","title":"肖申克的救赎","year":1994,"rating":9.7,"ratingCount":3350087,"cardSubtitle":"1994 / 美国 / 剧情 犯罪 / 弗兰克·德拉邦特 / 蒂姆·罗宾斯 摩根·弗里曼","chart":"movie_top250"}

Times are ISO 8601 with Beijing offset (+08:00); lean rows use compact UTC (2019-02-05T08:29Z).

Pricing (pay per event)

EventPriceWhat
subject-row$0.002search / chart / explore row, cast member, photo, group, group-topic list row
subject$0.01full subject detail (subject_details or include details)
comment$0.002short comment or review list row
review$0.006review with full Markdown body
group-topic$0.006group topic with full text
Actor start$0.00005per run

Error, plan, capabilities, insights and summary rows are free; replies embedded with include: ["replies"] cost nothing extra. Rows dropped by filters or onlyNew are not billed.

Limits

  • Douban shows guests ~150 hot short comments and ~40 reviews per subject, and ~300 topics per group; deeper pages need a Douban account and are not scraped.
  • Newest-first comments/reviews require login on Douban; sortBy: "latest" returns the visible hot pool sorted by time (stated in the summary warnings).
  • Replies are capped at 200 per review/topic row (maxRepliesPerItem). If a replies request fails (e.g. Douban asks for login on a locked thread), the row is still returned with isPartial: true and unavailableFields: ["replies"].
  • Insights are heuristic: the sample is the hot comments/reviews Douban shows guests (biased toward popular opinions); sentiment uses stars or a small word list, not a model.
  • Some searches may get Douban's need_login answer; you then get suggest-endpoint rows or a free LOGIN_REQUIRED row with a fix.
  • Privacy: only user display name, user id and province are returned for comment/review/topic authors.
  • Cast and photos exist for movies and TV only (books/music return a free UNSUPPORTED_OPERATION row).

FAQ

Do I need a Douban account or cookies? No. Nothing in the input asks for credentials.

Can I monitor a chart or a group? Yes: schedule the Actor with the same deltaKey; set onlyNew: true to receive (and pay for) only new rows. Chart rows show rank changes.

What does 1,000 rows cost? Search, chart or explore rows: $2. Short comments: $2. Full subject details: $10. Full reviews: $6. Example: Top 250 + full details for all 250 films = $2.50; 150 comments on one film = $0.30. Platform usage is included in these prices.

How fast is it? One request to Douban takes ~0.4–1.7 s from Apify's servers; the Actor keeps up to 8 in flight. Typical runs finish in 2–5 s; 100 full subject details in ~15–25 s.

Is this the official Douban API? No. It is an unofficial scraper of public pages. Unofficial; not affiliated with Douban.