Lemmy Scraper · Communities, Posts, Comments & Instances avatar

Lemmy Scraper · Communities, Posts, Comments & Instances

Pricing

from $1.30 / 1,000 lemmy item returneds

Go to Apify Store
Lemmy Scraper · Communities, Posts, Comments & Instances

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

Tarek Etman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

reapX — public sources in, addressable records out

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 ParameterTypeRequiredDefault / PrefillDescription
modeStringYes"posts"Extraction target mode: posts (post feeds), communities (community directory), comments (comment threads), or instance (server metadata).
instanceHostStringYes"lemmy.world"Primary Lemmy instance hostname (e.g. lemmy.world, sh.itjust.works, beehaw.org, feddit.de, programming.dev).
instancesArrayNo[]List of target Lemmy instance hostnames for multi-instance batch extraction.
type_StringYes"All"Scope filter for feeds: All (federated cross-instance content), Local (instance-native only), or Subscribed.
sortStringYes"Active"Sorting algorithm: Active, Hot, New, Old, TopDay, TopWeek, TopMonth, TopYear, TopAll, MostComments, or NewComments.
communityNameStringNo""Filter posts or comments by community technical name (e.g. technology, asklemmy, linux, news).
maxItemsIntegerYes100Maximum total records to extract during the run.
maxPagesIntegerNo5Maximum paginated API requests per instance or community query.
requestsPerSecondNumberNo2Maximum 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 NameTypeDescriptionExample Value
domainStringLemmy server instance domain host serving as primary entity key."lemmy.world"
communityNameStringShort technical name of the community."technology"
communityTitleStringHuman-readable title of the community."Technology & Computing"
postTitleStringHeadline title of the post."Open Source AI Models in 2026"
postIdIntegerNumeric post ID on originating instance.50206401
postUrlStringExternal target link or ActivityPub URL."https://lemmy.world/post/50206401"
apIdStringCanonical ActivityPub URI."https://lemmy.world/post/50206401"
bodyStringMarkdown post body text."Discussion on modern software..."
creatorUsernameStringUsername of post or comment author."viking_hippie"
creatorActorIdStringCanonical ActivityPub URI of creator."https://lemmy.world/u/viking_hippie"
publishedAtStringISO 8601 UTC timestamp of publication."2026-08-02T13:17:47Z"
updatedAtStringISO 8601 UTC timestamp of last update."2026-08-03T10:15:00Z"
scoreIntegerNet vote score (upvotes minus downvotes).831
commentsCountIntegerTotal comments count.98
upvotesIntegerTotal upvotes count.855
downvotesIntegerTotal downvotes count.24
subscribersCountIntegerTotal community subscribers count.45200
postsCountIntegerTotal posts count in community/instance.12500
usersActiveDayIntegerActive users in the past 24 hours.1420
usersActiveWeekIntegerActive users in past 7 days.6800
usersActiveMonthIntegerActive users in past 30 days.24500
commentContentStringText content of comment."Great analysis on Fediverse protocols."
commentIdIntegerNumeric comment ID.1849201
instanceNameStringServer instance title."Lemmy.world"
instanceDescriptionStringServer description and rules summary."Flagship Lemmy instance."
versionStringLemmy server backend version."0.19.5"
nsfwBooleanNot Safe For Work flag.false
isLocalBooleanTrue if item originated on target instance.true
itemTypeStringEntity 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

  1. 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.
  2. Fediverse Domain Aggregation: Extracts canonical ActivityPub domain hosts (domain) for every post, community, comment, and instance record, aggregating cross-federated data onto entity pages.
  3. Pay-Per-Event Billing: Bills strictly per item returned (lemmy-item-returned at $0.002 per item) using Actor.charge() before pushing to the dataset. Empty or blocked runs cost nothing beyond the platform start fee.
  4. 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.
  5. 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.

OutcomeWhat it means
SuccessRows were returned and you were charged lemmy-item-returned at $0.002 per row.
No matchesThe 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.