# dev.socialscrape/socialscrape (pypi · socialscrape-mcp)

Social media data for agents: profiles, posts, comments, search, ads, transcripts.

- Trust score: 50/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-07

## Components

- pypi · `socialscrape-mcp`: 50/100 (this document), [markdown](https://verifymcp.io/servers/dev-socialscrape-socialscrape/socialscrape-mcp.md), [page](https://verifymcp.io/servers/dev-socialscrape-socialscrape/socialscrape-mcp)

## Channel facts

- Registry: `pypi`
- Package: `socialscrape-mcp`
- Version: `0.1.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-07.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it.
  - 0 of 8 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 53/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 14442 tokens (~380/item across 38 items; 38 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 38 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 39 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the dev.socialscrape/socialscrape MCP server?

dev.socialscrape/socialscrape runs locally as a PyPI package, launched with uvx socialscrape-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add dev-socialscrape-socialscrape -- uvx socialscrape-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "dev-socialscrape-socialscrape": {
      "command": "uvx",
      "args": [
        "socialscrape-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "dev-socialscrape-socialscrape": {
      "command": "uvx",
      "args": [
        "socialscrape-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add dev-socialscrape-socialscrape -- uvx socialscrape-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-socialscrape-socialscrape": {
      "type": "local",
      "command": [
        "uvx",
        "socialscrape-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dev-socialscrape-socialscrape --command uvx --arg socialscrape-mcp
```

### Hermes

```yaml
mcp_servers:
  dev-socialscrape-socialscrape:
    command: "uvx"
    args: ["socialscrape-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "dev-socialscrape-socialscrape": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "socialscrape-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add dev-socialscrape-socialscrape -t stdio -c uvx -a socialscrape-mcp
```

### Other

```json
{
  "mcpServers": {
    "dev-socialscrape-socialscrape": {
      "command": "uvx",
      "args": [
        "socialscrape-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-07 (score 50, 0)

- [functional improvement] Stability: unverified → 0.03
- [functional] Package version: 0.1.1 → 0.1.2

### 2026-11-06 (score 50)

First indexed and scored.

## MCP tools (38)

### `get_transcript` (~314 tokens)

Get a transcript

Get the transcript of a video or audio post from its URL. The platform is detected from the link. Uses the platform's captions when they exist and falls back to AI transcription of the audio. Price: 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Returns text, language, source (captions | auto_captions | ai) and duration. Long transcripts come back in pieces: when `text_window.next_offset` is set, call again with that offset.

Input parameters:

- `allow_long_transcription` (boolean): Transcribe audio past 2 minutes with AI, at 5 credits per started minute of the whole video (10 minutes = 50). Without it, such a video with no captions answers transcript_unavailable for free. Ask b…
- `include_timestamps` (boolean): Also return segments with start times. Doubles the size; leave off unless you need timings.
- `language` (string): Preferred language code such as en. Optional.
- `max_chars` (integer): Longest piece of text to return in one answer.
- `offset` (integer): Character offset to continue a long transcript from (use next_offset from the previous answer). Continuations are served from cache for free.
- `url` (string, required): Link to the video or post: YouTube, TikTok, Instagram, X, Facebook, LinkedIn, Reddit, Twitch or Kick clips, Rumble.

### `search` (~273 tokens)

Search a platform

Search one platform for posts, videos, users or other items by keyword. Platforms: Apple Music, Cosmos, Facebook, Instagram, LinkedIn, Pinterest, Reddit, Rumble, Spotify, Threads, TikTok, X (Twitter), YouTube. Price: 1 credit per call (failures free, cached repeats free with max_age_days). For anything beyond this, use the platform's own tool. Kinds per platform: facebook: events.search, search.videos; instagram: search.popular, search.reels; reddit: search, subreddit.search; threads: search, search.users; tiktok: search.keyword, search.suggestions, search.top, search.users; youtube: channel.search, search, search.typeahead.

Input parameters:

- `cursor` (string): Cursor from the previous page.
- `kind` (string): What to search, when the platform has several (search.users, search.posts, ...). Defaults to the platform's main search.
- `limit` (integer): Upper bound on items returned.
- `params` (object): Any other parameter of the underlying endpoint (call describe).
- `platform` (string, required): Which platform.
- `query` (string, required): Search terms.
- `region` (string): Two-letter country code, where supported.
- `sort` (string): Order, where the platform supports it.

### `get_profile` (~157 tokens)

Get a profile

Get a profile (name, bio, follower counts, links) by handle or URL. Platforms: Apple Music, Bluesky, Cosmos, Facebook, GitHub, Instagram, Kwai, LinkedIn, Snapchat, SoundCloud, Spotify, Threads, TikTok, Truth Social, Twitch, X (Twitter), YouTube. Price: 1 credit per call (failures free, cached repeats free with max_age_days). For anything beyond this, use the platform's own tool.

Input parameters:

- `handle` (string): Username, with or without @.
- `params` (object): Any other parameter of the underlying endpoint (call describe).
- `platform` (string, required): Which platform.
- `url` (string): Profile URL, instead of handle.

### `get_post` (~163 tokens)

Get a post

Get one post, video, tweet, pin or clip by URL: text, author, stats, media. Platforms: Bluesky, Cosmos, Facebook, Instagram, Kick, Kwai, LinkedIn, Pinterest, Reddit, Rumble, Snapchat, Telegram, Threads, TikTok, Truth Social, Twitch, X (Twitter), YouTube. Price: 1 credit per call (failures free, cached repeats free with max_age_days). For anything beyond this, use the platform's own tool.

Input parameters:

- `id` (string): The platform's id, where URLs are not used.
- `params` (object): Any other parameter of the underlying endpoint (call describe).
- `platform` (string, required): Which platform.
- `url` (string): Link to the post.

### `get_comments` (~144 tokens)

Get comments

Get a page of comments on a post or video. Platforms: Facebook, Instagram, Reddit, Rumble, Snapchat, TikTok, YouTube. Price: 1 credit per call (failures free, cached repeats free with max_age_days). For anything beyond this, use the platform's own tool.

Input parameters:

- `cursor` (string): Cursor from the previous page.
- `id` (string): The platform's id for the post.
- `limit` (integer): Upper bound on items.
- `params` (object): Any other parameter of the underlying endpoint (call describe).
- `platform` (string, required): Which platform.
- `url` (string): Link to the post.

### `describe` (~128 tokens)

Describe endpoints

Look up what SocialScrape can fetch, with exact parameters, allowed values, price and example arguments. Free and instant (no API call, no credits). With no arguments it lists every platform; with `platform` its resources; with `platform` and `resource` (or `endpoint`) the full parameter list.

Input parameters:

- `endpoint` (string): Or an endpoint id such as apple_music.search.
- `platform` (string): A platform tool name such as github. Omit to list them all.
- `resource` (string): A resource of that platform. Omit to list its resources.

### `call_endpoint` (~100 tokens)

Call any endpoint

Run any SocialScrape data endpoint by its id (for example `apple_music.artist`). Same behaviour and price as the platform tools; use it when you already know the id, or when only the core tools are enabled. 183 endpoints; call describe to list them.

Input parameters:

- `endpoint` (string, required): Endpoint id as describe prints it, e.g. apple_music.artist.
- `params` (object): Parameters by name, as in describe's example arguments.

### `get_credits` (~23 tokens)

Check credit balance

Show how many credits the API key's team has left. Free.

### `get_job` (~80 tokens)

Poll a job

Fetch the result of a request that answered 'accepted' (long jobs such as AI transcription of a long video). Polling is free; the credit charge happens once, when the job finishes. If it is still running, wait a few seconds and call again.

Input parameters:

- `job_id` (string, required): The job_id from an accepted (still running) answer.

### `batch` (~76 tokens)

Batch requests

Run up to 100 data requests in one call (for example the profile of 30 accounts). Each item is charged like a single request and failures inside the batch are free; one failing item does not fail the others. The answer has one result per item, in order.

Input parameters:

- `requests` (array, required): Up to 100 data requests.

### `monitors` (~218 tokens)

Monitors and webhooks

Watch a list (a profile's posts, a search) and have SocialScrape POST new items to your webhook, signed. Actions: create, list, delete, test (send a signed test event), deliveries (delivery log), events, redeliver. Each scheduled check is charged like a normal request to the watched endpoint; creating, listing and deleting are free. The first check only records a baseline. The create answer shows the webhook secret once: tell the user to store it.

Input parameters:

- `action` (string, required): What to do.
- `endpoint` (string): create: the list endpoint to watch, by id (e.g. apple_music.search).
- `event_id` (string): redeliver: the event to send again.
- `interval_minutes` (integer): create: how often to check.
- `monitor_id` (string): delete, test, deliveries; optional filter for events.
- `params` (object): create: that endpoint's parameters.
- `webhook_url` (string): create: https URL that receives signed events.

### `youtube` (~957 tokens)

YouTube

Data from YouTube: profiles, posts and videos, collections, transcripts, advertisers, comments.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- channel(handle|id|url): YouTube channel details. 1 credit.
\- channel.community_posts(handle|id|url): YouTube channel community posts. 1 credit. Paged.
\- channel.lives(handle|id|url): YouTube channel live streams. 1 credit. Paged.
\- channel.playlists(handle|id|url): YouTube channel playlists. 1 credit. Paged.
\- channel.search(query, handle|id|url): Search inside a YouTube channel. 1 credit. Paged.
\- channel.shorts(handle|id|url): YouTube channel Shorts. 1 credit. Paged. Optional: include_extras.
\- channel.videos(handle|id|url): YouTube channel videos. 1 credit. Paged. Optional: include_extras.
\- community_post(url): YouTube community post. 1 credit.
\- playlist(url|id): YouTube playlist videos. 1 credit. Paged.
\- search(query): YouTube search. 1 credit. Paged. Optional: type, upload_date, duration, include_extras.
\- search.hashtag(hashtag): YouTube videos by hashtag. 1 credit. Paged. Optional: type.
\- search.typeahead(query): YouTube search suggestions. 1 credit. Paged.
\- shorts.trending(): Trending YouTube Shorts. 1 credit. Paged.
\- video(url|id): YouTube video or Short details. 1 credit.
\- video.comment.replies(): YouTube comment replies. 1 credit. Paged. Optional: comment_id.
\- video.comments(url|id): YouTube video comments. 1 credit. Paged.
\- video.sponsors(url|id): YouTube video sponsors. 1 credit. Paged.
\- video.transcript(url|id): YouTube video transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: original_audio.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Channel handle, with or without @. Used by: channel, channel.community_posts, channel.lives, channel.playlists, channel.search, channel.shorts, ...
- `id` (string): The platform's id for the item, where a URL is not used. Used by: channel, channel.community_posts, channel.lives, channel.playlists, channel.search, channel.shorts, ...
- `include_extras` (boolean): Also fetch length, publish date, likes and description per Short (slower, more errors). Used by: channel.shorts, channel.videos, search
- `language` (string): Language code, e.g. en. Used by: video, video.sponsors, video.transcript
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: channel.search, search, search.typeahead
- `region` (string): Two-letter country code (ISO 3166-1) for results that vary by country. Used by: search, shorts.trending
- `resource` (string, required): Which YouTube data to fetch. The tool description lists what each needs.
- `sort` (string): Order of results; changing it restarts the cursor chain. Used by: channel.shorts, channel.videos, search, video.comments. Allowed values vary by resource (describe shows them)
- `type` (string): Kind of result. Used by: search, search.hashtag. Allowed values vary by resource (describe shows them)
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: channel, channel.community_posts, channel.lives, channel.playlists, channel.search, channel.shorts, ...

### `tiktok` (~877 tokens)

TikTok

Data from TikTok: profiles, posts and videos, transcripts, comments, tracks, live streams.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- collection.videos(url): TikTok collection videos. 1 credit. Paged.
\- live(url|id): TikTok live room info. 1 credit. Optional: user_id.
\- profile(handle|id): TikTok profile. 1 credit.
\- profile.live(handle): Is a TikTok user live. 1 credit.
\- profile.videos(handle|id): TikTok profile videos. 1 credit. Paged. Optional: include_pinned.
\- search.hashtag(hashtag): TikTok videos by hashtag. 1 credit. Paged.
\- search.keyword(query): TikTok video search. 1 credit. Paged. Optional: date_posted.
\- search.suggestions(query): TikTok search suggestions. 1 credit. Paged.
\- search.top(query): TikTok top search. 1 credit. Paged. Optional: publish_time.
\- search.users(query): TikTok user search. 1 credit. Paged.
\- song(id|url): TikTok song details. 1 credit.
\- song.videos(id|url): TikTok videos using a song. 1 credit. Paged.
\- trending(): TikTok trending feed. 1 credit. Paged.
\- video(url|id): TikTok video details. 1 credit. Optional: get_transcript.
\- video.comment.replies(comment_id, url|id): TikTok comment replies. 1 credit. Paged.
\- video.comments(url|id): TikTok video comments. 1 credit. Paged.
\- video.transcript(url|id): TikTok video transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: ai_fallback, allow_long_transcription.
\- videos.popular(): Popular TikTok videos. 1 credit. Paged. Optional: period, category.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: profile, profile.live, profile.videos
- `id` (string): The platform's id for the item, where a URL is not used. Used by: live, profile, profile.videos, song, song.videos, video, ...
- `language` (string): Preferred caption language (2-letter code: en, es, fr, de, it, ja, ko, zh). Used by: video.transcript
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search.keyword, search.suggestions, search.top, search.users
- `region` (string): Two-letter country code (ISO 3166-1) for results that vary by country. Used by: profile.videos, search.hashtag, search.keyword, search.suggestions, search.top, trending, ...
- `resource` (string, required): Which TikTok data to fetch. The tool description lists what each needs.
- `sort` (string): Order of results; changing it restarts the cursor chain. Used by: profile.videos, search.keyword, search.top, videos.popular. Allowed values vary by resource (describe shows them)
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: collection.videos, live, song, song.videos, video, video.comment.replies, ...

### `instagram` (~815 tokens)

Instagram

Data from Instagram: profiles, posts and videos, transcripts, comments, collections.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- basic_profile(id): Instagram profile by user id. 1 credit.
\- highlight(id): Instagram highlight stories. 1 credit. Paged.
\- post(url|id): Instagram post or reel details. 1 credit. Optional: include_play_count.
\- post.comments(url|id): Instagram post comments. 1 credit. Paged. Optional: include_replies.
\- post.transcript(url|id): Instagram reel transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription.
\- profile(handle): Instagram profile. 1 credit.
\- profile.embed(handle): Instagram profile embed HTML. 1 credit.
\- profile.highlights(handle|id): Instagram story highlights. 1 credit. Paged.
\- profile.post_count(handle): Instagram profile post count. 1 credit. Optional: allow_estimated.
\- profile.posts(handle|id): Instagram profile posts. 1 credit. Paged. Optional: require_play_counts.
\- profile.reels(handle|id): Instagram profile reels. 1 credit. Paged. Optional: require_play_counts.
\- reels.trending(): Instagram trending reels. 1 credit. Paged.
\- search.hashtag(hashtag): Instagram posts by hashtag. 1 credit. Paged. Optional: date_posted, media_type, enrich.
\- search.popular(query): Instagram popular topic. 1 credit. Paged.
\- search.reels(query): Instagram reel search. 1 credit. Paged. Optional: date_posted.
\- song.reels(id): Instagram reels using a song. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `date_posted` (string): Only posts found in this window. Used by: search.hashtag, search.reels. Allowed values vary by resource (describe shows them)
- `handle` (string): Username, with or without the leading @. Used by: profile, profile.embed, profile.highlights, profile.post_count, profile.posts, profile.reels
- `id` (string): The platform's id for the item, where a URL is not used. Used by: basic_profile, highlight, post, post.comments, post.transcript, profile.highlights, ...
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search.popular, search.reels
- `region` (string): Two-letter country code (ISO 3166-1) for results that vary by country. Used by: post
- `require_play_counts` (boolean): Add likes, comments and video views to every row (one extra page per post), and fail rather than return a video post whose play count is missing (a real 0 is fine). Used by: profile.posts, profile.re…
- `resource` (string, required): Which Instagram data to fetch. The tool description lists what each needs.
- `url` (string): Post or reel URL (/p/..., /reel/..., /tv/...). Used by: post, post.comments, post.transcript

### `ad_libraries` (~971 tokens)

Ad libraries

Ad libraries (Facebook/Meta, Google, LinkedIn, TikTok): search ads and advertisers, read one ad. The resource starts with the library: facebook.search, google.company.ads.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- facebook.ad(id|url): Facebook Ad Library ad details. 1 credit. Optional: get_transcript.
\- facebook.ad.transcript(id|url): Facebook Ad Library ad transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription.
\- facebook.company.ads(id|company_name): Facebook Ad Library ads by page. 1 credit. Paged. Optional: status, media_type, start_date, end_date.
\- facebook.search(query): Facebook Ad Library search. 1 credit. Paged. Optional: match, ad_type, status, media_type, start_date, end_date.
\- facebook.search.companies(query): Facebook Ad Library advertiser search. 1 credit. Paged.
\- google.ad(url): Google Ads Transparency ad details. 1 credit.
\- google.advertisers.search(query): Google Ads Transparency advertiser search. 1 credit. Paged.
\- google.company.ads(id|domain): Google Ads Transparency ads by advertiser. 1 credit. Paged. Optional: topic, platform, format, start_date, end_date.
\- linkedin.ad(url|id): LinkedIn Ad Library ad details. 1 credit.
\- linkedin.search(): LinkedIn Ad Library search. 1 credit. Paged. Optional: company, company_id, countries, start_date, end_date.
\- tiktok.ad(id|url): TikTok Ad Library ad details. 1 credit.
\- tiktok.search(query|advertiser_name): TikTok Ad Library search. 1 credit. Paged. Optional: adv_biz_ids, start_date, end_date.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `end_date` (string): Impressions window end, YYYY-MM-DD. Used by: facebook.company.ads, facebook.search, google.company.ads, linkedin.search, tiktok.search
- `id` (string): The platform's id for the item, where a URL is not used. Used by: facebook.ad, facebook.ad.transcript, facebook.company.ads, google.company.ads, linkedin.ad, tiktok.ad
- `language` (string): Only ads in this language, a 2-letter code (EN, ES, FR). Used by: facebook.company.ads, facebook.search
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `media_type` (string): Creative type. `meme` is Meta's word for text on an image. Used by: facebook.company.ads, facebook.search
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: facebook.search, facebook.search.companies, google.advertisers.search, linkedin.search, tiktok.search
- `region` (string): Two-letter country code (ISO 3166-1) for results that vary by country. Used by: facebook.company.ads, facebook.search, google.advertisers.search, google.company.ads, linkedin.search, tiktok.search
- `resource` (string, required): Which Ad libraries data to fetch. The tool description lists what each needs.
- `sort` (string): Order of results: `impressions` is most impressions first (ScrapeCreators' default), `newest` is most recent. Changing it restarts the cursor chain. Used by: facebook.company.ads, facebook.search
- `start_date` (string): Impressions window start, YYYY-MM-DD. Used by: facebook.company.ads, facebook.search, google.company.ads, linkedin.search, tiktok.search
- `status` (string): Ad status. Used by: facebook.company.ads, facebook.search
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: facebook.ad, facebook.ad.transcript, google.ad, linkedin.ad, tiktok.ad

### `amazon` (~235 tokens)

Amazon

Data from Amazon: products.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- shop(url): Amazon storefront products. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Amazon data to fetch. The tool description lists what each needs.
- `url` (string): Storefront URL (amazon.com/shop/<name>)

### `apple_music` (~373 tokens)

Apple Music

Data from Apple Music: profiles, albums, tracks.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- album(url|id): Apple Music album. 1 credit.
\- artist(url|id): Apple Music artist. 1 credit.
\- search(query): Apple Music search. 1 credit. Paged. Optional: type.
\- track(url|id): Apple Music track. 1 credit.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `id` (string): The platform's id for the item, where a URL is not used. Used by: album, artist, track
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search
- `region` (string): Two-letter country code (ISO 3166-1) for results that vary by country
- `resource` (string, required): Which Apple Music data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: album, artist, track

### `bluesky` (~308 tokens)

Bluesky

Data from Bluesky: profiles, posts and videos.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- post(url): Bluesky post. 1 credit.
\- profile(handle): Bluesky profile. 1 credit.
\- profile.posts(handle): Bluesky profile posts. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Handle (alice.bsky.social) or DID (did:plc:...). Used by: profile, profile.posts
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Bluesky data to fetch. The tool description lists what each needs.
- `url` (string): Post URL (bsky.app/profile/<handle>/post/<rkey>). Used by: post

### `cosmos` (~377 tokens)

Cosmos

Data from Cosmos: profiles, posts and videos, collections.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- collection(url): Cosmos collection. 1 credit.
\- collection.posts(url): Cosmos collection posts. 1 credit. Paged.
\- post(url): Cosmos post. 1 credit.
\- profile(handle): Cosmos profile. 1 credit.
\- profile.collections(handle): Cosmos profile collections. 1 credit. Paged.
\- profile.posts(handle): Cosmos profile posts. 1 credit. Paged.
\- search(query): Cosmos search. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Cosmos username, without a profile URL. Used by: profile, profile.collections, profile.posts
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search
- `resource` (string, required): Which Cosmos data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: collection, collection.posts, post

### `creators` (~299 tokens)

Creator contacts

Find a creator's other social profiles and the contact emails they publish.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- emails(url|handle): Find a creator's public emails. 1 credit. Optional: platform.
\- social_profiles(url|handle): Find a creator's other social profiles. 1 credit. Paged. Optional: platform.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `platform` (string): Platform of `handle`
- `resource` (string, required): Which Creator contacts data to fetch. The tool description lists what each needs.
- `url` (string): Profile URL on any supported platform

### `facebook` (~805 tokens)

Facebook

Data from Facebook: profiles, posts and videos, events, transcripts, comments, communities and groups, locations, products.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- event(url|id): Facebook event details. 1 credit.
\- events(url): Facebook city events. 1 credit. Paged. Optional: time.
\- events.search(query): Facebook Events search. 1 credit. Paged. Optional: location.
\- group(url|id): Facebook public group. 1 credit.
\- group.posts(url|id): Facebook public group posts. 1 credit. Paged.
\- marketplace.item(url|id): Facebook Marketplace listing. 1 credit.
\- marketplace.location.search(query): Facebook Marketplace location search. 1 credit. Paged.
\- marketplace.search(lat|location): Facebook Marketplace search. 1 credit. Paged. Optional: lng, category_id, radius_km, min_price, max_price, delivery_method, condition, ....
\- post(url): Facebook post details. 1 credit. Optional: get_transcript.
\- post.comment.replies(feedback_id|url): Facebook comment replies. 1 credit. Paged. Optional: comment_id, expansion_token.
\- post.comments(feedback_id|url): Facebook post comments. 1 credit. Paged.
\- post.transcript(url): Facebook video transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription.
\- profile(url): Facebook profile or page. 1 credit. Optional: get_business_hours, include_gated_profile.
\- profile.events(url): Facebook page events. 1 credit. Paged.
\- profile.photos(url): Facebook profile photos. 1 credit. Paged.
\- profile.posts(url|id): Facebook profile posts. 1 credit. Paged.
\- profile.reels(url): Facebook profile reels. 1 credit. Paged.
\- search.videos(query): Facebook video se…

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `feedback_id` (string): The comment's feedback id (not the comment id), from `post/comments`. Used by: post.comment.replies, post.comments
- `id` (string): The platform's id for the item, where a URL is not used. Used by: event, group, group.posts, marketplace.item, profile.posts
- `location` (string): City or area to search around ("Austin, TX"). Used by: events.search, marketplace.search
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: events.search, marketplace.location.search, marketplace.search, search.videos
- `resource` (string, required): Which Facebook data to fetch. The tool description lists what each needs.
- `sort` (string): Order of results. Changing it restarts the cursor chain. Used by: group.posts, marketplace.search. Allowed values vary by resource (describe shows them)
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: event, events, group, group.posts, marketplace.item, post, ...

### `github` (~624 tokens)

GitHub

Data from GitHub: profiles, repositories, contribution history, activity, pull requests.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- repository(url|repo): GitHub repository. 1 credit.
\- trending.developers(): GitHub trending developers. 1 credit. Paged. Optional: since.
\- trending.repositories(): GitHub trending repositories. 1 credit. Paged. Optional: since, spoken_language_code.
\- user(handle|url): GitHub user. 1 credit.
\- user.activity(handle|url): GitHub public activity. 1 credit. Paged. Optional: year.
\- user.contributions(handle|url): GitHub contribution calendar. 1 credit. Optional: year.
\- user.followers(handle|url): GitHub followers. 1 credit. Paged.
\- user.following(handle|url): GitHub following. 1 credit. Paged.
\- user.pull_requests(handle|url): GitHub pull requests by a user. 1 credit. Paged. Optional: state, since, until.
\- user.repositories(handle|url): GitHub user repositories. 1 credit. Paged. Optional: type, direction.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): GitHub username. Used by: user, user.activity, user.contributions, user.followers, user.following, user.pull_requests, ...
- `language` (string): Coding language, e.g. javascript, python, go. Used by: trending.developers, trending.repositories
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which GitHub data to fetch. The tool description lists what each needs.
- `since` (string): Trending range. Used by: trending.developers, trending.repositories, user.pull_requests. Allowed values vary by resource (describe shows them)
- `sort` (string): Order of results. Changing it restarts the cursor chain. Used by: user.repositories
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: repository, user, user.activity, user.contributions, user.followers, user.following, ...
- `year` (integer): Calendar year (2008 onward); default the current year. Used by: user.activity, user.contributions

### `kick` (~269 tokens)

Kick

Data from Kick: transcripts, posts and videos.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- clip(url): Kick clip. 1 credit.
\- clip.transcript(url): Kick clip transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription, ai_fallback.

Input parameters:

- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Kick data to fetch. The tool description lists what each needs.
- `url` (string): Clip URL (kick.com/<user>/clips/clip_...)

### `kwai` (~325 tokens)

Kwai

Data from Kwai: profiles, posts and videos.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- post(url): Kwai post. 1 credit.
\- profile(url|handle): Kwai profile. 1 credit.
\- profile.posts(url|handle): Kwai profile posts. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: profile, profile.posts
- `limit` (integer): Number of posts per page, at most 50. Used by: profile.posts
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Kwai data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...)

### `link_in_bio` (~335 tokens)

Link-in-bio pages

Read a creator's link-in-bio page (Linktree, Komi, Pillar, Linkbio, Linkme): the links, socials and contact buttons it lists.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- komi(url|handle): Komi page. 1 credit.
\- linkbio(url|handle): Lnk.Bio page. 1 credit.
\- linkme(url|handle): Linkme page. 1 credit.
\- linktree(url|handle): Linktree page. 1 credit.
\- pillar(url|handle): Pillar page. 1 credit.

Input parameters:

- `handle` (string): Username, with or without the leading @
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Link-in-bio pages data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...)

### `linkedin` (~405 tokens)

LinkedIn

Data from LinkedIn: profiles, posts and videos, transcripts.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- company(url): LinkedIn company page. 1 credit.
\- company.posts(url): LinkedIn company posts. 1 credit. Paged.
\- post(url): LinkedIn public post. 1 credit.
\- post.transcript(url): LinkedIn post video transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription.
\- profile(url): LinkedIn public person profile. 1 credit.
\- search.posts(query): LinkedIn post search. 1 credit. Paged. Optional: date_posted, enrich.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Keyword or phrase to look for in public LinkedIn posts. Used by: search.posts
- `resource` (string, required): Which LinkedIn data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: company, company.posts, post, post.transcript, profile

### `pinterest` (~349 tokens)

Pinterest

Data from Pinterest: posts and videos, collections.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- board(url): Pinterest board pins. 1 credit. Paged.
\- pin(url): Pinterest pin. 1 credit.
\- profile.boards(handle): Pinterest user boards. 1 credit. Paged.
\- search(query): Pinterest pin search. 1 credit. Paged.
\- topic(url): Pinterest topic pins. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: profile.boards
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search
- `resource` (string, required): Which Pinterest data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: board, pin, topic

### `reddit` (~554 tokens)

Reddit

Data from Reddit: communities and groups, posts and videos, comments, transcripts.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- post(url): Reddit post. 1 credit.
\- post.comments(url): Reddit post comments. 1 credit. Paged.
\- post.transcript(url): Reddit video post transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription.
\- search(query): Reddit search. 1 credit. Paged. Optional: timeframe.
\- subreddit.details(subreddit|url): Subreddit details. 1 credit.
\- subreddit.posts(subreddit): Subreddit posts. 1 credit. Paged. Optional: timeframe.
\- subreddit.search(subreddit, query): Search within a subreddit. 1 credit. Paged. Optional: timeframe.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `language` (string): 2-letter language. Captions in another language are skipped for AI transcription in this one; by default whatever Reddit has. Used by: post.transcript
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search, subreddit.search
- `resource` (string, required): Which Reddit data to fetch. The tool description lists what each needs.
- `sort` (string): Order of results. Changing it restarts the cursor chain. Used by: post.comments, subreddit.posts. Allowed values vary by resource (describe shows them)
- `subreddit` (string): Subreddit name without r/. Used by: subreddit.details, subreddit.posts, subreddit.search
- `timeframe` (string): Only posts from this window. Used by: search, subreddit.posts, subreddit.search. Allowed values vary by resource (describe shows them)
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: post, post.comments, post.transcript, subreddit.details

### `rumble` (~426 tokens)

Rumble

Data from Rumble: posts and videos, comments, transcripts.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- channel.videos(handle|url): Rumble channel videos. 1 credit. Paged.
\- search(query): Rumble search. 1 credit. Paged.
\- video(url): Rumble video details. 1 credit.
\- video.comments(url): Rumble video comments. 1 credit. Paged.
\- video.transcript(url): Rumble video transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Channel handle (the part after rumble.com/c/). Used by: channel.videos
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search
- `resource` (string, required): Which Rumble data to fetch. The tool description lists what each needs.
- `sort` (string): Order of results. Changing it restarts the cursor chain. Used by: search
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: channel.videos, video, video.comments, video.transcript

### `snapchat` (~297 tokens)

Snapchat

Data from Snapchat: profiles, posts and videos, comments.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- profile(handle): Snapchat public profile. 1 credit.
\- spotlight(url): Snapchat Spotlight video. 1 credit.
\- spotlight.comments(url): Snapchat Spotlight comments. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: profile
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Snapchat data to fetch. The tool description lists what each needs.
- `url` (string): Spotlight URL (snapchat.com/@user/spotlight/...). Used by: spotlight, spotlight.comments

### `soundcloud` (~302 tokens)

SoundCloud

Data from SoundCloud: profiles, tracks.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- artist(url|handle): SoundCloud artist. 1 credit.
\- artist.tracks(url|handle): SoundCloud artist tracks. 1 credit. Paged.
\- track(url): SoundCloud track. 1 credit.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: artist, artist.tracks
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which SoundCloud data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...)

### `spotify` (~441 tokens)

Spotify

Data from Spotify: profiles, albums, tracks, collections, posts and videos.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- album(url|id): Spotify album. 1 credit.
\- artist(url|id): Spotify artist. 1 credit.
\- playlist(url|id): Spotify playlist. 1 credit. Paged.
\- podcast(url|id): Spotify podcast. 1 credit.
\- podcast.episodes(url|id): Spotify podcast episodes. 1 credit. Paged.
\- search(query): Spotify search. 1 credit. Paged. Optional: type.
\- track(url|id): Spotify track. 1 credit.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `id` (string): The platform's id for the item, where a URL is not used. Used by: album, artist, playlist, podcast, podcast.episodes, track
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search
- `region` (string): Two-letter country code (ISO 3166-1) for results that vary by country. Used by: search
- `resource` (string, required): Which Spotify data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: album, artist, playlist, podcast, podcast.episodes, track

### `telegram` (~298 tokens)

Telegram

Data from Telegram: communities and groups, posts and videos.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- channel(handle|url): Telegram public channel. 1 credit.
\- channel.posts(handle|url): Telegram public channel posts. 1 credit. Paged.
\- post(url): Telegram public post. 1 credit.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Channel username, without @. Used by: channel, channel.posts
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Telegram data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...)

### `threads` (~346 tokens)

Threads

Data from Threads: profiles, posts and videos.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- post(url): Threads post. 1 credit.
\- profile(handle): Threads profile. 1 credit.
\- profile.posts(handle): Threads profile posts. 1 credit. Paged.
\- search(query): Threads post search. 1 credit. Paged. Optional: start_date, end_date.
\- search.users(query): Threads user search. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: profile, profile.posts
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search, search.users
- `resource` (string, required): Which Threads data to fetch. The tool description lists what each needs.
- `url` (string): Post URL (threads.net/@user/post/...). Used by: post

### `tiktok_shop` (~400 tokens)

TikTok Shop

TikTok Shop products, shop listings and product reviews.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- product(url|id): TikTok Shop product details. 1 credit.
\- product.reviews(url|id): TikTok Shop product reviews. 1 credit. Paged.
\- products(url): TikTok Shop products of a shop. 1 credit. Paged.
\- search(query): TikTok Shop product search. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `id` (string): Product id. Used by: product, product.reviews
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Search terms. Used by: search
- `region` (string): Two-letter country code (ISO 3166-1) for results that vary by country
- `resource` (string, required): Which TikTok Shop data to fetch. The tool description lists what each needs.
- `sort` (string): Order of results. Changing it restarts the cursor chain. Used by: products
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: product, product.reviews, products

### `truthsocial` (~324 tokens)

Truth Social

Data from Truth Social: profiles, posts and videos.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- post(url): Truth Social post. 1 credit.
\- profile(handle): Truth Social profile. 1 credit.
\- profile.posts(handle|id): Truth Social profile posts. 1 credit. Paged.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: profile, profile.posts
- `id` (string): Truth Social user id (the `id` from the profile). Used by: profile.posts
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Truth Social data to fetch. The tool description lists what each needs.
- `url` (string): Post URL (truthsocial.com/@user/<id>). Used by: post

### `twitch` (~451 tokens)

Twitch

Data from Twitch: profiles, posts and videos, events, transcripts.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- clip(url): Twitch clip. 1 credit.
\- clip.transcript(url): Twitch clip transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription, ai_fallback.
\- profile(handle): Twitch channel. 1 credit.
\- user.schedule(handle): Twitch stream schedule. 1 credit. Paged.
\- user.videos(handle): Twitch user videos. 1 credit. Paged. Optional: type.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: profile, user.schedule, user.videos
- `limit` (integer): How many videos to return, up to 100 (Twitch allows no paging past the first 100 without a browser session, so the response has no cursor). Used by: user.videos
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `resource` (string, required): Which Twitch data to fetch. The tool description lists what each needs.
- `sort` (string): Order of results. Changing it restarts the cursor chain. Used by: user.videos
- `url` (string): Clip URL (clips.twitch.tv/... or twitch.tv/<user>/clip/...). Used by: clip, clip.transcript

### `twitter` (~478 tokens)

X (Twitter)

Data from X (Twitter): posts and videos, profiles, transcripts, communities and groups.

Pick a `resource`, then pass its parameters as top-level arguments (extras in `params`). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a `cursor`: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:
\- community(url|id): X community. 1 credit.
\- community.tweets(url|id): X community posts. 1 credit. Paged.
\- profile(handle): X profile. 1 credit.
\- profile.tweets(handle): X profile posts. 1 credit. Paged.
\- search.posts(query): X post search. 1 credit. Paged.
\- tweet(url|id): X post details. 1 credit.
\- tweet.transcript(url|id): X video transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription.

Input parameters:

- `cursor` (string): Opaque cursor from the previous page; pass it back unchanged
- `handle` (string): Username, with or without the leading @. Used by: profile, profile.tweets
- `id` (string): The platform's id for the item, where a URL is not used. Used by: community, community.tweets, tweet, tweet.transcript
- `max_age_days` (number): Accept a cached copy fetched within this many days, for 0 credits (0 to 30).
- `params` (object): Any other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
- `query` (string): Keyword or phrase to look for in public X posts. Used by: search.posts
- `resource` (string, required): Which X (Twitter) data to fetch. The tool description lists what each needs.
- `url` (string): URL of the item the resource is about (profile, post, video, event...). Used by: community, community.tweets, tweet, tweet.transcript

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/dev-socialscrape-socialscrape/socialscrape-mcp#diagnostics

## Score history

- 2026-11-07: 50
- 2026-11-06: 50

## Common questions

### What is the dev.socialscrape/socialscrape MCP server?

dev.socialscrape/socialscrape is an MCP server listed in the public MCP registry as dev.socialscrape/socialscrape. Social media data for agents: profiles, posts, comments, search, ads, transcripts. This page covers its PyPI package (socialscrape-mcp).

### Is the dev.socialscrape/socialscrape MCP server safe to use?

dev.socialscrape/socialscrape scores 50 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 7 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the dev.socialscrape/socialscrape MCP server expose?

dev.socialscrape/socialscrape exposes 38 tools: get_transcript, search, get_profile, get_post, get_comments, and 33 more. Their descriptions and schemas cost roughly 14,317 tokens of context every time the server is loaded.

### Is the dev.socialscrape/socialscrape MCP server still maintained?

dev.socialscrape/socialscrape is still listed as active in the MCP registry. We last reached this channel on 7 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the dev.socialscrape/socialscrape MCP server under?

dev.socialscrape/socialscrape declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

### What did VerifyMCP test on the dev.socialscrape/socialscrape MCP server?

VerifyMCP ran 15 checks on dev.socialscrape/socialscrape, covering Known CVEs, Install scripts, Dependency health, Source repository and 11 more. One item could not be completed, a gap on our side rather than a finding about dev.socialscrape/socialscrape: Malware scan. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- PyPI project: https://pypi.org/project/socialscrape-mcp/
- Socket report: https://socket.dev/pypi/package/socialscrape-mcp
- Repository: https://github.com/SocialScraper/socialscrape-mcp
- Website: https://socialscrape.dev/?utm_source=mcp-registry&utm_medium=listing&utm_campaign=socialscrape-mcp
- Changelog RSS feed: https://verifymcp.io/servers/dev-socialscrape-socialscrape/socialscrape-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/dev-socialscrape-socialscrape/socialscrape-mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/dev-socialscrape-socialscrape/socialscrape-mcp.json
- HTML version of this page: https://verifymcp.io/servers/dev-socialscrape-socialscrape/socialscrape-mcp
