Scrape public Mastodon posts, hashtags, account timelines, public timelines, and status details from Fediverse instances.
Use this Actor when you need repeatable Mastodon data for social listening, open-web research, community monitoring, news tracking, creator research, or AI analysis. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.
At a glance
- Instance-based scraping: choose a Mastodon instance such as
https://mastodon.socialorhttps://fosstodon.org. - Multiple scrape modes: collect hashtag timelines, public timelines, account posts, or one status.
- Post metadata: save URLs, content, language, visibility, reply/reblog/favorite counts, tags, mentions, media attachments, and account data.
- Monitoring controls: use
sinceId,minId, andmaxIdfor incremental collection where supported. - Fediverse workflow ready: export rows to alerts, dashboards, social listening systems, or AI agents.
What can it do?
Mastodon Posts & Profiles Scraper turns public Mastodon timelines and statuses into structured social-media rows.
- Export Mastodon posts and status data from hashtags, public timelines, account timelines, and individual statuses.
- Collect engagement and account context such as replies, reblogs, favorites, account fields, tags, mentions, media, cards, and visibility.
- Monitor Fediverse conversations by scheduling hashtag or account runs and using ID-based continuation fields.
- Research communities and topics across public Mastodon instances without a login.
- Use it as a Mastodon data API workflow for CSV, JSON, Excel, API, or AI-agent exports.
Common workflows
- Social listening: monitor public Mastodon hashtags and accounts for brands, events, topics, or issues.
- News and community tracking: watch public timelines on relevant instances.
- Creator research: collect public account posts and engagement signals.
- Open-web research: export public Fediverse discussion data for analysis.
- AI summaries: pass status rows into classification, sentiment, clustering, or alerting workflows.
What data can you collect?
Each dataset row represents one public Mastodon status.
| Field | Description |
|---|---|
statusId |
Mastodon status ID |
url |
Public status URL |
uri |
Fediverse URI |
instanceBaseUrl |
Instance used for the request |
scrapeMode |
Mode used for the row |
createdAt |
Public creation timestamp |
editedAt |
Edit timestamp when available |
contentText |
Cleaned post text |
contentHtml |
Public HTML content |
language |
Language code when returned |
visibility |
Status visibility value |
sensitive |
Whether the status is marked sensitive |
spoilerText |
Content warning text when present |
repliesCount |
Reply count |
reblogsCount |
Reblog/boost count |
favouritesCount |
Favorite count |
account |
Public account object |
tags |
Public hashtag objects |
mentions |
Mentioned accounts |
mediaAttachments |
Public media attachment metadata |
card |
Link preview card when available |
poll |
Poll data when available |
scrapedAt |
Timestamp when the row was saved |
Example input
{
"instanceBaseUrl": "https://mastodon.social",
"mode": "hashtag",
"hashtag": "news",
"maxItems": 50,
"local": false,
"excludeReplies": false,
"excludeReblogs": false
}
Example output
{
"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 best results
- Choose the right instance: Mastodon data is instance-based, so the same account or hashtag may differ by instance.
- Use hashtag mode for monitoring: it is the easiest recurring social-listening setup.
- Use account mode for creator research: combine
excludeRepliesandexcludeReblogsfor original posts. - Use ID cursors for incremental runs: store
statusIdvalues when you need continuation. - Keep first runs small: test
maxItems=20before scaling a new instance or mode.
Limits and caveats
- The Actor extracts publicly visible Mastodon data only.
- It does not access private, followers-only, deleted, or login-gated content.
- Availability and fields vary by Fediverse instance and Mastodon-compatible server version.
- Engagement counts can change after scraping.
API usage
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~mastodon-posts-profiles-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"instanceBaseUrl":"https://mastodon.social","mode":"hashtag","hashtag":"news","maxItems":50}'
MCP and AI agents
This Actor can be used through the official Apify MCP server at https://mcp.apify.com.
For a focused single-Actor tool setup, use:
https://mcp.apify.com?tools=fetch_cat/mastodon-posts-profiles-scraper
Use the same JSON keys shown in the input configuration table, such as instanceBaseUrl, mode, hashtag, accountIdOrHandle, statusUrlOrId, maxItems, and sinceId.
Support
If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.
Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.