Mastodon Scraper — Posts, Hashtags & Public Timeline avatar

Mastodon Scraper — Posts, Hashtags & Public Timeline

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Mastodon Scraper — Posts, Hashtags & Public Timeline

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

Logiover

Maintained by Community

Actor 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_id cursor pagination; set maxResults up 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:

FieldTypeDescription
idstringUnique post ID on the instance
urlstringDirect URL to the post
contentstringPost text (HTML stripped to plain text)
createdAtstringISO 8601 timestamp of when the post was published
languagestringTwo-letter language code (e.g. en, de, fr)
favouritesCountnumberNumber of times the post was favourited
reblogsCountnumberNumber of reblogs (boosts)
repliesCountnumberNumber of replies
usernamestringAuthor's username (with instance domain if remote)
displayNamestringAuthor's human-readable display name
followersnumberAuthor's follower count on their home instance
accountUrlstringDirect URL to the author's profile
tagsstringComma-separated list of hashtags used in the post
mediaUrlsstringComma-separated URLs of attached images/videos
instancestringThe 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.

  1. Set Mode to hashtag.
  2. Set Hashtag to your keyword (without #), e.g. technology.
  3. Optionally change Instance from mastodon.social to another server (e.g. fosstodon.org for FOSS topics).
  4. Set Max Results (default: 200, max: 10,000).
  5. 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.

  1. Set Mode to publicTimeline.
  2. Set Instance to your target.
  3. 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.

  1. Set Mode to accountStatuses.
  2. Set Account to the username (without @ or instance suffix, e.g. Gargron).
  3. Optionally set the Instance where that account lives.

Input JSON:

{
"mode": "accountStatuses",
"account": "Gargron",
"instance": "mastodon.social",
"maxResults": 200
}

Input parameters

ParameterTypeDefaultDescription
instancestringmastodon.socialMastodon instance hostname (without https://)
modestringhashtagScraping mode: hashtag, publicTimeline, or accountStatuses
hashtagstringHashtag to scrape (no #). Required for hashtag mode.
accountstringUsername to scrape. Required for accountStatuses mode.
maxResultsinteger200Maximum posts to collect (1–10,000)
proxyConfigurationobjectdisabledApify 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 tech return fewer posts than technology on 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 language field lets you filter English-only or German-only posts downstream in Google Sheets.
  • Media content analysis — use mediaUrls to 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 followers field 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 POST webhook 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 ApifyClient
client = 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.

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.


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.