Mastodon Scraper: Posts, Profiles, Followers & Trends
Pricing
$1.00 / 1,000 result items
Mastodon Scraper: Posts, Profiles, Followers & Trends
Scrape any Mastodon instance (mastodon.social, hachyderm.io, infosec.exchange, fosstodon.org and 11,000+ others) via the official REST API. User profiles, statuses, followers, hashtag timelines, status threads, trending tags. No auth, no proxies, no cookies. Pay only per result item.
Pricing
$1.00 / 1,000 result items
Rating
0.0
(0)
Developer
Perconey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
What does Mastodon Scraper do?
Mastodon Scraper pulls structured data from any Mastodon instance through the official REST API (/api/v1/*). User profiles with follower counts and bio, public statuses with engagement (favourites, boosts, replies), entire threads, hashtag timelines, instance public timelines, trending tags. The actor hits the documented API directly, so no browser, no proxies, no cookies, no anti-bot fight, ever. One actor works with all 11,000+ Mastodon-protocol servers (mastodon.social, hachyderm.io, infosec.exchange, fosstodon.org, journa.host) and any Pleroma/Akkoma fork that implements the same API.
Try it instantly: pick getProfile, set instance https://mastodon.social, type Gargron (Mastodon's founder), click Start. You get his profile with 380k+ followers, bio, fields, post count in under 5 seconds, for $0.001.
Why use Mastodon Scraper?
- Federation researchers: Map account migration patterns when a user moves from one instance to another. Track instance growth via
getPublicTimelinecadence. - Community managers: Monitor mentions of your brand across instances using
getHashtagTimeline. Schedule the actor on Apify to alert you on new boosts. - DevRel and OSS maintainers: Mastodon has heavy developer adoption. Use
getProfile+getUserStatusesfor high-follower-count developers tagged with your project to find advocates and detractors. - Academic researchers: Mastodon's protocol is open and federation creates a natural network-science dataset.
getTrendingTagsper instance per day is a research gold-mine. - Content creators:
getUserStatusesfor top creators in your niche to study posting cadence, what topics drive engagement. - Open-source intelligence: infosec.exchange has the entire infosec Twitter diaspora. Pull their posts to track CVE chatter without paying for X's API.
How to use Mastodon Scraper
- Open the Input tab.
- Pick an action.
getProfileis the simplest starting point. - Set instance (default
https://mastodon.social). To scrape a different server, paste its full URL (e.g.https://hachyderm.io). - For most actions, fill queries (one entry per line). For
getPublicTimelineandgetTrendingTags, leave queries empty. - Tune maxItems (default 100), local (true for instance-only timelines vs. federated firehose), and the
includeReplies/includeRepoststoggles for user-status actions. - Click Start. Results stream to the dataset and you can preview them on the Output tab.
Input
| Field | Required | Description |
|---|---|---|
action | yes | Which API call to make. Eight options. |
instance | yes | Mastodon instance URL. Defaults to https://mastodon.social. |
queries | sometimes | Required for profile/status/hashtag actions. Empty for getPublicTimeline / getTrendingTags. |
maxItems | no | Max items per query. Default 100. |
local | no | For timeline actions: true returns only the instance's own posts, false returns the federated timeline. |
onlyMedia | no | Skip text-only posts. |
includeReplies | no | For getUserStatuses: include posts that are replies. Default true. |
includeReposts | no | For getUserStatuses: include boosted posts. Default true. |
token | no | OAuth bearer token. Only needed if the instance restricts followers lists to logged-in users. |
Query format by action
| Action | Query format |
|---|---|
| getProfile | Gargron, user@server.tld, https://mastodon.social/@Gargron, or numeric id |
| getUserStatuses | same as getProfile |
| getUserFollowers | same as getProfile |
| getStatusDetail | full status URL like https://mastodon.social/@Gargron/110123456789012345 |
| getStatusContext | same as getStatusDetail |
| getHashtagTimeline | hashtag without # (e.g. mastodonart) |
| getPublicTimeline | leave empty |
| getTrendingTags | leave empty |
Output
Every dataset item carries a _type field (account, status, tag, or error) plus _action and _instance so you can filter when one run mixes data from multiple instances.
{"_type": "account","_action": "getProfile","_instance": "https://mastodon.social","id": "1","username": "Gargron","acct": "Gargron","display_name": "Eugen Rochko","url": "https://mastodon.social/@Gargron","avatar": "https://files.mastodon.social/accounts/avatars/...","followers_count": 380000,"following_count": 720,"statuses_count": 79000,"note": "Founder, CEO and lead developer @Mastodon.","bot": false,"created_at": "2016-03-16T14:34:26.392Z","fields": [{ "name": "Website", "value": "https://zeonfederated.com" }]}
You can download the dataset in JSON, CSV, XML, Excel, RSS, or HTML format from the Output tab or the Apify API.
Data fields
| Type | Key fields |
|---|---|
account | id, acct, username, display_name, url, avatar, followers_count, following_count, statuses_count, note (bio), fields, created_at, bot, locked |
status | id, uri, url, content (HTML), created_at, favourites_count, reblogs_count, replies_count, visibility, language, media_attachments, tags, mentions, account, reblog_of (if it's a boost), card (preview) |
tag | name, url, history (per-day uses), total_uses, total_accounts |
Pricing
Pay-per-result: $0.001 per item. One account = one event. One status = one event. One trending tag = one event. No flat monthly fee, no rental, no charge for the time the actor runs (just Apify's default compute, ~$0.0002 per typical run at 512 MB).
Cost examples:
- One profile lookup: $0.001
- 1,000 posts from infosec.exchange's local timeline: $1.00
- Following the #mastodonart hashtag (500 posts/day, scheduled daily): $0.50/day
- 500 high-follower accounts (for community research, profile only): $0.50
Tips
- Federated reach: set
local: falseongetPublicTimelineorgetHashtagTimelineto see posts the instance has seen from peers, not just posts authored locally. The federated firehose is broader but noisier. - Cross-instance research: schedule the same input with different
instancevalues. infosec.exchange's local timeline is very different from mastodon.social's. - Most followers lists are public, but some instances restrict them to logged-in users. If you hit a 401/403, paste an OAuth token (any access token from the target instance) in the
tokenfield. - Status IDs are not portable across instances -
123456on mastodon.social refers to a totally different post than123456on hachyderm.io. Always pass full URLs togetStatusDetail/getStatusContextso the actor uses the right instance. - Pleroma/Akkoma instances mostly speak the same API. Most actions just work. Trending tags is a Mastodon-specific endpoint; on Pleroma the actor returns an empty result with a log warning instead of crashing.
FAQ, disclaimers, support
Is this legal? The actor calls each instance's public REST API with documented endpoints. Public read access is the default behavior of any Mastodon server. We send a clear User-Agent identifying the actor and we honor 429/Retry-After rate-limit headers. Each instance's admins set their own ToS - if you're scraping at scale from one instance, consider donating to it.
Why no searchPosts action? Full-text post search requires an authenticated session on most instances (a deliberate privacy decision by the Mastodon project). Hashtag and timeline scraping are the public alternatives.
getPublicTimeline returns 422 on mastodon.social. Mastodon.social blocks anonymous access to its public timeline. Use a different instance like https://hachyderm.io, https://fosstodon.org, https://infosec.exchange, or https://mas.to - they still allow anon reads. Profile, status, hashtag, and trending-tags actions DO work anon on mastodon.social.
Does it work with Pixelfed / Lemmy / GoToSocial? Pixelfed and GoToSocial implement large parts of the Mastodon API and most actions work. Lemmy uses a different API and is NOT supported.
Will I get rate-limited? Public reads have a generous limit (300 requests / 5 min on most instances). The actor honors Retry-After and retries 429/502/503/504 with exponential backoff.
Bug or feature request? Open an Issue on the actor's Issues tab. I usually respond within a day.
Need a custom scraper for another federated platform? Bluesky? Threads? See my other actors at https://apify.com/perconey, or open an Issue.