Mastodon Posts & Profiles Scraper
Pricing
from $0.03 / 1,000 status extracteds
Mastodon Posts & Profiles Scraper
Scrape public Mastodon posts, profiles, hashtags, timelines, and status details from Fediverse instances.
Pricing
from $0.03 / 1,000 status extracteds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Extract public Mastodon and Fediverse posts into a clean Apify dataset for social listening, journalism, research, community monitoring, and automation.
What does Mastodon Posts & Profiles Scraper do?
Mastodon Posts & Profiles Scraper collects public statuses from Mastodon-compatible instances.
It can export hashtag timelines, public account posts, the public timeline, and individual public statuses.
Every saved row includes the post URL, timestamp, content, engagement counters, account profile details, tags, mentions, media attachments, cards, and scrape metadata.
Use it when you need repeatable public Fediverse data instead of manual browsing and copy-paste.
Who is it for?
- ๐ฃ Social listening teams tracking public Fediverse conversations.
- ๐งญ PR and communications teams monitoring topics, launches, and incidents.
- ๐ฐ Journalists researching public posts around breaking news or communities.
- ๐งช Researchers studying open social networks and decentralized communities.
- ๐งโ๐ป Automation builders sending public Mastodon data into databases, dashboards, or alerts.
- ๐ก๏ธ Trust and safety teams reviewing public posts and profile context.
Why use this actor?
Mastodon conversations are spread across many independent instances.
This actor lets you point at the instance you care about and export public data in a consistent format.
The output is ready for spreadsheet review, BI tools, LLM enrichment, notifications, or long-running monitoring workflows.
What Mastodon data can you extract?
| Field | Description |
|---|---|
statusId | Mastodon status ID |
url | Public status URL when available |
uri | Fediverse URI |
instanceBaseUrl | Instance used for the request |
scrapeMode | Mode that produced the row |
createdAt | Status creation time |
editedAt | Last edit time when available |
visibility | Public, unlisted, private, or direct visibility value returned by the instance |
language | Status language code when available |
contentHtml | Original status HTML |
contentText | Plain text version of the status |
spoilerText | Content warning / spoiler text |
sensitive | Whether the status is marked sensitive |
repliesCount | Reply count |
reblogsCount | Boost count |
favouritesCount | Favourite count |
bookmarksCount | Bookmark count when returned |
account | Embedded public account profile object |
tags | Hashtags attached to the status |
mentions | Mentioned accounts |
mediaAttachments | Public media attachment metadata |
emojis | Custom emojis used in the status |
poll | Poll data when present |
card | Link preview card when present |
raw | Original normalized status object for advanced users |
Pricing
This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.
| Event | What is charged | Price |
|---|---|---|
start | One-time fee charged when a run starts. Covers fixed startup cost. | $0.005 |
item | Charged for each saved status extracted. | $0.000028 |
Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.
Quick start
- Open Mastodon Posts & Profiles Scraper on Apify.
- Choose a Mastodon instance, such as
https://mastodon.social. - Select a scrape mode.
- Fill in the hashtag, account, or status field for that mode.
- Set
maxItemsto the number of statuses you need. - Run the actor.
- Export the dataset as JSON, CSV, Excel, XML, or through the Apify API.
Input example: hashtag monitoring
{"instanceBaseUrl": "https://mastodon.social","mode": "hashtag","hashtag": "news","maxItems": 20}
Input example: public account posts
{"instanceBaseUrl": "https://mastodon.social","mode": "accountStatuses","accountIdOrHandle": "Gargron","excludeReplies": true,"excludeReblogs": true,"maxItems": 25}
Input example: public timeline
{"instanceBaseUrl": "https://mastodon.social","mode": "publicTimeline","local": true,"maxItems": 50}
Input example: single status
{"instanceBaseUrl": "https://mastodon.social","mode": "statusByUrlOrId","statusUrlOrId": "110000000000000000","maxItems": 1}
Input fields explained
| Input | Required | Description |
|---|---|---|
instanceBaseUrl | Yes | Mastodon instance to query |
mode | Yes | hashtag, accountStatuses, publicTimeline, or statusByUrlOrId |
hashtag | For hashtag mode | Hashtag with or without # |
accountIdOrHandle | For account mode | Numeric account ID or public acct handle |
statusUrlOrId | For status mode | Local status ID or same-instance status URL |
maxItems | Yes | Maximum statuses to save |
local | No | Public timeline local-only filter |
remote | No | Public timeline remote-only filter |
onlyMedia | No | Account timeline media-only filter |
excludeReplies | No | Skip account replies |
excludeReblogs | No | Skip boosts in account mode |
sinceId | No | Cursor for newer statuses |
minId | No | Cursor for immediately newer statuses |
maxId | No | Cursor for older statuses |
Supported scrape modes
Hashtag timeline
Use mode: "hashtag" to collect public statuses attached to a hashtag.
This is useful for topic monitoring, event tracking, and public conversation research.
Account public posts
Use mode: "accountStatuses" to collect statuses from a public account profile.
You can enter a numeric account ID or a public handle resolvable by the selected instance.
Public timeline
Use mode: "publicTimeline" to collect public statuses visible from the selected instance.
Use local: true when you only want posts created by accounts on that instance.
Single status lookup
Use mode: "statusByUrlOrId" to collect one public status.
Same-instance URLs and numeric local status IDs are supported.
Output example
{"statusId": "116838156372364425","url": "https://example.social/@account/116838156372364425","instanceBaseUrl": "https://mastodon.social","scrapeMode": "hashtag","createdAt": "2026-06-30T08:00:00.000Z","contentText": "Example public Mastodon post text","language": "en","visibility": "public","repliesCount": 2,"reblogsCount": 4,"favouritesCount": 10,"account": {"acct": "account@example.social","displayName": "Example Account","url": "https://example.social/@account"},"tags": [],"mentions": [],"mediaAttachments": []}
Tips for better results
- ๐ Choose the instance closest to the community you want to monitor.
- ๐ Start with a small
maxItemsvalue to confirm your filters. - ๐งต Use
excludeReplieswhen you only want top-level account posts. - ๐ผ๏ธ Use
onlyMediafor image or video review workflows. - ๐ Store the newest status ID from one run and use cursor fields in later monitoring jobs.
- ๐ Remember that each Mastodon instance may see a different slice of the Fediverse.
Common workflows
Brand and topic monitoring
Run hashtag mode every hour and send new rows to a webhook, database, or Slack alert.
Public account archiving
Run account mode daily for public project, organization, or community accounts.
Community research
Run local public timeline mode on an instance dedicated to a topic or region.
Evidence collection
Run single status mode when you need a structured record for a specific public post.
Integrations
Mastodon Posts & Profiles Scraper works with Apify integrations and APIs.
Useful workflow patterns include:
- Send new public posts to Google Sheets for editorial review.
- Trigger a webhook when a monitored hashtag produces new rows.
- Store output in BigQuery, Snowflake, or S3 for longitudinal research.
- Enrich
contentTextwith sentiment or topic classification. - Feed public posts into an LLM summarization workflow.
- Combine Mastodon exports with Bluesky, Reddit, Telegram, and X monitoring datasets.
API usage: Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/mastodon-posts-profiles-scraper').call({instanceBaseUrl: 'https://mastodon.social',mode: 'hashtag',hashtag: 'news',maxItems: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage: Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/mastodon-posts-profiles-scraper').call(run_input={'instanceBaseUrl': 'https://mastodon.social','mode': 'hashtag','hashtag': 'news','maxItems': 20,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage: cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~mastodon-posts-profiles-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"instanceBaseUrl": "https://mastodon.social","mode": "hashtag","hashtag": "news","maxItems": 20}'
MCP: use with Claude Code and Claude Desktop
You can connect this actor through the Apify MCP server.
Use this MCP URL:
https://mcp.apify.com/?tools=fetch_cat/mastodon-posts-profiles-scraper
Claude Code example:
$claude mcp add apify-mastodon "https://mcp.apify.com/?tools=fetch_cat/mastodon-posts-profiles-scraper"
Claude Desktop configuration example:
{"mcpServers": {"apify-mastodon": {"url": "https://mcp.apify.com/?tools=fetch_cat/mastodon-posts-profiles-scraper"}}}
Example prompts showing MCP usage:
- "Use the Mastodon Posts & Profiles Scraper MCP tool to collect 30 public Mastodon posts from the #news hashtag and summarize the main topics."
- "Use the Apify MCP Mastodon scraper to export recent public posts from this account and identify links that were shared."
- "Run the Mastodon MCP tool on a local public timeline and group posts by language."
Data quality notes
The actor saves public data returned by the selected Mastodon instance.
Some remote statuses may have incomplete counts or missing link cards depending on federation state.
Account handles can resolve differently across instances, so use a numeric account ID when you need strict repeatability.
Limits and troubleshooting
Why did I get zero results?
The hashtag, account, or timeline may have no recent public posts visible from the selected instance.
Try a broader hashtag, another instance, or a higher maxItems value.
Why does account lookup fail?
The selected instance may not know that remote account yet.
Try the account's home instance, use the numeric account ID, or search the account manually on the instance first.
Why does status URL lookup reject my URL?
Single status URL mode supports same-instance URLs.
For remote statuses, use the numeric local status ID from the instance you are querying.
Can I scrape private posts?
No. This actor is for public Mastodon/Fediverse content only.
Legality and ethical use
This actor collects publicly available content.
You are responsible for using the data lawfully and respecting applicable privacy, copyright, platform, and research ethics requirements.
Do not use the actor to harass people, deanonymize users, bypass access controls, or collect non-public content.
Related scrapers
- https://apify.com/fetch_cat/bluesky-profile-feed-scraper
- https://apify.com/fetch_cat/reddit-scraper
- https://apify.com/fetch_cat/telegram-channel-posts-scraper
- https://apify.com/fetch_cat/x-profile-tweets-scraper
- https://apify.com/fetch_cat/youtube-channel-videos-scraper
FAQ
Does this actor need my Mastodon login?
No. It is designed for public data that selected instances expose without a user login.
Does it work on every Mastodon instance?
It works with Mastodon-compatible public endpoints. Some instances may disable features, rate limit aggressively, or expose less federated data.
Can I monitor multiple hashtags?
Run the actor once per hashtag or create an Apify task for each monitored hashtag.
Can I schedule recurring runs?
Yes. Use Apify schedules to run the actor hourly, daily, or at any interval that fits your monitoring workflow.
Can I export to CSV or Excel?
Yes. Open the dataset after the run and choose JSON, CSV, Excel, XML, RSS, or HTML export.
Can I use the output in an LLM workflow?
Yes. The contentText, account fields, tags, mentions, and timestamps are suitable for summarization, classification, and alerting prompts.