Toutiao APItoutiao.com ↗
Access Toutiao's homepage feed, category feeds, article details, trending hot list, comments, and video content via a structured JSON API.
What is the Toutiao API?
The Toutiao API provides 7 endpoints covering China's leading news aggregation platform, returning structured article data from feeds, search, and detail pages. You can pull the homepage feed with get_homepage_feed, fetch category-specific articles using channel slugs like news_tech or news_entertainment, retrieve full HTML article content, and query the trending hot board — all in a single API surface.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/ec8d8006-f607-43ff-ae22-6c64882ca5a2/get_homepage_feed' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace toutiao-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Toutiao API — browse feeds, trending topics, article details, and comments."""
from parse_apis.toutiao_api import Preview, Channel, ArticleNotFound
client = Preview()
# Browse trending topics on the Toutiao Hot Board.
for topic in client.trendingtopics.list(limit=3):
print(topic.title, topic.hot_value)
# Get the homepage feed and drill into one article's detail.
article = client.feeds.homepage(limit=1).first()
if article:
print(article.title, article.comment_count)
detail = article.get()
print(detail.title, detail.publish_time, detail.source)
# Get articles from a specific channel using the Channel enum.
for art in client.feeds.by_channel(channel=Channel.NEWS_TECH, limit=3):
print(art.title, art.digg_count, art.has_video)
# Fetch comments for a known article, with typed-error handling.
target = client.article(item_id="7649766554606879270")
try:
for comment in target.comments(limit=3):
print(comment.user_name, comment.text[:60], comment.digg_count)
except ArticleNotFound as exc:
print(f"Article not found: {exc.article_id}")
print("exercised: trendingtopics.list / feeds.homepage / article.get / feeds.by_channel / article.comments")
Fetch the main recommended article feed from the Toutiao homepage. Returns an array of article objects with metadata including title, abstract, comment count, and article/group IDs usable for detail and comment endpoints.
No input parameters required.
{
"type": "object",
"fields": {
"articles": "array of article objects with fields: title, Abstract, article_url, group_id, item_id, comment_count, digg_count, media_info, publish_time, source, has_video"
},
"sample": {
"data": {
"articles": [
{
"item_id": "7634676592689545743",
"Abstract": "五月神州,又一个礼赞劳动的节日如期到来。",
"group_id": "7634676592689545743",
"has_video": false,
"digg_count": 836,
"article_url": "https://content-static.cctvnews.cctv.com/snow-book/index.html?item_id=15876166303712142271",
"publish_time": 1777586679,
"comment_count": 444
}
]
},
"status": "success"
}
}About the Toutiao API
Feeds and Article Data
The get_homepage_feed endpoint returns an array of article objects from Toutiao's main recommended feed, each carrying fields including Abstract, article_url, group_id, item_id, comment_count, digg_count, media_info, and publish timestamp. The get_category_feed endpoint accepts a required channel parameter — verified values include news_tech, news_entertainment, news_sports, news_finance, and video — and returns the same article object shape scoped to that channel.
Article Detail and Comments
get_article_detail takes an article_id (a numeric string obtainable from feed endpoints) and returns the full HTML content, title, source, abstract, itemId, and publishTime. Video articles return a distinct schema that includes video playback metadata. get_article_comments accepts the same article_id along with optional count and offset parameters for pagination, returning comment objects with id, text, user_name, digg_count, create_time, and publish_location.
Search and Trending
search_articles accepts a required keyword and an optional type parameter — news, video, or synthesis — and returns results with fields including title, abstract, source, url, item_id, publish_time, and comment_count. Chinese-language keywords yield the broadest result coverage across all search types. The get_hot_trending_list endpoint requires no inputs and returns ranked trending topic objects carrying Title, HotValue, Label, Url, ClusterId, InterestCategory, and QueryWord fields.
Video Feed
get_video_feed returns the same article object structure as category feeds but scoped to video content, with a has_video flag and large_image_list field on each article object. The channel field in the response is always video.
The Toutiao API is a managed, monitored endpoint for toutiao.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when toutiao.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official toutiao.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor the Toutiao trending hot list to track breaking news topics by
HotValueandTitlein real time. - Aggregate Chinese-language technology news by querying
get_category_feedwith thenews_techchannel. - Build a comment analytics dataset using
get_article_commentswithcountandoffsetto paginate through reader engagement on specific articles. - Track media source publication frequency by extracting the
sourceandpublishTimefields fromget_article_detailresponses. - Search for topic coverage across Toutiao using
search_articleswithtype=synthesisand Chinese-language keywords. - Identify trending video content by cross-referencing
get_video_feedarticledigg_countvalues against the hot board. - Pull article
comment_countanddigg_countfrom feed endpoints to rank engagement across categories.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Toutiao have an official developer API?+
What does `get_hot_trending_list` return and how is it ranked?+
HotValue field indicating relative rank, a Title, a QueryWord for triggering follow-on searches, an InterestCategory label, and a Url linking to the topic page. There are no input parameters — the list reflects Toutiao's current hot board at the time of the request.Does `search_articles` work with English keywords?+
video search type, which works best with Chinese-language terms. The news and synthesis types return more results with Chinese keywords as well, reflecting Toutiao's primary Chinese-language content corpus.Does the API expose author profile pages or follower data?+
Can I fetch multiple pages of comments for a single article?+
get_article_comments supports pagination via the offset integer parameter. Increment offset by the value of count on each successive request to walk through additional comment pages. The response includes a message field confirming request status, and each comment object carries a create_time for ordering.