I want to get the number of active users through the API, exactly the same as what is exported. Which API should I use to get it?
Active in what sense: daily, weekly, monthly or yearly?
To obtain, all currently active users, that is, the total number of users
So you mean all online users, i.e. those that are currently on the forum at that time?
what about /admin/users/list/active.json?
maybe this doc will help?
https://docs.discourse.org/#tag/Users/operation/adminListUsers
also see
No, it’s the total number of active users on the website, meaning how many people are currently on the website.
You can pull the data from {site url}/about.json, and get the users_count key’s value. For example on Meta:
{
"about": {
"stats": {
"topics_last_day": 16,
"topics_7_days": 99,
"topics_30_days": 553,
"topics_count": 60801,
"posts_last_day": 549,
"posts_7_days": 3352,
"posts_30_days": 19273,
"posts_count": 1722045,
"users_last_day": 23,
"users_7_days": 132,
"users_30_days": 713,
"users_count": 61086, // This value here!
"active_users_last_day": 535,
"active_users_7_days": 1219,
"active_users_30_days": 2518,
"likes_last_day": 169,
"likes_7_days": 1547,
"likes_30_days": 10833,
"likes_count": 1641538,
"participating_users_last_day": 119,
"participating_users_7_days": 373,
"participating_users_30_days": 912,
"visitors_last_day": 2161,
"visitors_7_days": 4468,
"visitors_30_days": 8669,
"eu_visitors_last_day": 653,
"eu_visitors_7_days": 1206,
"eu_visitors_30_days": 2022,
"chat_messages_last_day": 72,
"chat_messages_7_days": 707,
"chat_messages_30_days": 3015,
"chat_messages_previous_30_days": 3621,
"chat_messages_count": 99670,
"chat_users_last_day": 8,
"chat_users_7_days": 27,
"chat_users_30_days": 67,
"chat_users_previous_30_days": 87,
"chat_users_count": 925,
"chat_channels_last_day": 3,
"chat_channels_7_days": 8,
"chat_channels_30_days": 39,
"chat_channels_previous_30_days": 36,
"chat_channels_count": 3117
},
"description": "Learn about and discuss Discourse, the next-generation open-source forum software.",
"extended_site_description": "<p>A place for the Discourse community to meet, ask questions, provide support to one other, and share much-appreciated feedback.</p>",
"banner_image": "https://d11a6trkgmumsb.cloudfront.net/original/4X/8/3/5/835377a3ea23f75e6c6c08ed3d7d606a0f2c3e72.jpeg",
"site_creation_date": "2016-02-17T07:50:40.228Z",
"title": "Discourse Meta",
"locale": "en",
"version": "3.6.0.beta1-dev",
"https": true,
"can_see_about_stats": true,
"contact_url": "",
"contact_email": "team@discourse.org",
"moderator_ids": [
127856,
112395,
8307,
8571,
140271
],
"admin_ids": [],
"category_moderators": []
}
}
the users_count number is 61086.
Yes, I am currently using the user data obtained from the API here, but it does not match the total number of users_count on Meta: {site url}/about.json. I want to analyze the reason.
This is to get the total number of users, but I want to get the user list. This is because the number of users I get from https://docs.discourse.org/#tag/Users/operation/adminListUsers is not the same as the users_count from {site url}/about.json, and many users are missing.
Hi there, what about this (Discourse Docs) API call? For example, https://meta.discourse.org/directory_items.json?period=all&order=likes_received gets all the users ordered by likes. You can add &page=2, &page=3 at the back for more pages of users.
Did you use the page parameter to get all pages?
Yes, paginated retrieval continues until no more data is returned. For example, if there are 34,000+ records in total, but only 30,000+ are obtained, I cannot distinguish which users are unobtainable through the API interface.
So what if you looped through each page (maybe using something like Python) to increment the page number and fetch the data until there’s no data left to fetch? Would that work?
I think using a data explorer query would be the easiest way to get the whole user list.
Yes, it has been processed. The previous discrepancy was due to using default conditions when retrieving data via the API, which only fetched active users.