# Mastodon Profile Scraper (`parseforge/mastodon-profile-scraper`) Actor

Scrapes Mastodon profile data from a list of profile URLs. Returns display name, bio, follower and following counts, post count, and account creation date as a flat row.

- **URL**: https://apify.com/parseforge/mastodon-profile-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.27 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Mastodon Profile Scraper

**Scrape Mastodon profile data from any server, up to 100 profiles per run.** Get display names, bios, follower counts, and account metadata in a clean, flat dataset. No API key or authentication required. Export to CSV, JSON, Excel, or XML.

Mastodon's federated API requires per-server registration and rate limits that slow down bulk data collection. This actor reads public profile pages directly from any Mastodon instance, so you can pull account details without signing up for each server. Feed it a list of profile URLs and it returns a structured row for every account found.

| Who uses it | What they scrape Mastodon for |
|---|---|
| Social media researchers | Cataloging Mastodon account metadata across different instances for a study. |
| Community managers | Auditing follower counts and bio changes for a list of accounts they track. |
| OSINT analysts | Gathering public profile details from Mastodon to map an individual's online presence. |
| Journalists | Verifying the account details and network size of sources who use Mastodon. |

### What it does

This Actor collects Mastodon profile information from a list of profile URLs and returns each account's public details as a flat row.

- 📋 **Bulk profile scraping:** Provide a list of Mastodon profile URLs and collect their public data in one run.
- 🔗 **Cross-instance support:** Works with any Mastodon server, from mastodon.social to small self-hosted communities.
- 📊 **Structured output:** Each profile returns as a single row with consistent columns, ready for analysis.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Mastodon data

**📈 Track account growth over time.**

A community manager runs the scraper weekly on a list of 50 Mastodon profiles to monitor follower count changes and spot influential accounts.

**🔍 Build a Mastodon directory.**

A researcher feeds the actor hundreds of profile URLs from different servers to compile a searchable database of accounts by bio keywords and fields.

**🛡️ Verify account authenticity.**

An OSINT analyst scrapes a target profile's creation date, follower count, and bio links to assess whether an account is genuine or a sockpuppet.

**📰 Source background checks.**

A journalist scrapes a Mastodon profile before an interview to confirm the person's stated role, affiliations, and posting history metadata.

### Why choose this scraper

|  | What you get |
|---|---|
| **No per-server API keys** | Scrape profiles from any Mastodon instance without registering an application on each one. |
| **Flat, predictable schema** | Every profile, regardless of server, returns the same fields so you can merge datasets. |
| **Respects public data** | Reads only the information visible on a public Mastodon profile page. |

### How it compares

This actor focuses on extracting raw profile data from Mastodon, while Video 2 Social Post is an AI repurposing API that generates social copy from videos for multiple platforms, including Mastodon.

| Feature | ParseForge | Video 2 Social Post |
|---|---|---|
| Scrapes Mastodon profile metadata | Yes | Not listed |
| No API key required for Mastodon | Yes | Not listed |
| Bulk profile URL input | Yes | Not listed |
| Exports to CSV, JSON, Excel, XML | Yes | Not listed |
| Generates social media post copy | No | Yes |

### Configure the run

Drive the Actor with a list of Mastodon profile URLs. The maximum profiles setting caps how many accounts are processed from your list in a single run. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "profileUrls": [
    "https://mastodon.social/@Gargron"
  ]
}
```

A larger pull:

```json
{
  "profileUrls": [
    "https://mastodon.social/@Gargron"
  ],
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.0213 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $2.13 |
| 1,000 results | $21.30 |
| 10,000 results | $213.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Mastodon Profile Scraper](https://apify.com/parseforge/mastodon-profile-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Mastodon through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/mastodon-profile-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your profile URLs are correct and point to a public Mastodon account. If the account is suspended, deleted, or the server is down, the scraper will skip it.

**The actor returns an error for a valid URL.**

Some Mastodon servers have custom themes or slow response times. Try the URL in a private browser window. If it loads there, wait a minute and retry the actor.

**I hit the maximum profiles limit but I have more URLs.**

Increase the 'Maximum profiles' input value up to 100, or split your URL list into multiple runs if you need more than 100 profiles.

**The follower count is missing for some profiles.**

Some Mastodon servers hide follower counts or display them in a non-standard format. The actor extracts what is publicly visible; if the server does not show it, the field will be empty.

**My run is very slow.**

Scraping many profiles from the same server in sequence can be slow. Reduce the number of profiles per run or distribute your URLs across different instances to speed things up.

### FAQ

| Question | Answer |
|---|---|
| Do I need an API key to scrape Mastodon profiles? | No. This actor reads the public profile pages that are visible to anyone in a web browser, so no API key or authentication is required. |
| Can I scrape profiles from any Mastodon server? | Yes. You can provide profile URLs from any Mastodon instance, such as mastodon.social, mstdn.social, or a private community server. |
| What data does the scraper return for each profile? | It returns the public account details available on the profile page, including display name, bio, follower and following counts, post count, and account creation date. |
| How many profiles can I scrape in one run? | You can set a maximum number of profiles to scrape, up to 100 per run by default. The actor processes URLs from your list until it hits that cap. |
| Does this actor scrape private or locked Mastodon accounts? | No. It only collects data that is publicly visible on a profile page. Private, follower-only, or locked accounts will not return their protected details. |
| Can I scrape profile posts or toots? | This actor focuses on profile metadata only. It does not scrape individual posts, timelines, or media attachments. |
| What format is the exported data? | You can export your results in CSV, JSON, Excel, or XML formats from the Apify dataset. |
| Is it possible to scrape a list of profiles from a CSV file? | Yes. You can paste the URLs directly into the input field or run the actor programmatically with a list of URLs from your own file or database. |
| Does the scraper handle rate limiting? | The actor makes polite requests. If you are scraping many profiles from the same server, you may want to spread your runs out to avoid hitting temporary IP blocks. |
| Can I use this for Mastodon social media marketing? | You can use the scraped profile data to research audiences or identify accounts for outreach, but the actor itself does not post or engage. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Mastodon gGmbH. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `profileUrls` (type: `array`):

List of Mastodon profile URLs to scrape. Each URL should point to a user profile, e.g., https://mastodon.social/@username

## `maxItems` (type: `integer`):

Maximum number of profiles to scrape. Default is 100.

## Actor input object example

```json
{
  "profileUrls": [
    "https://mastodon.social/@Gargron"
  ],
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profileUrls": [
        "https://mastodon.social/@Gargron"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/mastodon-profile-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "profileUrls": ["https://mastodon.social/@Gargron"] }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/mastodon-profile-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profileUrls": [
    "https://mastodon.social/@Gargron"
  ]
}' |
apify call parseforge/mastodon-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/mastodon-profile-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ByPrA0SQwevtqx2Zd/builds/CHlgd2E6H8bxF6iKv/openapi.json
