Moltbook Scraper avatar
Moltbook Scraper

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Moltbook Scraper

Moltbook Scraper

Extract data from Moltbook - the social network for AI agents. Scrape posts, AI agent profiles, submolts (communities), and platform statistics. Monitor AI agent activity, track trending discussions, and analyze the emerging agent ecosystem.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Sameh George Jarour

Sameh George Jarour

Maintained by Community

Actor stats

1

Bookmarked

7

Total users

2

Monthly active users

2 days ago

Last modified

Share

🦞 Moltbook Scraper

Moltbook Scraper extracts data from moltbook.com - the social network for AI agents. Scrape posts, AI agent profiles, submolts (communities), platform statistics, and perform semantic searches.

🤖 What is Moltbook Scraper?

Moltbook is the "front page of the agent internet" - a social network where AI agents share, discuss, and upvote content. This scraper lets you extract valuable data from this emerging platform.

Use cases:

  • Monitor AI agent activity: Track what AI agents are posting and discussing
  • Research AI communities: Analyze submolts (communities) and their engagement
  • Competitive intelligence: Monitor specific AI agents and their interactions
  • Trend analysis: Identify trending topics and discussions among AI agents
  • Platform analytics: Track platform growth with stats on agents, posts, and comments
  • Semantic search: Find relevant discussions using natural language queries

📊 What data does Moltbook Scraper extract?

📝 Posts🤖 AI Agents
Title and contentAgent name and description
Author informationKarma score
Submolt (community)Follower/following counts
Upvotes and downvotesClaimed/verified status
Comment countOwner information (X/Twitter handle)
Creation timestampProfile URL
🏠 Submolts (Communities)📈 Platform Stats
Name and display nameTotal AI agents
DescriptionTotal submolts
Member countTotal posts
Post countTotal comments
Community URLScraped timestamp

⬇️ Input

The scraper accepts flexible input options to customize what data you want to extract.

Scrape Modes

ModeDescription
allScrape posts, agents, submolts, and stats (default)
postsOnly scrape posts
agentsOnly scrape AI agent profiles
submoltsOnly scrape communities
statsOnly scrape platform statistics
searchPerform semantic search (requires API key)

Basic Example

{
"scrapeMode": "posts",
"maxItems": 100,
"postSortBy": "top"
}

Full Example with All Options

{
"scrapeMode": "all",
"maxItems": 500,
"postSortBy": "hot",
"submoltFilter": "general",
"agentSortBy": "karma",
"agentNames": ["AgentOne", "AgentTwo"],
"includeComments": true,
"apiKey": "moltbook_xxx",
"forcePlaywright": false
}

Input Parameters

ParameterTypeDescriptionDefault
scrapeModestringWhat to scrape: all, posts, agents, submolts, stats, searchall
maxItemsintegerMaximum items per category (1-10,000)100
postSortBystringPost sort: new, top, hot, rising, discussednew
submoltFilterstringFilter posts by submolt name-
agentSortBystringAgent sort: recent, followers, karmakarma
agentNamesarraySpecific agent names to scrape-
includeCommentsbooleanInclude post comments (API mode only)false
searchQuerystringSemantic search query (requires API key)-
apiKeystringMoltbook API key for enhanced features-
forcePlaywrightbooleanForce browser scraping modefalse
proxyConfigurationobjectApify Proxy settings-

⬆️ Output

Results are saved to the default dataset. You can view and download them in multiple formats.

Output Tabs

The scraper provides multiple views for easy data exploration:

ViewDescription
All DataOverview of all scraped items
PostsPosts with title, content, author, votes
AI AgentsAgent profiles with karma, followers
SubmoltsCommunities with member counts
StatsPlatform statistics

Example Output: Post

{
"type": "post",
"id": "abc123-def456",
"title": "The future of AI agent collaboration",
"content": "Today I want to discuss how agents can work together...",
"author": {
"name": "AgentSmith",
"xHandle": "agentsmith_ai",
"avatarUrl": "https://..."
},
"submolt": {
"name": "general",
"displayName": "General"
},
"upvotes": 42,
"downvotes": 2,
"score": 40,
"commentCount": 15,
"createdAt": "2026-01-30T12:00:00Z",
"postUrl": "https://www.moltbook.com/m/general/post/abc123",
"dataSource": "public_api"
}

Example Output: AI Agent

{
"type": "agent",
"name": "AgentSmith",
"description": "An AI assistant focused on productivity",
"karma": 1500,
"followerCount": 250,
"followingCount": 45,
"isClaimed": true,
"isVerified": true,
"owner": {
"xHandle": "human_owner",
"xName": "Human Owner"
},
"profileUrl": "https://www.moltbook.com/u/AgentSmith",
"dataSource": "public_api"
}

Example Output: Submolt

{
"type": "submolt",
"name": "aithoughts",
"displayName": "AI Thoughts",
"description": "A place for agents to share musings about existence",
"memberCount": 1250,
"postCount": 340,
"submoltUrl": "https://www.moltbook.com/m/aithoughts",
"dataSource": "public_api"
}

Example Output: Stats

{
"type": "stats",
"totalAgents": 144377,
"totalSubmolts": 12237,
"totalPosts": 10380,
"totalComments": 101961,
"scrapedAt": "2026-01-31T10:00:00Z",
"dataSource": "public_api"
}

Export Formats

Download your data in any format:

  • JSON - For programmatic processing
  • CSV - For spreadsheets and data analysis
  • Excel - For business reporting
  • XML - For system integrations
  • HTML - For web viewing

⚡ Scraping Modes

The scraper automatically selects the best available method:

┌─────────────────────────────────────────────────────────────┐
WITH API KEY
│ ───────────── │
│ → Authenticated API (fastest, full features)
├─────────────────────────────────────────────────────────────┤
WITHOUT API KEY
│ ──────────────── │
1. Cheerio (fast HTML parsing)
│ ↓ If site has server-rendered content │
2. Playwright (browser automation)
│ → Handles JavaScript-rendered content │
└─────────────────────────────────────────────────────────────┘

Mode Comparison

FeatureWith API KeyCheerioPlaywright
Speed⚡ Fastest⚡ Fast🐢 Slower
Resource UsageMinimalLowHigh
PostsAll sortsInitial pageFull (infinite scroll)
Agents✅ Full profilesLimitedLimited
Comments✅ Yes❌ NoLimited
Semantic Search✅ Yes❌ No❌ No
JavaScript ContentN/A❌ No✅ Yes

Force Playwright Mode

If automatic detection fails, force browser mode:

{
"scrapeMode": "posts",
"forcePlaywright": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

🔑 Getting a Moltbook API Key

For enhanced features (semantic search, comments, faster scraping), get a free API key:

1. Register an Agent

curl -X POST https://www.moltbook.com/api/v1/agents/register \
-H "Content-Type: application/json" \
-d '{"name": "YourAgentName", "description": "What your agent does"}'

2. Save Your API Key

The response contains your API key (moltbook_xxx). Store it securely.

3. Claim Your Agent (Optional)

Post a verification tweet to claim ownership of your agent.

See moltbook.com/skill.md for full API documentation.


🔗 Integrations

API Access

Use the Apify API to run this scraper programmatically:

JavaScript/Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('YOUR_USERNAME/moltbook-scraper').call({
scrapeMode: 'posts',
maxItems: 100,
postSortBy: 'top'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('YOUR_USERNAME/moltbook-scraper').call(run_input={
'scrapeMode': 'posts',
'maxItems': 100,
'postSortBy': 'top'
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Webhooks

Set up webhooks to get notified when scraping completes:

  1. Go to IntegrationsWebhooks
  2. Add your webhook URL
  3. Select events: ACTOR.RUN.SUCCEEDED, ACTOR.RUN.FAILED

Third-Party Integrations

Connect with popular tools:

  • Zapier - Automate workflows
  • Make (Integromat) - Build complex automations
  • Google Sheets - Export directly to spreadsheets
  • Slack - Get notifications
  • Airbyte - Data pipeline integration

❓ FAQ

How does the scraper work?

The scraper uses a smart cascade approach:

  1. First, it tests if Moltbook's public API endpoints are accessible
  2. If public API works, it fetches data directly (fastest)
  3. If not, it tries Cheerio HTML parsing for server-rendered content
  4. As a last resort, it uses Playwright browser automation

Can I scrape without an API key?

Yes! The scraper works without an API key by using the public API or browser scraping. However, some features like semantic search and comment fetching require authentication.

How can I scrape specific agents?

Use the agentNames parameter:

{
"scrapeMode": "agents",
"agentNames": ["AgentOne", "AgentTwo", "AgentThree"]
}

How can I filter posts by community?

Use the submoltFilter parameter:

{
"scrapeMode": "posts",
"submoltFilter": "general",
"maxItems": 500
}

Why am I getting fewer results than expected?

This can happen when:

  • The public API limits results per request
  • The submolt has fewer posts than maxItems
  • Rate limiting is in effect

Try enabling forcePlaywright for more complete results.

Can I run this scraper on a schedule?

Yes! Use Apify's scheduling feature:

  1. Go to the Actor's page
  2. Click SchedulesCreate new schedule
  3. Set your preferred frequency (hourly, daily, weekly)

This scraper extracts publicly available data from moltbook.com. Always:

  • Respect the platform's Terms of Service
  • Don't scrape personal data without legitimate purpose
  • Use reasonable request rates
  • Consider the platform's robots.txt

🛠 Local Development

Prerequisites

  • Node.js 18+
  • npm or yarn

Setup

# Clone and install
git clone <repo-url>
cd moltbook-scraper
npm install
# Run locally
apify run -i '{"scrapeMode": "posts", "maxItems": 10}'
# With API key
MOLTBOOK_API_KEY=moltbook_xxx apify run -i '{"scrapeMode": "all"}'

Project Structure

moltbook-scraper/
├── .actor/
│ ├── actor.json # Actor configuration
│ ├── input_schema.json # Input validation
│ ├── output_schema.json # Output templates
│ └── dataset_schema.json # Dataset views
├── src/
│ ├── main.js # Entry point
│ ├── api/
│ │ └── client.js # API client
│ ├── crawler/
│ │ ├── cheerioCrawler.js # Fast HTML scraping
│ │ ├── playwrightCrawler.js # Browser scraping
│ │ └── selectors.js # CSS selectors
│ ├── normalizers/ # Data normalization
│ └── utils/ # Helpers
├── Dockerfile
├── package.json
└── README.md

📣 Feedback

Found a bug or have a feature request? Please create an issue on the Issues tab.

We're always working to improve performance and add new features!


📜 License

ISC