Matrix Public Rooms Extractor
Pricing
from $0.35 / 1,000 room records
Matrix Public Rooms Extractor
Point at ANY Matrix homeserver and extract its public room directory over the Client-Server API. One row per room: room ID, name, topic, member count, canonical alias, avatar, join rule, room type. Opaque next_batch pagination; optional token unlocks search/space filters.
Pricing
from $0.35 / 1,000 room records
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Point at any Matrix homeserver and extract its public room directory — the
list of rooms that homeserver publishes to the federation — over the Matrix
Client-Server API (GET /_matrix/client/v3/publicRooms). One structured row per
public room, paginated through the server's own opaque next_batch cursor.
Works against any Matrix homeserver (Synapse, Dendrite, Conduit, …) — they all speak the same Client-Server directory contract, so one actor reads them all: matrix.org, matrix.tchncs.de, gnome.modular.im, mozilla.modular.im, fedora.ems.host, and thousands more.
What you get
One row per public room, keyed on the always-present room_id:
| Field | Description |
|---|---|
room_id | Canonical room ID (e.g. !abc:matrix.org) — always present |
name | Room display name (nullable — many rooms are unnamed) |
topic | Room topic / description (nullable) |
canonical_alias | Human alias, e.g. #community:matrix.org (nullable) |
num_joined_members | Joined member count (may be 0) |
avatar_url | Room avatar mxc:// URI (nullable) |
world_readable | Whether history is world-readable |
guest_can_join | Whether guests may join |
join_rule | e.g. public, knock, invite (nullable) |
room_type | e.g. m.space for spaces; null for regular rooms |
_homeserverUrl / _server / _page / _rowIndex / _totalRoomCountEstimate | Provenance |
Input
| Field | Required | Description |
|---|---|---|
homeserverUrl | ✅ | Homeserver base URL, e.g. https://matrix.org |
server | Query a different server's directory through this homeserver (?server=) — usually needs a token | |
search | Full-text filter over name/alias/topic — uses POST, usually needs a token | |
roomType | all (default) · spaces (m.space only) · rooms (exclude spaces) | |
accessToken | Matrix access token — unlocks search / room-type filters / federated queries | |
maxRecords | Stop after N rooms (default 2000) | |
pageSize | Rooms per page (default 100; server may cap lower) |
Anonymous vs authenticated
The anonymous GET listing works on any homeserver that publishes its
directory publicly — no token needed. The Matrix spec routes full-text
search, room-type filters, and federated ?server= queries through
the POST endpoint, which most homeservers gate behind an access token
(they return M_MISSING_TOKEN). Supply accessToken to use those; leave it
empty for a plain public-directory listing.
Example
{"homeserverUrl": "https://matrix.org","maxRecords": 100}
Use cases
- Federation monitoring — track which rooms a homeserver publishes over time.
- Community discovery — enumerate spaces and rooms across the Matrix network.
- Moderation intelligence — surface newly-published rooms, aliases, topics.
- Directory research — member-count and room-type distributions per server.
How it works
- Anonymous
GET /_matrix/client/v3/publicRoomsby default;POSTwith afilteronly whensearch/roomTypeis set. - Opaque-cursor pagination: the response
next_batchis echoed as the next request'ssince; the walk stops when the server omits it. Thetotal_room_count_estimateis treated as a hint, never a page terminator. - Rate limits (
M_LIMIT_EXCEEDED) are honored viaretry_after_msbackoff. - Fails fast (never a fabricated empty success) if the homeserver is unreachable, rejects the query (auth/forbidden), or the directory matched zero rooms.
Pricing
Pay-per-event: $0.0005 per room record (tiered volume discount by subscription tier). You pay only for rooms actually emitted.
Your max charge per run is respected: the run writes and bills only the room records it covers, asks the homeserver only for as many rooms as that budget pays for, and makes no request at all if the budget cannot cover one record. If a later directory page fails, the rooms already delivered are kept and the run finishes with an error instead of a silent partial success.