Tools / Mastodon Scraper: Profiles, Posts & Hashtags
Mastodon Scraper: Profiles, Posts & Hashtags
Collect public Mastodon profiles, posts and hashtag timelines via the official API. Input: accounts, hashtags. Output (JSON/CSV): one row per item with type, author, createdAt, text, repliesCount, reblogsCount, favouritesCount, followers, url, isNew.
What it's for
- Track brand, competitor or influencer accounts
- Hashtag monitoring for events and topics
- Pair with Bluesky data for open-social listening
Example input
{
"accounts": [
"@[email protected]",
"https://fosstodon.org/@fosstodon",
"@[email protected]"
],
"hashtags": [
"opensource"
],
"maxPostsPerSource": 3,
"monitorMode": true
}Example output
{
"type": "profile",
"input": "@[email protected]",
"instance": "mastodon.social",
"id": "13179",
"acct": "[email protected]",
"displayName": "Mastodon",
"url": "https://mastodon.social/@Mastodon",
"bio": "Our mission is to connect the world through thriving online communities.\nThis is the primary account for the Mastodon project.\nFor technical…",
"followers": 878918,
"following": 51,
"postsCount": 565,
"lastPostAt": "2026-10-09",
"createdAt": "2016-11-23T00:00:00.000Z",
"bot": false,
"locked": false,
"discoverable": true,
"noindex": false,
"fields": [
{
"name": "Homepage",
"value": "https://joinmastodon.org",
"verified": true
},
{
"name": "Source Code",
"value": "https://github.com/mastodon",
"verified": true
},
{
"name": "Blog",
"value": "https://blog.joinmastodon.org",
"verified": true
},
{
"name": "Donate",
"value": "https://joinmastodon.org/sponsors#donate",
"verified": true
}
]
}
Input reference
| Field | Type | Notes |
|---|---|---|
accounts | array | @user@instance or a profile URL. |
hashtags | array | Read the instance's public hashtag timeline. |
hashtagInstance | string | Hashtag instance |
maxPostsPerSource | integer | 0 = profiles only. |
excludeReplies | boolean | Exclude replies |
excludeBoosts | boolean | Exclude boosts |
sinceDate | string | YYYY-MM-DD. |
monitorMode | boolean | Remember newest post per source; later runs return only newer posts. |
stateStoreName | string | State store name |
Pricing
Pay per event: Profile $0.002, Post $0.0004. Plus Apify's small per-run start fee. Apify's free plan includes monthly credit to try it.
How to run
- Open the Store page and click Try for free.
- Fill in the input (or paste the example JSON in the JSON tab).
- Click Start, then export results as CSV, Excel or JSON, or call it via the Apify API.
- Optional: add a Schedule and a webhook/Slack/email integration for ongoing monitoring.