Lemmy Scraper · Communities, Posts, Comments & Instances
Pricing
from $1.30 / 1,000 lemmy item returneds
Lemmy Scraper · Communities, Posts, Comments & Instances
Scrape Lemmy communities, posts, comments, and instance metadata across the Fediverse. Structured data export by instance domain, community name, and sort type.
Pricing
from $1.30 / 1,000 lemmy item returneds
Rating
0.0
(0)
Developer
Tarek Etman
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share

Lemmy Scraper · Communities, Posts, Comments & Instances
Scrape Lemmy communities, posts, discussion comments, and server instance metadata across the decentralized Fediverse. Extract structured JSON records indexed by instance domain host, community name, and listing sort types without requiring authentication or platform tokens.
Maintained by reapX. Every row cites the Apify run that produced it — nothing is inferred, modelled or filled in, and a field absent from the source is absent from the row. The extracted archive for this source is browsable at reapx.dev/data/lemmy-scraper/ and mirrored as an open dataset on Hugging Face and Kaggle. Questions: reapxdev@proton.me
⬇️ Input
The actor accepts structured JSON input options configuring the Lemmy extraction target, Fediverse instance host, listing scope, ranking sort order, and item volume limits.
| Input Parameter | Type | Required | Default / Prefill | Description |
|---|---|---|---|---|
mode | String | Yes | "posts" | Extraction target mode: posts (post feeds), communities (community directory), comments (comment threads), or instance (server metadata). |
instanceHost | String | Yes | "lemmy.world" | Primary Lemmy instance hostname (e.g. lemmy.world, sh.itjust.works, beehaw.org, feddit.de, programming.dev). |
instances | Array | No | [] | List of target Lemmy instance hostnames for multi-instance batch extraction. |
type_ | String | Yes | "All" | Scope filter for feeds: All (federated cross-instance content), Local (instance-native only), or Subscribed. |
sort | String | Yes | "Active" | Sorting algorithm: Active, Hot, New, Old, TopDay, TopWeek, TopMonth, TopYear, TopAll, MostComments, or NewComments. |
communityName | String | No | "" | Filter posts or comments by community technical name (e.g. technology, asklemmy, linux, news). |
maxItems | Integer | Yes | 100 | Maximum total records to extract during the run. |
maxPages | Integer | No | 5 | Maximum paginated API requests per instance or community query. |
requestsPerSecond | Number | No | 2 | Maximum HTTP requests per second to avoid rate-limiting on volunteer nodes. |
Worked Input Example: Posts Feed
{"mode": "posts","instanceHost": "lemmy.world","type_": "All","sort": "Hot","communityName": "technology","maxItems": 100}
Worked Input Example: Multi-Instance Batch Scrape
{"mode": "posts","instanceHost": "lemmy.world","instances": ["lemmy.world","sh.itjust.works","beehaw.org","programming.dev","feddit.de"],"type_": "All","sort": "Active","maxItems": 250}
Worked Input Example: Community Directory
{"mode": "communities","instanceHost": "sh.itjust.works","type_": "All","sort": "Hot","maxItems": 100}
⬆️ Output
Every record is pushed directly to the run's default dataset. Each row contains standard camelCase fields with total coverage on the primary domain entity identifier.
Dataset Schema Fields
| Field Name | Type | Description | Example Value |
|---|---|---|---|
domain | String | Lemmy server instance domain host serving as primary entity key. | "lemmy.world" |
communityName | String | Short technical name of the community. | "technology" |
communityTitle | String | Human-readable title of the community. | "Technology & Computing" |
postTitle | String | Headline title of the post. | "Open Source AI Models in 2026" |
postId | Integer | Numeric post ID on originating instance. | 50206401 |
postUrl | String | External target link or ActivityPub URL. | "https://lemmy.world/post/50206401" |
apId | String | Canonical ActivityPub URI. | "https://lemmy.world/post/50206401" |
body | String | Markdown post body text. | "Discussion on modern software..." |
creatorUsername | String | Username of post or comment author. | "viking_hippie" |
creatorActorId | String | Canonical ActivityPub URI of creator. | "https://lemmy.world/u/viking_hippie" |
publishedAt | String | ISO 8601 UTC timestamp of publication. | "2026-08-02T13:17:47Z" |
updatedAt | String | ISO 8601 UTC timestamp of last update. | "2026-08-03T10:15:00Z" |
score | Integer | Net vote score (upvotes minus downvotes). | 831 |
commentsCount | Integer | Total comments count. | 98 |
upvotes | Integer | Total upvotes count. | 855 |
downvotes | Integer | Total downvotes count. | 24 |
subscribersCount | Integer | Total community subscribers count. | 45200 |
postsCount | Integer | Total posts count in community/instance. | 12500 |
usersActiveDay | Integer | Active users in the past 24 hours. | 1420 |
usersActiveWeek | Integer | Active users in past 7 days. | 6800 |
usersActiveMonth | Integer | Active users in past 30 days. | 24500 |
commentContent | String | Text content of comment. | "Great analysis on Fediverse protocols." |
commentId | Integer | Numeric comment ID. | 1849201 |
instanceName | String | Server instance title. | "Lemmy.world" |
instanceDescription | String | Server description and rules summary. | "Flagship Lemmy instance." |
version | String | Lemmy server backend version. | "0.19.5" |
nsfw | Boolean | Not Safe For Work flag. | false |
isLocal | Boolean | True if item originated on target instance. | true |
itemType | String | Entity type (post, community, comment, instance). | "post" |
Sample Output Record (Post)
{"domain": "lemmy.world","communityName": "politicalmemes","communityTitle": "Political Memes","postTitle": "Discussion on open infrastructure","postId": 50206401,"postUrl": "https://lemmy.world/post/50206401","apId": "https://lemmy.world/post/50206401","body": "Detailed discussion on open protocols...","creatorUsername": "viking_hippie","creatorActorId": "https://lemmy.world/u/viking_hippie","publishedAt": "2026-08-02T13:17:47Z","updatedAt": "2026-08-03T10:15:00Z","score": 831,"commentsCount": 98,"upvotes": 855,"downvotes": 24,"nsfw": false,"isLocal": true,"itemType": "post"}
How it works
- Direct HTTP API Scraping: Communicates directly with Lemmy's official open v3 REST API endpoints (
/api/v3/post/list,/api/v3/community/list,/api/v3/comment/list,/api/v3/site). No headless browsers or browser automation required. - Fediverse Domain Aggregation: Extracts canonical ActivityPub domain hosts (
domain) for every post, community, comment, and instance record, aggregating cross-federated data onto entity pages. - Pay-Per-Event Billing: Bills strictly per item returned (
lemmy-item-returnedat $0.002 per item) usingActor.charge()before pushing to the dataset. Empty or blocked runs cost nothing beyond the platform start fee. - Adaptive Rate Limiting & Backoff: Automatically handles rate limiting (HTTP 429) and server errors (HTTP 5xx) with exponential backoff delays, respecting volunteer-run Fediverse server capacity.
- Streaming Dataset Push: Pushes items to the default dataset as they arrive rather than buffering, protecting data against network interruptions.
❓ FAQ
Does this scraper require a Lemmy account or API token?
No. All Lemmy v3 API endpoints queried by this actor are public read-only endpoints accessible over plain HTTP without authentication.
Which Lemmy instances are supported?
Any public Lemmy instance across the Fediverse is supported, including lemmy.world, sh.itjust.works, beehaw.org, feddit.de, programming.dev, lemmy.ml, sopuli.xyz, lemmy.ca, lemmy.zip, and reddthat.com.
How does domain aggregation work for federated posts?
Because Lemmy is federated, a post published on lemmy.dbzer0.com may appear in the feed of lemmy.world. This scraper parses the canonical ActivityPub host URL so that domain accurately reflects the originating instance node.
How are costs controlled?
You can set ACTOR_MAX_TOTAL_CHARGE_USD to cap the maximum cost of any run. If the limit is reached, the scraper gracefully halts and delivers all items collected up to that point.
💬 Your feedback
Have suggestions for new Lemmy features, schema enhancements, or bugs to report? Contact the maintainers directly at reapxdev@proton.me or submit feedback via Apify Console.
Unofficial - not affiliated with Lemmy or any Lemmy instance. Collects public data only. reapx. Contact reapxdev@proton.me.
🧪 Example input
A real, runnable configuration — this is an actual input this Actor has run with.
{"instanceHost": "lemmy.world","mode": "posts","type_": "All","sort": "Hot","maxItems": 100}
📄 Sample output
One real row from a real run of this Actor, unedited.
{"domain": "lemmy.dbzer0.com","communityName": "nottheonion","communityTitle": "Not The Onion","postTitle": "Walmart self-checkout mistake destroys Olympic athlete's career","postId": 50258953,"postUrl": "https://boingboing.net/2024/09/25/walmart-self-checkout-mistake-destroys-olympic-athletes-career.html","apId": "https://lemmy.dbzer0.com/post/73364946","body": "","creatorUsername": "irelephant","creatorActorId": "https://lemmy.dbzer0.com/u/irelephant","publishedAt": "2026-08-03T17:34:42.299311Z","updatedAt": "","score": 36,"commentsCount": 13,"upvotes": 36,"downvotes": 0,"nsfw": false,"isLocal": false,"thumbnailUrl": "https://boingboing.net/wp-content/uploads/2024/09/pettipeice.jpg","itemType": "post"}
⚠️ Run outcomes and error handling
This Actor reports what happened in the run's status message, and it always keeps whatever it collected. These are the outcomes you can get and what each one means.
| Outcome | What it means |
|---|---|
| Success | Rows were returned and you were charged lemmy-item-returned at $0.002 per row. |
| No matches | The source returned nothing for your filters. Nothing is charged. Widen the date window or drop a filter. |
What is guaranteed either way
- Every row is pushed as it is built, not buffered to the end of the run. Anything that buffers output loses everything to a timeout, a block or a migration; this does not.
- A field absent from the source is absent from the row. Nothing is inferred, modelled or filled in to make a row look complete.