# Public social media data. One API, one schema.

Public social data API

6 platforms live

SocialTap returns public social media data from the major platforms, normalized into one JSON schema per resource. One API key, one credit balance, and you only pay for requests that succeed.

[Get 100 free credits](https://staging-fly.socialtap.dev/signup/) · [Read the docs](https://staging-fly.socialtap.dev/docs/index.md)

cURL:

```shell
curl -G 'https://staging-fly.socialtap.dev/v1/tiktok/profile' \
  --data-urlencode 'handle=https://www.tiktok.com/@nasa' \
  -H "x-api-key: $SOCIALTAP_API_KEY"
```

Node.js:

```javascript
const params = new URLSearchParams({
  handle: "https://www.tiktok.com/@nasa",
});
const res = await fetch(`https://staging-fly.socialtap.dev/v1/tiktok/profile?${params}`, {
  headers: { "x-api-key": process.env.SOCIALTAP_API_KEY ?? "" },
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
const { data, meta } = body;
console.log(data, meta.credits_charged);
```

Python:

```python
import os

import requests

res = requests.get(
    "https://staging-fly.socialtap.dev/v1/tiktok/profile",
    params={"handle": "https://www.tiktok.com/@nasa"},
    headers={"x-api-key": os.environ["SOCIALTAP_API_KEY"]},
)
body = res.json()
if not res.ok:
    raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
data, meta = body["data"], body["meta"]
print(data, meta["credits_charged"])
```

Go:

```go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"net/http"
	"net/url"
	"os"
)

func main() {
	q := url.Values{}
	q.Set("handle", "https://www.tiktok.com/@nasa")
	req, err := http.NewRequest("GET", "https://staging-fly.socialtap.dev/v1/tiktok/profile?"+q.Encode(), nil)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("x-api-key", os.Getenv("SOCIALTAP_API_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()
	var body struct {
		Data  json.RawMessage `json:"data"`
		Meta  map[string]any  `json:"meta"`
		Error *struct {
			Code    string `json:"code"`
			Message string `json:"message"`
		} `json:"error"`
	}
	if err := json.NewDecoder(res.Body).Decode(&body); err != nil {
		log.Fatal(err)
	}
	if body.Error != nil {
		log.Fatalf("%s: %s", body.Error.Code, body.Error.Message)
	}
	fmt.Println(string(body.Data), body.Meta["credits_charged"])
}
```

200 OK · 1 credit:

```json
{
  "data": {
    "approximate_fields": [],
    "avatar_url": "https://p16-common-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/e5143212a59c09a008bf50f487d54d1f~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=9341391e&x-expires=4070908800&x-signature=SCRUBBED&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast5",
    "banner_url": null,
    "bio": "Making the seemingly impossible, possible.✨",
    "category": null,
    "country_code": null,
    "created_at": "2026-07-20T15:55:49Z",
    "display_name": "NASA",
    "external_links": [
      {
        "title": null,
        "url": "https://science.nasa.gov/feature/artemis-ii-preliminary-lunar-science-report"
      }
    ],
    "id": "7664638705177150477",
    "is_private": false,
    "is_verified": true,
    "location": null,
    "metrics": {
      "follower_count": 2140425,
      "following_count": 23,
      "post_count": 60,
      "total_like_count": 11385816,
      "total_view_count": null
    },
    "platform": "tiktok",
    "platform_specific": {},
    "type": "organization",
    "unknown_fields": [],
    "url": "https://www.tiktok.com/@nasa",
    "username": "nasa"
  },
  "meta": {
    "request_id": "req_3f9c2a7d1e8b4c6a9f0e2d4b6a8c0e1f",
    "platform": "tiktok",
    "source": "page",
    "is_cached": false,
    "credits_charged": 1,
    "latency_ms": 0,
    "fetched_at": "2026-10-25T12:00:00Z",
    "input": {
      "kind": "profile",
      "id": "7664638705177150477",
      "url": "https://www.tiktok.com/@nasa"
    },
    "credits_remaining": 9999,
    "client_request_id": null,
    "warnings": [],
    "mode": "live"
  }
}
```

Failed requests **0 credits**

Cache hits **0 credits**

Credits **never expire**

From **$0.75 / 1k**

Coverage

## Every platform. The same JSON, field for field.

[All APIs](https://staging-fly.socialtap.dev/apis/index.md)

[3 endpoints **Facebook**Posts, ads and transcripts](https://staging-fly.socialtap.dev/apis/facebook/index.md) · [4 endpoints **Instagram**Posts, profiles and transcripts](https://staging-fly.socialtap.dev/apis/instagram/index.md) · [6 endpoints **Rumble**Comments, posts, profiles and transcripts](https://staging-fly.socialtap.dev/apis/rumble/index.md) · [1 endpoint **Threads**Profiles](https://staging-fly.socialtap.dev/apis/threads/index.md) · [5 endpoints **TikTok**Comments, posts, profiles and transcripts](https://staging-fly.socialtap.dev/apis/tiktok/index.md) · [5 endpoints **YouTube**Comments, posts, profiles and transcripts](https://staging-fly.socialtap.dev/apis/youtube/index.md)

Soon **X**Not available yet

Soon **LinkedIn**Not available yet

Soon **Reddit**Not available yet

How it works

## One integration. Learn a schema once, then add platforms without new parsing code.

01

### One key, one URL pattern

Send `x-api-key` on every request, the same way for every platform.

02

### One schema per resource

[Ads](https://staging-fly.socialtap.dev/resources/ad/index.md), [Comments](https://staging-fly.socialtap.dev/resources/comment/index.md), [Posts](https://staging-fly.socialtap.dev/resources/post/index.md), [Profiles](https://staging-fly.socialtap.dev/resources/profile/index.md) and [Transcripts](https://staging-fly.socialtap.dev/resources/transcript/index.md) have the same fields on every platform. `null` means unknown, never zero.

03

### Pay only for success

Prepaid credits, one balance. Errors cost nothing. Cache hits cost nothing.

For agents

## Built for coding agents. Paste one prompt, ship the integration.

- **[llms.txt](https://staging-fly.socialtap.dev/llms.txt)**: Every page is also Markdown; the whole docs are one file.
- **[/mcp](https://staging-fly.socialtap.dev/docs/agents/index.md)**: A remote MCP server on the same key: get_post, get_profile and get_transcript and more.
- **[st_test_](https://staging-fly.socialtap.dev/docs/test-mode/index.md)**: Test keys answer from recorded responses: free and deterministic.

[Build with AI agents](https://staging-fly.socialtap.dev/docs/agents/index.md)

Prompt:

```
Integrate the SocialTap API (https://staging-fly.socialtap.dev) into this project.

1. Read https://staging-fly.socialtap.dev/llms.txt first, then the Markdown docs page of the endpoint you need (linked there). Use only endpoints and parameters documented there.
2. Send the API key in the x-api-key header, read from the SOCIALTAP_API_KEY environment variable. Never hard-code it; if it is not set, ask me for it.
3. Branch on error.code: retry only the retryable codes the docs list, with backoff. On list endpoints follow page.next_cursor while page.has_more is true.
4. Verify with one real request before building on it, for example:

   curl -G 'https://staging-fly.socialtap.dev/v1/tiktok/profile' \
     --data-urlencode 'handle=https://www.tiktok.com/@nasa' \
     -H "x-api-key: $SOCIALTAP_API_KEY"

   and check that data is not empty.
5. Tell me which endpoint you used, what meta.credits_charged was, and any error code you saw.
```

Claude Code:

```shell
claude mcp add --transport http socialtap https://staging-fly.socialtap.dev/mcp --header "authorization: Bearer $SOCIALTAP_API_KEY"
```

Claude Code (.mcp.json):

```json
{
  "mcpServers": {
    "socialtap": {
      "type": "http",
      "url": "https://staging-fly.socialtap.dev/mcp",
      "headers": {
        "authorization": "Bearer ${SOCIALTAP_API_KEY}"
      }
    }
  }
}
```

Cursor (mcp.json):

```json
{
  "mcpServers": {
    "socialtap": {
      "url": "https://staging-fly.socialtap.dev/mcp",
      "headers": {
        "authorization": "Bearer ${env:SOCIALTAP_API_KEY}"
      }
    }
  }
}
```

Codex:

```shell
codex mcp add socialtap --url https://staging-fly.socialtap.dev/mcp --bearer-token-env-var SOCIALTAP_API_KEY
```

Codex (config.toml):

```toml
[mcp_servers.socialtap]
url = "https://staging-fly.socialtap.dev/mcp"
bearer_token_env_var = "SOCIALTAP_API_KEY"
```

Endpoints

## Call them today. Each has a docs page, a playground and live status.

[Open the playground](https://staging-fly.socialtap.dev/playground/)

[Facebook Post APIBetaPost`GET /v1/facebook/post`1 credit](https://staging-fly.socialtap.dev/apis/facebook/post/index.md) · [Facebook Ad Library Search APIBetaAd`GET /v1/facebook/search_ads`1 credit / page](https://staging-fly.socialtap.dev/apis/facebook/search_ads/index.md) · [Facebook Video Transcript APIBetaTranscript`GET /v1/facebook/transcript`From 1 credit](https://staging-fly.socialtap.dev/apis/facebook/transcript/index.md) · [Instagram Post APIBetaPost`GET /v1/instagram/post`1 credit](https://staging-fly.socialtap.dev/apis/instagram/post/index.md) · [Instagram Posts APIBetaPost`GET /v1/instagram/posts`1 credit / page](https://staging-fly.socialtap.dev/apis/instagram/posts/index.md) · [Instagram Profile APIBetaProfile`GET /v1/instagram/profile`1 credit](https://staging-fly.socialtap.dev/apis/instagram/profile/index.md) · [Instagram Reels Transcript APIBetaTranscript`GET /v1/instagram/transcript`From 1 credit](https://staging-fly.socialtap.dev/apis/instagram/transcript/index.md) · [Rumble Comments APIBetaComment`GET /v1/rumble/comments`1 credit / page](https://staging-fly.socialtap.dev/apis/rumble/comments/index.md) · [Rumble Video APIBetaPost`GET /v1/rumble/post`1 credit](https://staging-fly.socialtap.dev/apis/rumble/post/index.md) · [Rumble Channel Videos APIBetaPost`GET /v1/rumble/posts`1 credit / page](https://staging-fly.socialtap.dev/apis/rumble/posts/index.md) · [Rumble Channel APIBetaProfile`GET /v1/rumble/profile`1 credit](https://staging-fly.socialtap.dev/apis/rumble/profile/index.md) · [Rumble Search APIBetaPost`GET /v1/rumble/search_posts`1 credit / page](https://staging-fly.socialtap.dev/apis/rumble/search_posts/index.md) · [Rumble Transcript APIBetaTranscript`GET /v1/rumble/transcript`From 1 credit](https://staging-fly.socialtap.dev/apis/rumble/transcript/index.md) · [Threads Profile APIBetaProfile`GET /v1/threads/profile`1 credit](https://staging-fly.socialtap.dev/apis/threads/profile/index.md) · [TikTok Comments APIBetaComment`GET /v1/tiktok/comments`1 credit / page](https://staging-fly.socialtap.dev/apis/tiktok/comments/index.md) · [TikTok Post APIBetaPost`GET /v1/tiktok/post`1 credit](https://staging-fly.socialtap.dev/apis/tiktok/post/index.md) · [TikTok Posts APIBetaPost`GET /v1/tiktok/posts`1 credit / page](https://staging-fly.socialtap.dev/apis/tiktok/posts/index.md) · [TikTok Profile APIBetaProfile`GET /v1/tiktok/profile`1 credit](https://staging-fly.socialtap.dev/apis/tiktok/profile/index.md) · [TikTok Transcript APIBetaTranscript`GET /v1/tiktok/transcript`From 1 credit](https://staging-fly.socialtap.dev/apis/tiktok/transcript/index.md) · [YouTube Comments APIBetaComment`GET /v1/youtube/comments`1 credit / page](https://staging-fly.socialtap.dev/apis/youtube/comments/index.md) · [YouTube Video APIBetaPost`GET /v1/youtube/post`1 credit](https://staging-fly.socialtap.dev/apis/youtube/post/index.md) · [YouTube Channel Videos APIBetaPost`GET /v1/youtube/posts`1 credit / page](https://staging-fly.socialtap.dev/apis/youtube/posts/index.md) · [YouTube Channel APIBetaProfile`GET /v1/youtube/profile`1 credit](https://staging-fly.socialtap.dev/apis/youtube/profile/index.md) · [YouTube Transcript APIBetaTranscript`GET /v1/youtube/transcript`From 1 credit](https://staging-fly.socialtap.dev/apis/youtube/transcript/index.md)

Pricing

## Prepaid credits. From $0.75 per 1,000, and they never expire.

[Every price](https://staging-fly.socialtap.dev/pricing/index.md)

20,000 credits

$29

$1.45 per 1,000 credits

80,000 credits

$99

$1.24 per 1,000 credits

400,000 credits

$399

$1.00 per 1,000 credits

2,000,000 creditsBest value

$1,499

$0.75 per 1,000 credits

## Your first 100 requests are on us.

[Get your API key](https://staging-fly.socialtap.dev/signup/) · [Read the docs](https://staging-fly.socialtap.dev/docs/index.md)

---

[HTML version](https://staging-fly.socialtap.dev/) · [Docs index for AI agents](https://staging-fly.socialtap.dev/llms.txt) · [All docs in one file](https://staging-fly.socialtap.dev/llms-full.txt)
