mcpField
S
SocialAPIs — Facebook & Instagram Data

SocialAPIs — Facebook & Instagram Data

VerifiedFeaturedRemote
socialapis.ioData & Analytics2Updated 1d ago

About SocialAPIs — Facebook & Instagram Data

SocialAPIs provides read-only Facebook and Instagram data tools for AI agents, covering pages, posts, groups, ads, Marketplace and profiles. It supports hosted remote MCP access or a local npm-based setup, with structured results and a shared API key.

Key features

  1. 01Facebook and Instagram data access
  2. 02Page, post, group and profile lookups
  3. 03Ads Library and Marketplace searches
  4. 04Structured read-only tool results
  5. 05Hosted and local connection options
  6. 06Live endpoint catalog updates

Use cases

  1. 01Review a Facebook page's followers and posts
  2. 02Search Meta ads by keyword or country
  3. 03Find Facebook Marketplace listings
  4. 04Retrieve Instagram profile posts and reels

MCP support

Exposes grouped Facebook and Instagram tools to MCP clients through a hosted Streamable HTTP endpoint or a local stdio package. Tool calls require a SocialAPIs API key; tool listings can be read without one.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://mcp.socialapis.io/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://mcp.socialapis.io/mcpAuth required
Packages
npm@socialapis/mcp2.2.0

Tools

12
ParameterTypeRequiredDescription
linkstringNoFacebook page URL, e.g. https://facebook.com/nike. For videos you can pass profile_id instead. Required for: details, id, posts, reels. Optional for: videos.
limitnumberNoResults per call. posts: 3-9 (default 3) · videos: 6-12 (default 6) · albums: 8-16 (default 8). Optional for: posts, videos, albums.
actionenumYesWhich operation to run. See the tool description for what each action returns and which parameters it needs.details | id | posts | videos | reels | albums | album_items
album_idstringNoAlbum ID, from action=albums or facebook_group (action=albums). Required for: album_items.
timezonestringNoTimezone for timestamps (e.g., UTC, America/New_York). Optional for: posts.
after_timestringNoISO 8601 timestamp - only return posts after this time. Optional for: posts.
end_cursorstringNoPagination cursor from the previous response. Optional for: posts, videos, reels, albums, album_items.
profile_idstringNoNumeric Facebook page ID, from action=id. For videos, an alternative to link. Required for: albums. Optional for: videos.
before_timestringNoISO 8601 timestamp - only return posts before this time. Optional for: posts.
exact_followers_countbooleanNoWhen true, performs a deeper scrape to return the exact follower count (e.g. 38,493,217 instead of "38M"). Charges 5 credits when true, 1 credit otherwise. Default: false. Optional for: details.

Details

From the project README

SocialAPIs MCP Server

SocialAPIs Logo

Facebook & Instagram data for AI agents — local (npx) or hosted (remote MCP)

npm version License: MIT GitHub stars SocialAPIs MCP Server MCP server – quality and maintenance score on Glama

Website • Documentation • Discord • npm

Install in Cursor

Official SDKs: Python • JavaScript / TypeScript • Go


🚀 Quick Start

AI agents (Cline, Claude Code, Cursor): follow llms-install.md for step-by-step install and verification.

One-click: use the Install in Cursor button above — then replace YOUR_API_KEY in Cursor's MCP settings with your key. Also listed on Smithery, cursor.directory, mcp.so and the official MCP Registry (io.github.SocialAPIsHub/social-media-api).

Option A — Hosted (remote MCP, no install)

Point any client that supports remote MCP servers (Streamable HTTP) at:

https://mcp.socialapis.io/mcp

Authenticate with your SocialAPIs API key in a header:

Authorization: Bearer YOUR_API_KEY

(x-api-token: YOUR_API_KEY also works.) Tool listing works without a key; tool calls need one. Example config for clients that take a URL + headers:

{
  "mcpServers": {
    "socialapis": {
      "url": "https://mcp.socialapis.io/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}
Option B — Local (npx, stdio)
Installation
npm install -g @socialapis/mcp
Configuration

Add to your Claude Desktop config:

macOS:

nano ~/Library/Application\ Support/Claude/claude_desktop_config.json

Windows:

notepad %APPDATA%\Claude\claude_desktop_config.json

🔧 Configuration

Method 1: Command Line Argument (Recommended for Claude Desktop)
{
  "mcpServers": {
    "socialapis": {
      "command": "npx",
      "args": ["-y", "@socialapis/mcp", "YOUR_API_KEY"]
    }
  }
}
Method 2: Environment Variable
# Set environment variable
export SOCIALAPIS_API_KEY=your_api_key_here

# Run without argument
npx @socialapis/mcp
Method 3: .env File (For Development)
# Copy example file
cp .env.example .env

# Edit with your values
nano .env

.env file:

SOCIALAPIS_API_KEY=your_api_key_here
MCP_PROXY_URL=https://mcp.socialapis.io
Environment Variables
VariableDescriptionDefault
SOCIALAPIS_API_KEYYour SocialAPIs API keyNone (required)
MCP_PROXY_URLMCP proxy server URLhttps://mcp.socialapis.io
PORTHTTP server port3001
API_BASE_URLBackend API URLhttps://api.socialapis.io
SOCIALAPIS_CATALOG_URLLive endpoint catalog the server follows (server only)https://auth.socialapis.io/api/public/endpoints
SOCIALAPIS_CATALOG_REFRESH_MSHow often the catalog (server) or tool list (npm client) is re-read600000 (10 min)
SOCIALAPIS_LIVE_CATALOG0 = always use the bundled definitions (server only)on
Live catalog

Prices, descriptions and parameters follow the SocialAPIs API without a new release. The server reads the public endpoint catalog at startup (3 s timeout) and every 10 minutes, compares it with src/catalogBaseline.json (the catalog src/tools.js was written against) and applies only what changed since: a new price replaces the tool's Pricing: sentence, an edited description or parameter replaces ours, added and removed parameters are added and removed, and a disabled endpoint's action says "Currently unavailable." Tool and action names never change, and new endpoints don't become tools until a release adds them. If the catalog can't be read, or a change would make two actions' parameters conflict, the last good definitions (at first the bundled ones) stay. GET /health shows catalog: { source, version, fetchedAt, routes }. The npm client re-reads the tool list every 10 minutes and sends notifications/tools/list_changed when it changes.

After updating tools.js to match the API, refresh the baseline: node scripts/snapshot-catalog.mjs --from https://auth.socialapis.io/api/public/endpoints (public fields only).

Get API Key
  1. Sign up at socialapis.io
  2. Go to Dashboard
  3. Copy your API key
  4. Replace YOUR_API_KEY in config
Test It

Restart Claude Desktop and ask:

Get Nike's Facebook page details

📋 Features

  • 🌐 One API key - Facebook and Instagram behind a single interface
  • 🤖 AI-First - Built for Claude, Cursor, and AI agents
  • 📊 Rich Data - Posts, comments, engagement metrics
  • 🔍 Advanced Filtering - Time ranges, pagination
  • 🎯 Simple Auth - No OAuth complexity
  • 🧩 Structured output - every tool declares an output schema and returns { result, creditsCharged, creditsRemaining }, so agents can track credit spend directly
  • 🛡️ Read-only annotations - all tools are marked readOnlyHint, so clients can skip confirmation prompts
  • ⚡ Fast - Global edge network
  • 🔒 Secure - API keys stay local

🛠️ Available Tools

12 tools covering 50 actions across Facebook and Instagram. Each tool groups one resource and takes an action argument; every action maps to one REST endpoint on api.socialapis.io. Tool descriptions list each action, the parameters it needs and its credit cost.

ToolActions
facebook_pagedetails (followers, contact info, category; exact_followers_count=true costs 5 credits), id, posts (limit 3-9, date filters), videos (limit 6-12), reels, albums (profile_id from id, limit 8-16), album_items (photos and videos in an album)
facebook_groupdetails, id, posts (limit 3-9, date filters), videos, albums (group_id from id, limit 8-16), album_items
facebook_postdetails, details_extended (view counts, video URLs, audio metadata), id, attachments (5 credits), video, comments, comment_replies
facebook_searchpages, people, posts, videos, locations (location UIDs for the other searches)
facebook_adssearch (ads by keyword, page, country, status), keywords (advertisers for a keyword), page_details, archive_details, countries
facebook_marketplacesearch (price, location, category, condition filters), vehicles, rentals, listing, seller, categories, city_coordinates
facebook_media_downloadDownload URLs for Facebook images and videos
instagram_profiledetails, id, posts, reels, highlights, highlight_details
instagram_postdetails, id (shortcode from a post URL)
instagram_reelsfeed, by_audio
instagram_searchPopular users, hashtags and places for a keyword
instagram_locationposts (recent or top), nearby

Example call: facebook_page with {"action": "posts", "link": "https://www.facebook.com/nike", "limit": 9}.

Upgrading from 1.x: the earlier per-endpoint tool names (facebook_get_page_details, instagram_get_profile_posts, …) still work when called directly, so existing prompts and scripts keep running. They're no longer listed. If your client auto-approves tools by name, add the new names.

Not supported yet

Only Facebook and Instagram are live today. TikTok, X / Twitter, LinkedIn and YouTube are on the roadmap with no committed dates — tools for them will appear here only once they ship.

Track the platform roadmap at socialapis.io/api-sources.


💡 Usage examples

Each prompt below is a real Claude Desktop session. Some of these are single-tool-call patterns ("get me X"); some require Claude to chain multiple calls + aggregate the results (noted where).

Single-call patterns (fast, cheap)
What's Nike's follower count on Facebook?
→ Uses facebook_page action=details (1 credit)

Get the latest 9 posts from facebook.com/EngenSA
→ Uses facebook_page action=posts with limit=9 (1-3 credits depending on actual returned count)

Show me the Meta ads currently running for "Apple Vision Pro" in Germany
→ Uses facebook_ads action=search (1 credit)
Multi-call patterns (Claude orchestrates these — but it's slower + more expensive)
Compare engagement on Nike vs Adidas's last 9 Facebook posts
→ Claude calls facebook_page action=posts twice (~2-6 credits total),
  aggregates reactions/comments/shares per post, returns a comparison.

What are people saying in the comments on Coca-Cola's last 3 posts?
→ Claude calls facebook_page action=posts (1 credit) then
  facebook_post action=comments 3 times (3 credits) and summarizes.

Show me marketplace listings for "PlayStation 5" under $400 in Berlin
→ Claude calls facebook_marketplace action=city_coordinates (1 credit) +
  facebook_marketplace action=search with filters (1 credit).
What this MCP server does NOT do

Some queries look natural in a chat ("compare engagement over the last month") but require aggregations the API doesn't expose as a single tool yet. Claude can still answer them, but it'll fan out into many tool calls — which is slow + expensive.

Query shapeWhy it's hard
"Engagement rate over the last 30 days" for a pageRequires fetching every post in the date range (paginated, limit capped at 9 per call) and computing engagement per post. Hits the LLM tool-call budget on busy pages.
"Compare engagement rates between Brand A, B, C over the last month"Same problem, 3× — one paginated fetch per brand, then comparison math. Works for small windows; slow for "last month" on high-volume pages.
Historical archive older than what Facebook itself servesWe surface what Facebook makes publicly visible. Posts that scrolled off Facebook's visible feed aren't retrievable.
Server-side time-series (daily engagement, weekly growth)Not yet — on the roadmap as a future engagement-stats endpoint with built-in aggregation.

If your use case maps to one of these patterns and you want the aggregation pre-computed instead of LLM-orchestrated, contact support with the specific query — we're prioritizing the aggregation endpoint based on customer demand.


🏗️ Architecture

Claude Desktop
    ↓
@socialapis/mcp (local MCP client)
    ↓
https://mcp.socialapis.io (global proxy)
    ↓
https://api.socialapis.io (data API)

Why this architecture?

  • ✅ Low latency (global edge network)
  • ✅ High reliability (99.9% uptime)
  • ✅ Auto rate limiting
  • ✅ Smart caching
  • ✅ Your API key stays local

🔧 Development

Local Setup
# Clone repository
git clone https://github.com/SocialAPIsHub/mcp-server.git
cd mcp-server

# Install dependencies
npm install

# Run MCP client
npm start YOUR_API_KEY

# Run HTTP proxy server
npm run serve
Project Structure
mcp-server/
├── src/
│   ├── tools.js          # The 50 endpoint definitions (one per action)
│   ├── groups.js         # Groups them into the 12 listed tools
│   ├── catalogBaseline.json  # The API catalog tools.js was written against
│   ├── catalogOverlay.js # Applies live catalog changes to the definitions
│   └── liveCatalog.js    # Fetches the live catalog (startup + every 10 min)
├── scripts/snapshot-catalog.mjs  # Rewrites catalogBaseline.json
├── test/                 # node --test (npm run test:unit)
├── mcp-wrapper.js        # MCP client (runs locally)
├── server.js             # HTTP proxy server
├── package.json
├── Dockerfile
└── README.md
Testing
# Unit tests
npm run test:unit

# Test MCP client locally
node mcp-wrapper.js YOUR_API_KEY

# Test HTTP proxy
curl http://localhost:3001/health
curl http://localhost:3001/tools

# Test specific tool
curl -X POST http://localhost:3001/proxy \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool":"facebook_page","arguments":{"action":"details","link":"https://facebook.com/nike"}}'

📊 Pricing

PlanCredits / monthPrice
Free200$0
Pro1,500$4.99
Ultra30,000$49
Mega120,000$179
EnterpriseCustomContact us

Most tools cost 1 credit per call; each tool description states its exact price. Current plans: socialapis.io/pricing.

View detailed pricing →


🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

Quick Contribution Guide
  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📖 Documentation


💬 Support


🗺️ Roadmap

Shipped:

Upcoming:

  • TikTok support
  • X (Twitter) support
  • LinkedIn support
  • YouTube support
  • Advanced analytics — server-side aggregation endpoints (engagement-over-time, brand comparisons) so multi-call patterns become a single tool call
  • Real-time webhooks — push notifications on new posts / engagement thresholds
  • LangChain integration

Platform priorities shift based on customer demand. The fastest way to push something up the queue is to email [email protected] or DM @socialapis on Telegram with the use case.


📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments


📇 Listed on

SocialAPIs MCP Server MCP server – quality and maintenance score on Glama

Also on the Official MCP Registry, Smithery, LobeHub, mcp.so, mcpservers.org, cursor.directory and awesome-remote-mcp-servers.


🌟 Star History

Star History Chart


Made with ❤️ by the SocialAPIs Team

Website • Twitter • Discord

Python SDK • JS SDK • Go SDK

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.