Call social data from an AI agent

The MCP package is not published yet. The HTTP API is what an agent can call today.

People looking for an MCP server for web scraping want an agent to call tools instead of hand-written HTTP. SocialScrape's docs describe that server. The page is still a draft: the package is not published, and the hosted URL is not live yet. Call the server planned. Do not put a URL in a client config and expect a connection.

What works today is the REST API. An agent that can send HTTPS can do the same jobs the draft tools name. The routes are in beta. The API is in early access.

What the draft says the agent would see#

The MCP guide groups endpoints so the client is not handed one tool per route. The tools it lists:

  • get_transcript, search, get_profile, get_post, get_comments. The platform is an argument. These are the common jobs.
  • One tool per platform, such as github or facebook. resource picks the data (user, profile.posts, and so on). Parameters match the API.
  • describe. Exact parameters, allowed values, price and example arguments for any endpoint. Free, and it makes no API call.
  • call_endpoint, batch, get_job, monitors, get_credits. Any endpoint by id, up to 100 requests in one call, long jobs, webhooks and the balance.

The guide says only built endpoints appear, because the tool list is generated from the same registry as the reference. A stub that is not in the reference is not a tool. The feature page repeats this set and calls the server early access. The draft reason is more specific, so this post treats the server as planned until the package is published.

describe is the tool an agent should use before it invents a parameter. Until it exists on a live server, the same facts are on each endpoint page and in the API reference.

The guide also says a result line reports credits charged and credits remaining, that trim defaults to true to keep context short, and that agents should pass max_age_days when freshness is not critical. Those two query flags already work on the HTTP API. You do not need MCP to use them.

The call an agent makes today#

Give the agent a key and the base URL https://api.socialscrape.io. The key is the x-api-key header, never a query parameter. Create one key per agent so you can see its usage and revoke it alone. Keys belong to a team. A team can hold up to 20 active keys. The owner and admins create them. See authentication and teams.

A profile lookup is the smallest useful tool. GET /v1/tiktok/profile with handle:

curl
curl -G "https://api.socialscrape.io/v1/tiktok/profile" \
  -H "x-api-key: $SOCIALSCRAPE_API_KEY" \
  --data-urlencode "handle=khaby.lame"
Python
import os
import requests

params = {
    "handle": "khaby.lame",
}
res = requests.get(
    "https://api.socialscrape.io/v1/tiktok/profile",
    headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},
    params=params,
)
body = res.json()

if body["ok"]:
    print(body["data"])
else:
    print(body["error"]["code"], body["error"]["message"])
TypeScript
const url = new URL("https://api.socialscrape.io/v1/tiktok/profile");
url.search = new URLSearchParams({
  "handle": "khaby.lame"
}).toString();
const res = await fetch(url, {
  headers: { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! },
});
const body = await res.json();

if (body.ok) {
  console.log(body.data);
} else {
  console.error(body.error.code, body.error.message);
}

Tell the agent to read ok first. On success, data is the profile: handle, name, bio, stats.followers, stats.following, stats.posts, stats.likes, url, verified. credits_charged is 1 on a fresh hit and 0 on a cached one. credits_remaining is the team balance. On failure, read error.code and error.retryable. Do not retry not_found or invalid_params. Do retry rate_limited after retry-after seconds. The message text can change. The code should not.

The same pattern covers every other GET. The path and the parameters are on the reference. Examples on this blog: Instagram comments, YouTube channels, Ad Library search, a listening pass.

llms.txt and llms-full.txt are the docs in a form a model can read. They are linked from the MCP guide. Draft pages stay out of llms.txt.

Credits, on purpose#

An agent will loop. Cap it with the team balance, not with a prompt. New accounts get 100 credits once, no card. A pack is a one-time buy. Starter is $15 for 5,000 credits. Monthly Starter is $15 for 6,500, and those credits reset. The rest of the table is pricing.

Plan credits are spent before pack credits. A request is charged only when it succeeds, so parallel calls cannot overdraw. Too few credits is 402 insufficient_credits. The credits guide says that response can include payment details an agent with a card can act on. This post does not walk through a payment. Read that guide before you let an agent buy anything. A failure costs 0 either way.

max_age_days is how you keep a research agent from paying twice for the same profile. Set it when this morning's copy is fine. Omit it when the count has to be fresh. Cache rules are in caching.

A batch of up to 100 requests is POST /v1/batch. It saves round trips. Each item still counts toward the rate limit and, on success, toward credits. See batch and jobs. Free credits allow 30 requests a minute per team. More keys do not raise that. See rate limits.

Limits#

Do not tell the agent the MCP server is connected. It is planned. Do not tell it to install a package that is not published. HTTP is the interface.

Do not tell it to invent fields. A null follower count is null. Comment replies on Instagram are not available logged out. X search is a sample of engine-indexed posts, not a firehose. Those limits are on the endpoint pages. Point the agent at the page for the route it is calling.

The API is in early access. Endpoints are beta.

Next#

Draft setup, including the tool table, is MCP for AI agents. The marketing summary is MCP for AI agents. A comparison page that cites other servers' own wording is best social media MCP servers. The HTTP start is the quickstart. A longer agent job, transcripts into a retrieval index, is the RAG use case.

When the package is published, the draft reason on the docs page is the line that changes. Until that line changes, use the profile request above.

Questions

Can I point Claude or Cursor at a hosted MCP URL today?

No. The MCP docs are a draft. The package is not published and the hosted URL is not live yet. Treat the server as planned. Call the REST API.

Which tools does the draft describe?

get_transcript, search, get_profile, get_post and get_comments, plus one tool per platform, describe, call_endpoint, batch, get_job, monitors and get_credits. Only built endpoints are included. describe is free and makes no API call.

How does an agent send the key?

On HTTP, the x-api-key header. Give each agent its own key, on a team with a balance you can afford to lose. A team can hold up to 20 active keys.

What happens when the credits run out?

The API returns 402 insufficient_credits. The credits guide describes payment details on that response for an agent that can pay. A failed call costs 0 credits.

Does batch skip the rate limit?

No. A batch of up to 100 requests saves round trips. Each item still counts toward the team limit.

Build on social data early.

Developers and agent builders get the first keys.

Get early access