Discourse Community Scraper avatar

Discourse Community Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Discourse Community Scraper

Discourse Community Scraper

Scrape any public Discourse forum with latest topics, trending discussions, category browsing, tag filtering, full-text search, user profiles, and complete post threads. Works with meta.discourse.org, community forums, and any self-hosted Discourse.

Pricing

from $3.00 / 1,000 results

Rating

5.0

(7)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

7

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Extract topics, discussions, and posts from any public Discourse forum. Supports latest topics, trending discussions, category browsing, tag filtering, full-text search, user activity, and complete post threads — all via the standard Discourse REST API.

Works with meta.discourse.org, community.cloudflare.com, and any self-hosted Discourse instance.

What It Does

  • Latest topics — fetch the most recently active discussions
  • Top/trending topics — get the most popular topics by time period (daily/weekly/monthly/yearly)
  • Browse by category — explore topics within a specific forum category
  • Filter by tag — find all topics with a given tag
  • Full-text search — search across all forum topics by keyword
  • User topics — get all topics created by a specific user
  • Get posts — fetch all posts/replies within a specific topic thread

Input Schema

FieldTypeDescriptionDefault
forumUrltext (required)Base URL of the Discourse forum
modeselectScraping mode (see modes below)latestTopics
periodselectTime period for top topics: daily, weekly, monthly, quarterly, yearly, allweekly
categorySlugtextCategory slug or path (e.g., support, meta/7)
tagtextTag name to filter by (e.g., bug, feature-request)
searchQuerytextSearch query for finding topicsgetting started
usernametextForum username for byUser mode
topicIdintegerNumeric topic ID for getPosts mode
apiKeytext (secret)API key for private forums (optional)
apiUsernametextUsername associated with the API key
maxItemsintegerMaximum records to return (1–5000)50

Modes

ModeDescriptionRequired Fields
latestTopicsMost recently active topicsforumUrl
topTopicsTop topics by engagementforumUrl, period
byCategoryTopics within a categoryforumUrl, categorySlug
byTagTopics with a specific tagforumUrl, tag
searchTopicsFull-text search resultsforumUrl, searchQuery
byUserTopics created by a userforumUrl, username
getPostsAll posts in a topic threadforumUrl, topicId

Output Schema

Topic Record (recordType: "discourseTopic")

FieldTypeDescription
topicIdintegerUnique topic ID
titlestringTopic title
slugstringURL-friendly topic slug
urlstringFull URL to the topic
postsCountintegerTotal number of posts in the topic
viewsintegerNumber of views
likeCountintegerTotal likes received
replyCountintegerNumber of replies
createdAtstringISO 8601 creation timestamp
lastPostedAtstringISO 8601 timestamp of most recent post
categoryIdintegerCategory ID
categoryNamestringHuman-readable category name
tagsarrayList of tag names
authorUsernamestringUsername of the original poster
authorNamestringDisplay name of the original poster
excerptstringShort excerpt from the first post
solvedbooleanWhether the topic has an accepted answer
pinnedbooleanWhether the topic is pinned
highestPostNumberintegerHighest post number in the thread
wordCountintegerTotal word count of the topic
forumUrlstringBase URL of the source forum
recordTypestringAlways discourseTopic
scrapedAtstringISO 8601 scrape timestamp

Post Record (recordType: "discoursePost")

FieldTypeDescription
postIdintegerUnique post ID
topicIdintegerParent topic ID
postNumberintegerPosition in the thread
urlstringDirect URL to the post
authorUsernamestringPost author's username
authorNamestringPost author's display name
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 last update timestamp
cookedstringRendered HTML content
rawstringRaw markdown content
likeCountintegerNumber of likes on this post
replyCountintegerNumber of replies to this post
isAcceptedAnswerbooleanWhether this post is the accepted solution
recordTypestringAlways discoursePost
scrapedAtstringISO 8601 scrape timestamp

Example Output

Topic

{
"topicId": 12345,
"title": "How to set up email notifications?",
"slug": "how-to-set-up-email-notifications",
"url": "https://meta.discourse.org/t/how-to-set-up-email-notifications/12345",
"postsCount": 8,
"views": 1250,
"likeCount": 23,
"replyCount": 7,
"createdAt": "2024-03-15T09:30:00.000Z",
"categoryName": "Support",
"tags": ["email", "notifications", "configuration"],
"authorUsername": "john_doe",
"solved": true,
"forumUrl": "https://meta.discourse.org",
"recordType": "discourseTopic",
"scrapedAt": "2026-05-15T10:00:00+00:00"
}

Post

{
"postId": 56789,
"topicId": 12345,
"postNumber": 3,
"url": "https://meta.discourse.org/t/how-to-set-up-email-notifications/12345/3",
"authorUsername": "admin_user",
"cooked": "<p>Go to Admin → Settings → Email and configure your SMTP server.</p>",
"likeCount": 15,
"isAcceptedAnswer": true,
"recordType": "discoursePost",
"scrapedAt": "2026-05-15T10:00:00+00:00"
}

FAQ

Does it work with any Discourse forum? Yes. The scraper uses the standard Discourse REST API (all .json endpoints) that is available on every Discourse instance — both hosted and self-hosted. Simply provide the forum's base URL.

Do I need an API key? No API key is needed for public forums. The apiKey and apiUsername fields are only required if the forum restricts access to logged-in users.

How do I find the category slug? Look at the forum URL when browsing a category. For example, https://meta.discourse.org/c/support/6 uses the slug support or the path support/6.

How many posts can I get from a topic? Using mode=getPosts, the scraper fetches all posts in a topic, paginating through the full thread. Set maxItems to control the upper limit.

Can I scrape a private Discourse forum? Yes, if you have valid API credentials. Provide your API key in the apiKey field and your username in apiUsername. The forum administrator generates API keys in the admin panel.

What's the difference between postsCount and replyCount? postsCount is the total number of posts in the thread (including the original post). replyCount counts only replies made to other posts within the thread.

How does the solved/accepted answer work? Discourse has an optional "Solved" plugin that lets users mark a reply as the accepted answer. If a forum uses this plugin, solved=true appears on topics that have an accepted answer, and isAcceptedAnswer=true appears on the specific accepted post.

Can I search across multiple forums in one run? Each run targets one forum URL. To scrape multiple forums, run the actor multiple times with different forumUrl values.