Mastodon Scraper avatar

Mastodon Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Mastodon Scraper

Mastodon Scraper

Scrape Mastodon from any server: hashtag timelines, profiles, single posts with their replies, and trending posts, hashtags and news links. Post text, media, engagement counts, authors, polls and boosts as clean JSON. No login, no API key, no proxy.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Anyx Solutions

Anyx Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

banner

Mastodon Scraper

Scrape Mastodon posts from any server — hashtags, profiles, threads and trends — as clean JSON, with no login.

Scrape Mastodon from any server: hashtag timelines, profiles, single posts with their replies, and trending posts, hashtags and news links. Paste a page from mastodon.social, fosstodon.org, hachyderm.io or any other Mastodon server, or just type hashtags. Each post comes with its text as HTML and plain text, content warning, language, replies, boosts and favourites, the author's handle and follower counts, images and videos with their alt text, hashtags, mentions, link preview, poll results, and the original post when it is a boost. There is no login, no API key, and no proxy to configure. Built for social-listening and brand teams, researchers studying the fediverse, journalists and community managers.

⚡ Quick start

{
"startUrls": [
{ "url": "https://mastodon.social/tags/photography" },
{ "url": "https://mastodon.social/@Mastodon" }
],
"hashtags": ["opensource"],
"maxItems": 5
}

🧩 Input

FieldTypeRequiredDefaultDescription
startUrlsarrayno—Public pages from any Mastodon server: a hashtag (https://mastodon.social/tags/photography), a profile (https://mastodon.social/@Mastodon, or a remote one such as https://mastodon.social/@kev@fosstodon.org), a single post (https://mastodon.social/@Mastodon/117411420916699261), trending posts, hashtags or links (/explore, /explore/tags, /explore/links), or a server's live timeline (/public/local, /public).
hashtagsarrayno—Hashtags to scrape on the server below, one per line, with or without the #, for example opensource or #photography.
instancestringnomastodon.socialServer for hashtags: the Mastodon server whose hashtag timelines the hashtags are read from, for example fosstodon.org or hachyderm.io.
includeRepliesbooleannofalseInclude replies: for a single post URL, also return the replies under it; for a profile URL, also return the account's replies to other people.
maxItemsintegerno—Maximum number of items per start URL or hashtag. The input form starts at 5; leave it empty to get everything the server shares.
proxyConfigurationobjectno{ "useApifyProxy": false }Proxy settings. Mastodon needs no proxy.

Add URLs, hashtags, or both. A profile on another server, such as https://mastodon.social/@kev@fosstodon.org, is read from the account's own server, which holds its full history. Hashtags, /explore and /public pages show what the server in the URL knows about, so the same hashtag can return different posts on different servers.

📤 Output

Every row carries an itemType. Hashtag, profile, post and timeline URLs, and /explore, return post rows, newest first (trending posts in trending order). /explore/tags returns trending hashtags as tag rows and /explore/links returns trending news stories as link rows.

Fields

FieldTypeDescription
itemTypestringpost, tag or link.
idstringPost rows: post ID on the server it was read from. Tag rows: hashtag ID.
urlstringPost rows: the post's page on its origin server. Tag rows: the hashtag page. Link rows: the news story.
uristringPost rows: the post's permanent fediverse identifier.
createdAtstringPost rows: ISO time the post was published.
editedAtstringPost rows: ISO time of the last edit, or null.
languagestringLanguage code of the post or story, e.g. en, or null.
contentHtmlstringPost rows: post body as HTML, or null (boosts carry it in reblog).
contentTextstringPost rows: post body as plain text, with full links and paragraph breaks.
spoilerTextstringPost rows: the content warning shown before the post, or null.
sensitivebooleanPost rows: true when the media is marked sensitive.
visibilitystringPost rows: public or unlisted.
inReplyToIdstringPost rows: ID of the post this one replies to, or null.
repliesCountintegerPost rows: number of replies.
reblogsCountintegerPost rows: number of boosts.
favouritesCountintegerPost rows: number of favourites.
accountobjectPost rows: the author as { id, acct, displayName, url, followersCount, followingCount, statusesCount, bot, avatar }; acct is the full handle, e.g. Mastodon@mastodon.social.
mediaAttachmentsarrayPost rows: images, videos and audio as { type, url, previewUrl, description }; description is the alt text.
tagsarrayPost rows: hashtags used in the post, lower-case, without #.
mentionsarrayPost rows: mentioned accounts as { acct, url }.
cardobjectPost rows: link preview as { url, title, description, image }, or null.
pollobjectPost rows: { id, expiresAt, expired, multiple, votesCount, votersCount, options: [{ title, votesCount }] }, or null.
reblogobjectPost rows: when the row is a boost, the original post with the same fields; otherwise null.
instancestringThe server the row was read from, e.g. mastodon.social.
namestringTag rows: the hashtag, without #.
usesLastWeekintegerTag and link rows: posts using the hashtag or sharing the link over the last 7 days.
accountsLastWeekintegerTag and link rows: accounts using the hashtag or sharing the link over the last 7 days.
historyarrayTag and link rows: daily { date, uses, accounts }, newest first.
titlestringLink rows: the story's headline.
descriptionstringLink rows: the story's summary.
providerNamestringLink rows: the publisher, e.g. The Guardian.
authorNamestringLink rows: the story's author, or null.
imagestringLink rows: the story's preview image.
publishedAtstringLink rows: ISO time the story was published, or null.

💡 Use cases

  • Social listening — follow a brand, product or campaign hashtag across the fediverse.
  • Account monitoring — track what an organisation, journalist or developer posts, with engagement over time.
  • Trend research — snapshot a server's trending posts, hashtags and news stories on a schedule.
  • Thread analysis — capture a post together with its replies for sentiment analysis or moderation review.
  • Datasets — build multilingual, alt-text-rich post collections for research and training.

❓ FAQ

  • Do I need a Mastodon account or an API key? No. The Actor only reads what each server shows to logged-out visitors.
  • Which servers work? Any Mastodon server, and most fediverse servers that speak the Mastodon API. Paste the page URL from that server.
  • Can I search posts by keyword? Mastodon only offers full-text post search to logged-in users, so keyword search is not available. Use hashtags instead: they are how Mastodon users tag topics.
  • Why did a /public URL return nothing? Many servers, mastodon.social among them, keep their live timeline for logged-in users. The run log says so in plain words. Hashtags, profiles, posts and /explore pages still work on those servers.
  • How many replies does a post return? Up to about 60 replies for logged-out visitors, which is the limit Mastodon itself applies.
  • Are boosts included? Yes. A boost is a row of the booster's account whose reblog field holds the original post with its author, text and counts.
  • Is the Actor gentle on servers? Yes. Mastodon servers are community-run and allow 300 requests per 5 minutes; the Actor reads the server's own limit and pauses before reaching it.
  • Why did a run return fewer items than expected? A small server may know few posts for a hashtag, an account may have few public posts, or the server may keep a list private. Check the run log, then open an issue if something looks off.

🔗 More scrapers by Anyx

🤝 Anyx Solutions

We build custom scrapers and data-extraction pipelines.

🖼 Image credit

Image credit: mastodon.social