Mastodon Scraper avatar

Mastodon Scraper

Pricing

Pay per usage

Go to Apify Store
Mastodon Scraper

Mastodon Scraper

Scrape Mastodon (fediverse) posts, profiles, hashtags, and account search without a login. Pull a user's posts by handle, a hashtag timeline, the public timeline, or matching profiles. Works against any instance and walks pagination up to your chosen limit.

Pricing

Pay per usage

Rating

5.0

(1)

Developer

Goutam Soni

Goutam Soni

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape public Mastodon posts, profiles, hashtags, and account search from across the fediverse with no login and no API key required. Point it at any Mastodon instance and pull a user's posts by handle, a hashtag timeline, the public timeline, or matching profiles as clean structured JSON, CSV, or Excel.

What it does

  • Mastodon user posts by handle. Works with a bare username on your chosen instance, a full user@host for a remote account, or a profile link. Pulls recent posts (statuses, boosts, replies) with engagement counts.
  • Profile data. Optionally emit a profile row per handle with display name, bio, follower count, following count, and post count.
  • Hashtag scraper. Pull every post on any instance's public hashtag timeline.
  • Public timeline scraper. Stream an instance's public timeline (where the server allows it).
  • Profile search. Find matching public Mastodon accounts by keyword.
  • Automatic pagination. Walks page after page up to the limit you set, deduplicates posts, and stops cleanly when a source is exhausted.
  • Clean normalized output. Plain-text post bodies, parsed media URLs, hashtags, mentions, and engagement metrics in one stable schema across every mode.

No account, no password, no API key. Give it an instance plus handles, hashtags, or search terms and it returns structured rows.

Use cases

  • Social media monitoring. Track a brand, topic, or hashtag across the fediverse and watch engagement over time.
  • Lead generation and audience research. Search profiles by keyword and export handles, bios, and follower counts for outreach lists.
  • Market and competitor research. Collect posts from accounts in your niche and analyze what resonates by favourites and boosts.
  • News and trend tracking. Stream a hashtag or public timeline to spot emerging stories and conversations early.
  • Dataset building. Assemble labeled post and profile datasets for sentiment analysis, content classification, or LLM training.

Input

FieldTypeDescription
instancestringThe Mastodon server to scrape from for hashtags, search, and bare usernames. Host or URL. Default mastodon.social.
handlesarrayUsernames to pull posts from. Bare username, user@host, or a profile link.
hashtagsarrayHashtags to pull from the instance's public tag timeline. With or without the # prefix.
searchQueriesarrayKeywords to find matching public profiles on the chosen instance.
publicTimelinebooleanWhen on, also pull the instance's public timeline.
maxItemsPerSourceintegerCap per handle, hashtag, search, or timeline. Pagination is walked to reach it. Default 100.
includeRepliesbooleanInclude a handle's reply posts, not just top-level posts. Default false.
includeReblogsbooleanInclude posts a handle has boosted. Default true.
onlyMediabooleanRestrict feeds and the public timeline to posts that carry an image or video. Default false.
includeProfilebooleanEmit one profile row per handle before its posts. Default true.
concurrencyintegerHow many sources to process in parallel. Default 5.
proxyConfigobjectOptional proxy. The public endpoints do not require one.

Example input

{
"instance": "mastodon.social",
"handles": ["example_user", "example_user@example.social"],
"hashtags": ["opensource"],
"maxItemsPerSource": 200,
"includeProfile": true,
"includeReplies": false,
"includeReblogs": true
}

Output

Each post is one row. Fields are ordered identity first, then engagement metrics, then content and media:

{
"type": "post",
"id": "100000000000000000",
"url": "https://example.social/@example_user/100000000000000000",
"authorHandle": "example_user@example.social",
"authorDisplayName": "Example User",
"authorUrl": "https://example.social/@example_user",
"favouritesCount": 42,
"reblogsCount": 7,
"repliesCount": 3,
"quotesCount": 1,
"text": "An example post about open source.",
"language": "en",
"tags": ["opensource"],
"mentions": ["another_user@example.social"],
"images": ["https://example.com/image.jpg"],
"videos": [],
"links": ["https://example.com"],
"visibility": "public",
"sensitive": false,
"spoilerText": null,
"isReply": false,
"inReplyToId": null,
"isReblog": false,
"createdAt": "2026-06-01T12:00:00.000Z",
"editedAt": null
}

When includeProfile is on (or from profile search), a profile row carries:

{
"type": "profile",
"id": "1",
"handle": "example_user@example.social",
"url": "https://example.social/@example_user",
"displayName": "Example User",
"followersCount": 12000,
"followingCount": 300,
"statusesCount": 4500,
"description": "Example bio.",
"avatar": "https://example.com/avatar.png",
"header": "https://example.com/header.png",
"locked": false,
"bot": false,
"createdAt": "2020-01-01T00:00:00.000Z"
}

Key fields

  • type tells post rows apart from profile rows.
  • url is the canonical link to the post or profile.
  • favouritesCount, reblogsCount, repliesCount, quotesCount are the engagement metrics at scrape time.
  • text is the post body as clean plain text. The original HTML is kept in contentHtml.
  • images, videos, links are arrays of media and card URLs (empty when the post has none).
  • isReblog marks a boosted post; isReply / inReplyToId mark replies.

FAQ

Is this scraper free? How is it priced? You pay only for what you run. There is no per-run start fee. See the pricing tab on this listing for the current rate.

Do I need a Mastodon account, login, or API key? No. The scraper reads public data through the open fediverse endpoints. No account, password, or token is needed.

How many posts or profiles can I get? Set maxItemsPerSource to any value up to 50000. The scraper walks pagination across as many pages as needed to reach your target or until the source runs out. Profile search returns up to the server's search limit.

Which Mastodon instances does it support? Any instance. Set instance to the host you want (for example mastodon.social or https://example.social), and use user@host handles to reach accounts on other servers.

Can I scrape a hashtag across the whole fediverse? You scrape a hashtag from the chosen instance's public tag timeline, which federates posts that instance has seen. Point at a larger, well-connected instance for broader coverage.

How fast is it? Multiple sources run in parallel (set with concurrency), and each source pages until your limit. A typical handle or hashtag of a few hundred posts completes in seconds.

What if a server blocks the public timeline or search? Some servers gate those endpoints. When one does, the run skips that mode and continues with your other handles, hashtags, and searches.