Skip to content

Mastodon Scraper

Try for free

Scrape public Mastodon and fediverse data without a login: posts from accounts and hashtags, threads with replies, public timelines, trending posts, hashtags and links, and profiles. Text and HTML, favourites, boosts, replies, media, mentions, tags and author info.

🐘 Mastodon Scraper

Scrape public Mastodon and fediverse data without an account: posts from any account or hashtag, full threads with replies, public timelines, trending posts, hashtags and news links, and profiles. Works with mastodon.social, fosstodon.org, infosec.exchange and other Mastodon-compatible servers. A few seconds for hundreds of posts.

✨ Why use Mastodon Scraper?

  • 🔓 No login, no API keys. Uses each instance's public API, the same data anyone sees in a browser.
  • 🌐 Any instance. Point it at @user@instance handles or links from any server. If a server hides hashtag feeds from logged-out visitors, the scraper reads the hashtag from a large open instance and says so in the run status.
  • 🧵 Threads included. Paste a post URL to get the post plus the posts above it and every reply below it.
  • 📈 Trends built in. Trending posts, hashtags (with daily usage for the last 7 days) and news links per instance.
  • 🛡️ Rate limits handled. Instances allow about 300 requests per 5 minutes per IP. The scraper reads the rate-limit headers and switches proxy exits before it gets blocked.
  • 🧹 Clean output. Plain text and HTML, counts, media, mentions, hashtags, link previews, polls and author details in flat columns.

🎯 Use cases

  • 📣 Brand and topic monitoring. Track a hashtag or keyword community across the fediverse.
  • 🔬 Research. Collect posts, threads and engagement for social media and communication studies.
  • 📰 Trend tracking. Get each instance's trending links and hashtags daily.
  • 👥 Community and lead research. Find profiles by keyword and collect their bios, links and follower counts.
  • 🗄️ Archiving. Back up the public posts of accounts you follow or manage.

🚀 How to use

  1. Add Hashtags, Accounts (@user@instance) or Mastodon URLs (profiles, posts, hashtag pages, /explore).
  2. Optionally choose an Instance, Public timelines, Trends or an Account search.
  3. Set Max results and any filters (date range, replies, boosts, media, language, minimum favourites).
  4. Click Start, then download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
hashtagsHashtags to scrape (opensource, #photography).
accounts@user@instance handles or profile URLs. A bare username uses the instance below.
startUrlsProfile, post (with its thread), hashtag, timeline (/public/local, /public) or trends (/explore, /explore/tags, /explore/links) links.
maxItemsItems to save in total (default 20, 0 = no limit).
instanceServer for hashtags, timelines, trends, search and bare usernames (default mastodon.social).
timelineslocal and/or federated public timelines.
trendsstatuses, tags and/or links.
searchAccountsProfile searches (up to 40 profiles each).
since, untilDate range for posts (2026-09-01, 7 days).
includeReplies, includeReblogs, onlyMediaWhat kinds of posts to keep.
languages, minFavourites, minReblogsLanguage and engagement filters.
maxItemsPerInput, includeProfile, includeThreadRepliesPer-input cap, profile rows for accounts, threads for post URLs.
{
  "hashtags": ["opensource"],
  "accounts": ["@someone@mastodon.social"],
  "startUrls": ["https://fosstodon.org/tags/linux", "https://mastodon.social/explore/links"],
  "since": "30 days",
  "includeProfile": true,
  "maxItems": 500
}

📤 Output

Every row has a type: post, account, tag or link. The Output tab has a view for each type.

FieldDescription
id, url, uri, instancePost id on the instance, web link, global ActivityPub id, server read from
text, contentHtml, spoilerText, language, sensitiveContent
createdAt, editedAtDates (UTC)
repliesCount, reblogsCount, favouritesCount, quotesCountEngagement
authorAcct, authorDisplayName, authorUrl, authorAvatar, authorFollowersCount, ...Author
isReply, inReplyToId, isReblog, rebloggedBy, rebloggedAt, threadRoleContext
tags, mentions, media, mediaUrls, card, poll, quotedPostUrlAttachments
acct, displayName, noteText, followersCount, followingCount, statusesCount, fieldsProfile rows
name, title, usesToday, usesLast7Days, accountsLast7Days, historyTrending tag and link rows

Example post (from a test run; the account details are made up):

{
  "type": "post",
  "id": "117433450473905580",
  "url": "https://mastodon.social/@filmfan/117433450473905580",
  "uri": "https://mastodon.social/users/filmfan/statuses/117433450473905580",
  "instance": "mastodon.social",
  "text": "Another discard from Tuscany.\n\n📷️ Pentax KX\n🎞️ Fuji Superia X-tra 400\n\n#BelieveInFilm #FilmPhotography #35mm",
  "language": "en",
  "visibility": "public",
  "createdAt": "2026-10-13T11:50:49.000Z",
  "repliesCount": 1,
  "reblogsCount": 9,
  "favouritesCount": 92,
  "authorAcct": "filmfan@mastodon.social",
  "authorDisplayName": "Jane Example",
  "authorUrl": "https://mastodon.social/@filmfan",
  "authorFollowersCount": 1520,
  "isReply": false,
  "isReblog": false,
  "tags": ["believeinfilm", "filmphotography", "35mm"],
  "media": [{"type": "image", "url": "https://files.mastodon.social/media_attachments/files/.../original/919c0782bdd56173.jpg", "description": "A seagull standing on top of a lamp post.", "width": 2225, "height": 3356}],
  "application": "Web",
  "source": "@filmfan@mastodon.social",
  "scrapedAt": "2026-10-16T02:04:06.000Z"
}

Example trending hashtag:

{"type": "tag", "name": "DessertTVShows", "url": "https://mastodon.social/tags/desserttvshows", "instance": "mastodon.social", "usesToday": 2, "usesLast7Days": 502, "accountsLast7Days": 106}

💰 Pricing

You pay $0.80 per 1,000 items saved ($0.0008 per post, profile, tag or link), plus a small amount of platform usage (compute and datacenter proxy traffic). For example, 1,000 posts cost about $0.80 in item fees plus roughly a cent of usage. Inputs that return nothing cost nothing in item fees.

❓ FAQ

Is it legal? The scraper only reads public data that each server serves to logged-out visitors through its public API. Respect the privacy expectations of the fediverse and each instance's rules, and handle personal data according to the laws that apply to you.

Do I need an account or a proxy? No account. The default datacenter proxy is enough. The proxy also helps with instance rate limits.

Why did a timeline or hashtag return nothing? Some servers (mastodon.social among them) only show public timelines to logged-in users, and some hide hashtag feeds. The run status says when that happens. For hashtags, the scraper falls back to a large open instance.

How many posts can I get? As many as the server serves. Account and hashtag feeds page back through history, a From date stops the scan once older posts start, and a To date skips straight back to that date on Mastodon servers.

Can I schedule it or use the API? Yes. Schedule daily runs (for example trends or a hashtag with "From date: 1 day") and read results through the API, webhooks or integrations.

⚠️ Limits

  • Only public posts. Followers-only, private and direct posts are never visible without a login.
  • Full-text search of posts needs a login on Mastodon, so search covers profiles only (up to 40 per query).
  • Accounts on servers that require a login for everything (some GoToSocial servers, for example) can only be read if a large instance has a copy of them.
  • Remote accounts and replies are as complete as the server you read from knows them.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.