How to get Dcard Topics & Trends with the API
Monitor public Dcard topics without an account. dcard.tw is one page of it. A run reads that public list and saves one row per result.
Set up the Apify actor
Apify is where this run is collected. An actor is the program that collects the rows. A task is that program saved with your settings, so the next section can ask for the latest rows. You need a free Apify account.
- 01Open Dcard Topics & Trends and click Try for free. Create an Apify account if you do not have one. The Free plan does not ask for a card.
- 02You are on the input form. Keep the sample for this first run.
{ "topicUrls": [ "https:// www.dcard.tw/ topics/ %E7%9C%81%E9%8C%A2" ], "maxItems": 1, "samplePostsPerTopic": 0, "includeLatest": false, "includeTrending": true } - 03Leave the proxy setting as it is. Click Start and wait until the run says Succeeded.
- 04Open Storage, then Dataset. You should see
topicName,topicUrl,followerCount,postCount. - 05When you want the real list, raise maxItems. The sample cap is only there so the first run stays small.
- 06Go back to the input and choose Save as a new task. Name it after this list.
- 07Open the task. Copy the task ID from the address bar. Excel, Sheets, Power BI, and the other guides ask for this ID.
- 08On the task, open Schedules and add a weekly run if you want fresh rows. Each run pays the start charge and the charge for the rows. The amounts are in the price list on this page.
- 09Open Settings, then API & Integrations, and copy an API token. Excel, Sheets, and the other guides put this token in a download link. Anyone with that link can download the rows, so treat it like a password.
How to set up with the API
- 01Use the API token from Set up the Apify actor, above.
- 02Send this request. Replace
YOUR_TOKEN. It waits up to 120 seconds.curl -X POST "https:// api.apify.com/ v2/ acts/ bakos_bence~dcard-topics-trends/ runs? token=YOUR_TOKEN& waitForFinish=120" \ -H "Content-Type: application/ json" \ -d '{ "topicUrls": [ "https:/ / www.dcard.tw/ topics/ %E7%9C%81%E9%8C%A2" ], "maxItems": 1, "samplePostsPerTopic": 0, "includeLatest": false, "includeTrending": true }' - 03From the response, copy
defaultDatasetId. - 04Fetch the rows. Replace
DATASET_IDandYOUR_TOKEN.https:// api.apify.com/ v2/ datasets/ DATASET_ID/ items? format=json& clean=true& token=YOUR_TOKEN - 05To repeat it, use the task and the weekly schedule from Set up the Apify actor, above. A scheduled task's newest rows are this URL, with your task id and token:
https:// api.apify.com/ v2/ actor-tasks/ TASK_ID/ runs/ last/ dataset/ items? format=json& clean=true& status=SUCCEEDED& token=YOUR_TOKEN - 06Anyone with a URL that contains the token can read the rows.
Schema
Examples come from the actor sample, not a live result.
| Name | Description | Example |
|---|---|---|
topicName | Public topic label | AI |
topicUrl | Canonical public topic URL | https:/ |
followerCount | Public follower count, when Dcard exposes it | 12345 |
postCount | Public topic post count, when exposed | 987 |
latestPosts | Sampled latest posts with URL, title, date, and public engagement | [{"id":260002,"url":"https:/ |
trendingPosts | Sampled popular/trending posts with the same fields | [] |
observedPostCount | Unique posts actually present in the two samples | 1 |
observedEngagementCount | Sum of exposed likes, comments, and shares across observed posts | 16 |
observedAverageEngagement | Average over posts whose engagement was exposed | 16 |
observedMaxEngagement | Highest exposed sampled-post engagement | 16 |
topicNamePublic topic labelAItopicUrlCanonical public topic URLhttps:// www.dcard.tw/ topics/ AI followerCountPublic follower count, when Dcard exposes it12345postCountPublic topic post count, when exposed987latestPostsSampled latest posts with URL, title, date, and public engagement[{"id":260002,"url":"https:// www.dcard.tw/ f/ 3c/ p/ 260002","title":"AI 工具實測","forumAlias":"3c","createdAt":"2026-10-02T00:00:00.000Z","likeCount":12,"commentCount":4,"shareCount":nul trendingPostsSampled popular/trending posts with the same fields[]observedPostCountUnique posts actually present in the two samples1observedEngagementCountSum of exposed likes, comments, and shares across observed posts16observedAverageEngagementAverage over posts whose engagement was exposed16observedMaxEngagementHighest exposed sampled-post engagement16
The same row as JSON
{
"topicName": "AI",
"topicUrl": "https://www.dcard.tw/topics/AI",
"followerCount": "12345",
"postCount": "987",
"latestPosts": "[{\"id\":260002,\"url\":\"https://www.dcard.tw/f/3c/p/260002\",\"title\":\"AI 工具實測\",\"forumAlias\":\"3c\",\"createdAt\":\"2026-10-02T00:00:00.000Z\",\"likeCount\":12,\"commentCount\":4,\"shareCount\":nul",
"trendingPosts": "[]",
"observedPostCount": "1",
"observedEngagementCount": "16",
"observedAverageEngagement": "16",
"observedMaxEngagement": "16"
}