Facebook & Instagram data for AI agents β local (npx) or hosted (remote MCP)
Website β’ Documentation β’ Discord β’ npm
Official SDKs: Python β’ JavaScript / TypeScript β’ Go
AI agents (Cline, Claude Code, Cursor): follow
llms-install.mdfor 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).
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" }
}
}
}npm install -g @socialapis/mcpAdd to your Claude Desktop config:
macOS:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
notepad %APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"socialapis": {
"command": "npx",
"args": ["-y", "@socialapis/mcp", "YOUR_API_KEY"]
}
}
}# Set environment variable
export SOCIALAPIS_API_KEY=your_api_key_here
# Run without argument
npx @socialapis/mcp# 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| Variable | Description | Default |
|---|---|---|
SOCIALAPIS_API_KEY |
Your SocialAPIs API key | None (required) |
MCP_PROXY_URL |
MCP proxy server URL | https://mcp.socialapis.io |
PORT |
HTTP server port | 3001 |
API_BASE_URL |
Backend API URL | https://api.socialapis.io |
SOCIALAPIS_CATALOG_URL |
Live endpoint catalog the server follows (server only) | https://auth.socialapis.io/api/public/endpoints |
SOCIALAPIS_CATALOG_REFRESH_MS |
How often the catalog (server) or tool list (npm client) is re-read | 600000 (10 min) |
SOCIALAPIS_LIVE_CATALOG |
0 = always use the bundled definitions (server only) |
on |
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).
- Sign up at socialapis.io
- Go to Dashboard
- Copy your API key
- Replace
YOUR_API_KEYin config
Restart Claude Desktop and ask:
Get Nike's Facebook page details
- π 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
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.
| Tool | Actions |
|---|---|
facebook_page |
details (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_group |
details, id, posts (limit 3-9, date filters), videos, albums (group_id from id, limit 8-16), album_items |
facebook_post |
details, details_extended (view counts, video URLs, audio metadata), id, attachments (5 credits), video, comments, comment_replies |
facebook_search |
pages, people, posts, videos, locations (location UIDs for the other searches) |
facebook_ads |
search (ads by keyword, page, country, status), keywords (advertisers for a keyword), page_details, archive_details, countries |
facebook_marketplace |
search (price, location, category, condition filters), vehicles, rentals, listing, seller, categories, city_coordinates |
facebook_media_download |
Download URLs for Facebook images and videos |
instagram_profile |
details, id, posts, reels, highlights, highlight_details |
instagram_post |
details, id (shortcode from a post URL) |
instagram_reels |
feed, by_audio |
instagram_search |
Popular users, hashtags and places for a keyword |
instagram_location |
posts (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.
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.
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).
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)
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).
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 shape | Why it's hard |
|---|---|
| "Engagement rate over the last 30 days" for a page | Requires 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 serves | We 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.
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
# 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 servemcp-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
# 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"}}'| Plan | Credits / month | Price |
|---|---|---|
| Free | 200 | $0 |
| Pro | 1,500 | $4.99 |
| Ultra | 30,000 | $49 |
| Mega | 120,000 | $179 |
| Enterprise | Custom | Contact us |
Most tools cost 1 credit per call; each tool description states its exact price. Current plans: socialapis.io/pricing.
We welcome contributions! Please see CONTRIBUTING.md for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Full Documentation
- API Reference
- MCP Guide
- Examples
- Agent skill: teaches Claude Code, Cursor, Codex and other coding agents to use SocialAPIs (
npx skills add SocialAPIsHub/skills)
- π§ Email: support@socialapis.io
- π¬ Discord: discord.gg/D5bQskrwV
- π Issues: GitHub Issues
- π Docs: docs.socialapis.io
Shipped:
- Facebook API support β 7 tools, 37 actions (Pages, Groups, Posts, Search, Ads Library, Marketplace, Media)
- Instagram support β 5 tools, 13 actions (Profiles, Posts, Reels, Highlights, Discovery / Locations)
- MCP server implementation
- HTTP proxy server
- npm package published β
@socialapis/mcp - MCP Registry listing β registry.modelcontextprotocol.io
- Python SDK β
socialapis-sdkon PyPI (50 endpoints, MIT) - JavaScript / TypeScript SDK β
socialapis-sdkon npm (Node 18+, Bun, Deno, browsers) - Go SDK β github.com/SocialAPIsHub/socialapis-go (idiomatic, zero deps)
- Agent skill β github.com/SocialAPIsHub/skills for Claude Code, Cursor, Codex and other coding agents
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 support@socialapis.io or DM @socialapis on Telegram with the use case.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Model Context Protocol
- Powered by Anthropic Claude
- Inspired by the AI agent community
Also on the Official MCP Registry, Smithery, LobeHub, mcp.so, mcpservers.org, cursor.directory and awesome-remote-mcp-servers.
