Mastodon Scraper — Posts, Hashtags & Public Timeline
Pricing
from $1.50 / 1,000 results
Mastodon Scraper — Posts, Hashtags & Public Timeline
Scrape Mastodon by hashtag, public timeline, or account. Extract posts, engagement stats, account info, media URLs, and tags. No API key, no login required. Works on any public Mastodon instance.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Mastodon Scraper — Posts, Hashtags, Public Timeline & Account Data
Scrape any public Mastodon instance at scale: hashtag timelines, public feeds, and account statuses — fully keyless, no login, no API key required.
What does Mastodon Scraper do?
Mastodon Scraper connects directly to the open Mastodon REST API (v1/v2) available on any public instance — mastodon.social, fosstodon.org, infosec.exchange, or any ActivityPub server running Mastodon-compatible software. It extracts posts (called "statuses") from three sources: hashtag timelines (/api/v1/timelines/tag/{hashtag}), the public federated timeline (/api/v1/timelines/public), and individual account statuses (/api/v1/accounts/{id}/statuses).
Pagination is handled automatically using the max_id cursor parameter, so a single run can pull hundreds or thousands of posts from deep in the timeline. Each post is cleaned (HTML stripped to plain text), enriched with account-level data (username, display name, follower count), and includes engagement metrics (favourites, reblogs, replies), attached media URLs, and all hashtags. The scraper works across any Mastodon-compatible instance — you simply set the instance field and it works.
Who is it for?
- Social media researchers monitoring public discourse, trending topics, or community discussions on decentralized platforms.
- Data journalists tracking hashtag movements, political conversations, or technology trends across the Fediverse.
- Brand and sentiment analysts monitoring what communities say about products, projects, or public figures.
- Developers and AI engineers building datasets for training, fine-tuning, or embedding models on authentic social content.
- Community managers keeping an eye on mentions, hashtag adoption, and audience growth across federated instances.
Use cases
- Track a technology or event hashtag (e.g.
#technology,#ai,#opendata) to collect thousands of posts in minutes for trend analysis or LLM dataset building. - Monitor the public timeline of a specific Mastodon instance to understand that community's interests, activity volume, and content mix.
- Pull all posts from a public account (journalist, researcher, developer) to analyze their posting patterns, reach, and engagement history.
- Export Mastodon content to Google Sheets or CSV for social listening reports without manual copy-paste.
- Build a federated news feed aggregator by scraping multiple hashtag timelines across different instances and merging the results.
Why use Mastodon Scraper?
- Completely keyless — Mastodon's public API requires no authentication token, no account, no OAuth. Just set an instance URL and go.
- 15 output fields per post — id, url, content (plain text), createdAt, language, favouritesCount, reblogsCount, repliesCount, username, displayName, followers, accountUrl, tags, mediaUrls, instance.
- Bulk extraction — paginate to thousands of posts per run using
max_idcursor pagination; setmaxResultsup to 10,000. - Multi-instance support — switch between any public Mastodon-compatible server: mastodon.social, fosstodon.org, infosec.exchange, hachyderm.io, and hundreds more.
- Three modes — hashtag timeline, public/federated timeline, or per-account statuses — one actor covers every public surface.
- Export to CSV, JSON, or Excel — all results land in Apify's dataset, instantly downloadable in any format or piped to Google Sheets, Zapier, or Make via webhook.
What data can you extract?
Each scraped Mastodon post returns the following fields:
| Field | Type | Description |
|---|---|---|
id | string | Unique post ID on the instance |
url | string | Direct URL to the post |
content | string | Post text (HTML stripped to plain text) |
createdAt | string | ISO 8601 timestamp of when the post was published |
language | string | Two-letter language code (e.g. en, de, fr) |
favouritesCount | number | Number of times the post was favourited |
reblogsCount | number | Number of reblogs (boosts) |
repliesCount | number | Number of replies |
username | string | Author's username (with instance domain if remote) |
displayName | string | Author's human-readable display name |
followers | number | Author's follower count on their home instance |
accountUrl | string | Direct URL to the author's profile |
tags | string | Comma-separated list of hashtags used in the post |
mediaUrls | string | Comma-separated URLs of attached images/videos |
instance | string | The Mastodon instance this post was scraped from |
Example output:
{"id": "113820745678901234","url": "https://mastodon.social/@user/113820745678901234","content": "Just discovered an amazing open-source project for AI model fine-tuning. The community around #technology and #ai is growing fast on the Fediverse!","createdAt": "2026-07-06T14:32:11.000Z","language": "en","favouritesCount": 47,"reblogsCount": 12,"repliesCount": 5,"username": "user@mastodon.social","displayName": "Tech Enthusiast","followers": 1342,"accountUrl": "https://mastodon.social/@user","tags": "technology, ai","mediaUrls": "https://media.mastodon.social/media_attachments/files/xxx/original/image.jpg","instance": "mastodon.social"}
How to use
Option A: Scrape by Hashtag
The most common use case. Pull all recent posts tagged with a specific hashtag from any instance.
- Set Mode to
hashtag. - Set Hashtag to your keyword (without
#), e.g.technology. - Optionally change Instance from
mastodon.socialto another server (e.g.fosstodon.orgfor FOSS topics). - Set Max Results (default: 200, max: 10,000).
- Run the actor.
Input JSON:
{"mode": "hashtag","hashtag": "technology","instance": "mastodon.social","maxResults": 500}
Option B: Scrape Public Timeline
Pull the live federated public timeline of an instance — great for community monitoring.
- Set Mode to
publicTimeline. - Set Instance to your target.
- Set Max Results.
Input JSON:
{"mode": "publicTimeline","instance": "fosstodon.org","maxResults": 300}
Option C: Scrape Account Statuses
Pull all public posts from a specific account.
- Set Mode to
accountStatuses. - Set Account to the username (without
@or instance suffix, e.g.Gargron). - Optionally set the Instance where that account lives.
Input JSON:
{"mode": "accountStatuses","account": "Gargron","instance": "mastodon.social","maxResults": 200}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
instance | string | mastodon.social | Mastodon instance hostname (without https://) |
mode | string | hashtag | Scraping mode: hashtag, publicTimeline, or accountStatuses |
hashtag | string | — | Hashtag to scrape (no #). Required for hashtag mode. |
account | string | — | Username to scrape. Required for accountStatuses mode. |
maxResults | integer | 200 | Maximum posts to collect (1–10,000) |
proxyConfiguration | object | disabled | Apify proxy settings (optional; most instances allow direct access) |
Full input JSON:
{"instance": "mastodon.social","mode": "hashtag","hashtag": "technology","account": "","maxResults": 200,"proxyConfiguration": { "useApifyProxy": false }}
Output example
{"id": "113820745678901234","url": "https://mastodon.social/@researcher/113820745678901234","content": "New paper on federated social networks and decentralization patterns. The #technology landscape is shifting — thread below.","createdAt": "2026-07-06T09:15:44.000Z","language": "en","favouritesCount": 82,"reblogsCount": 31,"repliesCount": 14,"username": "researcher@mastodon.social","displayName": "Dr. Alex Research","followers": 4210,"accountUrl": "https://mastodon.social/@researcher","tags": "technology, research, fediverse","mediaUrls": "","instance": "mastodon.social"}
Tips for best results
- Start with mastodon.social — it has the highest post volume. Switch to niche instances (infosec.exchange, fosstodon.org) for topic-focused results.
- Use specific hashtags — broad tags like
techreturn fewer posts thantechnologyon some instances. Test both. - Increase maxResults for deep dives — the API paginates in batches of 40. Set maxResults to 1000+ for comprehensive archival.
- Run on a schedule — use Apify Schedules to collect new posts daily/hourly for trend tracking over time.
- Cross-instance comparison — run the same hashtag against multiple instances to compare community discussions. Use Apify's API to chain runs.
- Filter by language in post-processing — the
languagefield lets you filter English-only or German-only posts downstream in Google Sheets. - Media content analysis — use
mediaUrlsto download images/videos for visual content research. - Account deep-dives — combine accountStatuses mode with multiple accounts to build influence maps for a topic.
- Watch follower counts — the
followersfield per post lets you rank posts by author influence without a separate lookup. - Proxy is rarely needed — Mastodon instances are open APIs, but if you hit rate limits on large runs, enabling Apify proxy helps.
Integrations
Mastodon Scraper stores all results in Apify's dataset, ready to connect anywhere:
- Google Sheets — use the Apify → Google Sheets integration in the Apify Console to push results automatically.
- Slack — set a webhook to send a message when the run completes with item count.
- Zapier / Make — trigger downstream workflows whenever new posts are collected.
- Webhooks — configure a
POSTwebhook to your own server to receive dataset URLs on run completion. - Schedules — automate recurring runs (hourly, daily, weekly) from the Apify Scheduler UI.
- API — query the dataset programmatically via
GET /v2/datasets/{datasetId}/items.
API usage
cURL:
curl -X POST \"https://api.apify.com/v2/acts/logiover~mastodon-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"hashtag","hashtag":"technology","maxResults":200}'
Node.js (Apify client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('logiover/mastodon-scraper').call({mode: 'hashtag',hashtag: 'technology',maxResults: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("logiover/mastodon-scraper").call(run_input={"mode": "hashtag","hashtag": "technology","maxResults": 200,})items = client.dataset(run["defaultDatasetId"]).list_items().items
Use with AI agents (MCP)
Mastodon Scraper is available as an MCP tool via the Apify MCP server. Connect it to Claude, GPT-4, or any MCP-compatible agent to pull live Mastodon data on demand. Example prompt: "Scrape the last 300 posts tagged #technology from mastodon.social and summarize the top trending subtopics." The agent calls the actor, waits for results, and returns structured data — no manual API calls needed.
FAQ
Does this require an API key or Mastodon account?
No. Mastodon's public timelines and hashtag endpoints are fully open and require no authentication. You do not need an account on any instance.
Which Mastodon instances does this work with?
Any instance running Mastodon v2.3+ or compatible software (Pleroma, Akkoma, Hometown) that exposes the standard REST API. Just change the instance field to the hostname.
How many posts can I collect per run?
Up to 10,000 per run using automatic max_id pagination. For very active hashtags, you can collect thousands of posts in minutes.
Why am I getting zero results?
Check that: (1) the hashtag exists and has recent posts on that instance, (2) the instance is public and accessible from the internet, (3) the instance name is correct (no https://). Try mastodon.social with hashtag technology as a sanity check.
Some fields are empty — is that normal?
Yes. language may be null if not detected. mediaUrls is empty for text-only posts. tags is empty if no hashtags were used. These are returned as empty strings, not errors.
Can I export to CSV or Excel?
Yes. From the Apify dataset view, click Export → CSV / Excel / JSON. Or use the API with format=csv query parameter.
How fast does it run?
A 200-post hashtag run typically completes in under 60 seconds. A 1,000-post run takes 2–4 minutes depending on instance speed.
Is scraping Mastodon legal?
Mastodon's public API is intentionally open — the developers designed it for open access without authentication. You are reading data that is publicly visible to any visitor. Always respect instance-specific terms of service and applicable privacy laws (GDPR in the EU).
Can I scrape private/followers-only posts?
No. This actor only accesses public endpoints. Posts marked as followers-only or direct messages are never returned.
Can I search across multiple hashtags at once?
Run the actor multiple times with different hashtag inputs, or use Apify's API to trigger parallel runs. Results from each run are in separate datasets.
How often is the data updated?
Mastodon posts are real-time. Each run fetches the most recent posts as of that moment. For continuous monitoring, schedule the actor to run hourly.
Does it handle media attachments?
Yes — image, video, and GIF URLs from media_attachments are collected into the mediaUrls field as a comma-separated list. Downloading the files themselves is outside scope but easily done with the URLs.
Is it legal?
This actor accesses only public data via Mastodon's official REST API — the same data visible to any browser without login. No private messages, private accounts, or access-controlled content is ever retrieved. You remain responsible for complying with your jurisdiction's privacy laws (including GDPR, CCPA) and the terms of service of each Mastodon instance you target. Do not use this actor to build surveillance tools, dox individuals, or violate instance-specific community standards.
Related scrapers
- Reddit Scraper — Scrape Reddit posts, comments, and subreddits at scale.
- X/Twitter Scraper — Extract tweets and profile data via guest token endpoints.
- TikTok Scraper — Collect TikTok posts, hashtag feeds, and account videos.
- LinkedIn Scraper — Company profiles and public posts without login.