Live public data from Instagram, YouTube and TikTok: profiles, posts, comments, transcripts, search.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your Social Scrapers license key, as: Bearer <license key>
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List the comments on a public Instagram post or reel, newest first, about two dozen per page: text, date, likes, reply count and the commenter's username and verified badge. The first page also gives the post's comment count. First page: give url. Next pages: give only cursor until next_cursor is null.
A post or reel link (https://www.instagram.com/p/DfahZrMjAqq/ or /reel/…), its short code (DfahZrMjAqq) or its numeric id.
The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed.
Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http social-data https://socialscrapers-gateway.socialscrapers.workers.dev/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Your Social Scrapers license key, as: Bearer <license key>List the comments on a public Instagram post or reel, newest first, about two dozen per page: text, date, likes, reply count and the commenter's username and verified badge. The first page also gives the post's comment count. First page: give url. Next pages: give only cursor until next_cursor is null.
| Argument | Type | Description |
|---|---|---|
| url | string | A post or reel link (https://www.instagram.com/p/DfahZrMjAqq/ or /reel/…), its short code (DfahZrMjAqq) or its numeric id. |
| cursor | string | The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed. |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A post or reel link (https://www.instagram.com/p/DfahZrMjAqq/ or /reel/…), its short code (DfahZrMjAqq) or its numeric id."
},
"cursor": {
"type": "string",
"maxLength": 8192,
"minLength": 1,
"description": "The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}Get the top posts Instagram shows for a hashtag or keyword, in Instagram's order, up to 50 per page, each with caption, hashtags, likes, comments, reel plays, date and the creator; the first page also lists related searches. Instagram shows 50 to 100 top posts per search in all. First page: give tag. Next pages: give only cursor until next_cursor is null.
| Argument | Type | Description |
|---|---|---|
| tag | string | A hashtag (sourdough or #sourdough), a keyword (running shoes) or a hashtag link. |
| cursor | string | The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed. |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"properties": {
"tag": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A hashtag (sourdough or #sourdough), a keyword (running shoes) or a hashtag link."
},
"cursor": {
"type": "string",
"maxLength": 8192,
"minLength": 1,
"description": "The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}Get one public Instagram post or reel: caption, likes, comment count, date, carousel items, hashtags, mentions, tagged accounts, collaborators, location, paid-partnership flag and sponsors, and for a reel its play count, duration and sound. For its comments, call instagram_comments.
| Argument | Type | Description |
|---|---|---|
| url* | string | A post or reel link (https://www.instagram.com/p/DfahZrMjAqq/ or /reel/…), its short code (DfahZrMjAqq) or its numeric id. |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A post or reel link (https://www.instagram.com/p/DfahZrMjAqq/ or /reel/…), its short code (DfahZrMjAqq) or its numeric id."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}List a public Instagram profile's posts and reels, newest first (pinned posts first on the first page), 12 per page, each with likes, comments, reel plays, caption, hashtags, mentions, date, tagged accounts and collaborators. First page: give username. Next pages: give only cursor (the next_cursor of the previous answer) until next_cursor is null.
| Argument | Type | Description |
|---|---|---|
| cursor | string | The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed. |
| username | string | An Instagram username (natgeo), @natgeo, or a profile link (https://www.instagram.com/natgeo/). |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"properties": {
"cursor": {
"type": "string",
"maxLength": 8192,
"minLength": 1,
"description": "The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed."
},
"username": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "An Instagram username (natgeo), @natgeo, or a profile link (https://www.instagram.com/natgeo/)."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}Get a public Instagram profile: exact follower, following and post counts, full name, bio and bio links, verified badge, account type (personal, business or creator), and its 12 latest posts (pinned first, as on the profile) with likes, comments, reel plays, captions and dates. For older posts, call instagram_posts with the next_cursor returned here.
| Argument | Type | Description |
|---|---|---|
| username* | string | An Instagram username (natgeo), @natgeo, or a profile link (https://www.instagram.com/natgeo/). |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"required": [
"username"
],
"properties": {
"username": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "An Instagram username (natgeo), @natgeo, or a profile link (https://www.instagram.com/natgeo/)."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}List a TikTok video's comments in TikTok's order, up to 50 per page: text, date, likes, reply count, whether the creator liked or pinned it, language and the commenter. With comment_id, list the replies to that comment instead. First page: give url (and comment_id for replies). Next pages: give only cursor until next_cursor is null.
| Argument | Type | Description |
|---|---|---|
| url | string | A TikTok video or photo link (https://www.tiktok.com/@nasa/video/7695060950394703118), a short link from the app (vm.tiktok.com/…, vt.tiktok.com/…, tiktok.com/t/…) or the video id. |
| cursor | string | The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed. |
| comment_id | string | The id of one of the video's comments (from a previous answer), to list its replies. |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A TikTok video or photo link (https://www.tiktok.com/@nasa/video/7695060950394703118), a short link from the app (vm.tiktok.com/…, vt.tiktok.com/…, tiktok.com/t/…) or the video id."
},
"cursor": {
"type": "string",
"maxLength": 8192,
"minLength": 1,
"description": "The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed."
},
"comment_id": {
"type": "string",
"pattern": "^[0-9]{8,25}$",
"description": "The id of one of the video's comments (from a previous answer), to list its replies."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}Get a public TikTok profile: exact follower, following, like and video counts, nickname, bio and bio link, verified badge, region and language, business and organization flags, and its newest videos (up to 15) with plays, likes, comments and captions. A private account's profile is returned without videos. For older videos, call tiktok_videos with the next_cursor returned here.
| Argument | Type | Description |
|---|---|---|
| username* | string | A TikTok username (nasa), @nasa, or a profile link (https://www.tiktok.com/@nasa). |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"required": [
"username"
],
"properties": {
"username": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A TikTok username (nasa), @nasa, or a profile link (https://www.tiktok.com/@nasa)."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}Get one public TikTok video or photo post: caption, plays, likes, comments, shares, saves, date, duration, hashtags, mentions, sound, location, categories, the ad flag, and its author with their counts. For its comments, call tiktok_comments.
| Argument | Type | Description |
|---|---|---|
| url* | string | A TikTok video or photo link (https://www.tiktok.com/@nasa/video/7695060950394703118), a short link from the app (vm.tiktok.com/…, vt.tiktok.com/…, tiktok.com/t/…) or the video id. |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A TikTok video or photo link (https://www.tiktok.com/@nasa/video/7695060950394703118), a short link from the app (vm.tiktok.com/…, vt.tiktok.com/…, tiktok.com/t/…) or the video id."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}List a public TikTok profile's videos and photo posts, newest first, up to 15 per page, each with plays, likes, comments, shares, saves, caption, hashtags, mentions, date, duration and sound. First page: give username. Next pages: give only cursor until next_cursor is null.
| Argument | Type | Description |
|---|---|---|
| cursor | string | The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed. |
| username | string | A TikTok username (nasa), @nasa, or a profile link (https://www.tiktok.com/@nasa). |
| include_media_urls | boolean | Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files. |
{
"type": "object",
"properties": {
"cursor": {
"type": "string",
"maxLength": 8192,
"minLength": 1,
"description": "The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed."
},
"username": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A TikTok username (nasa), @nasa, or a profile link (https://www.tiktok.com/@nasa)."
},
"include_media_urls": {
"type": "boolean",
"default": false,
"description": "Also return picture, video and sound file links (long links that expire after a while). Leave it off unless you need the files."
}
},
"additionalProperties": false
}Get a public YouTube channel: name, handle, description, subscriber count, video count, total views, join date, country, the links on its About page, keywords, avatar, banner and verified badge. For its uploads, call youtube_channel_videos.
| Argument | Type | Description |
|---|---|---|
| channel* | string | A YouTube channel: an @handle (@NASA), a channel link (https://www.youtube.com/@NASA, /channel/UC…, /c/…, /user/…) or a channel id (UCLA_DiR1FfKNvjuUpBHmylQ). |
{
"type": "object",
"required": [
"channel"
],
"properties": {
"channel": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A YouTube channel: an @handle (@NASA), a channel link (https://www.youtube.com/@NASA, /channel/UC…, /c/…, /user/…) or a channel id (UCLA_DiR1FfKNvjuUpBHmylQ)."
}
},
"additionalProperties": false
}List a YouTube channel's uploads from its Videos, Shorts or Live tab, newest first, most popular first or oldest first, about 30 per page, each with title, views, length, age and thumbnail. A channel without that tab returns an empty page. First page: give channel (and tab, sort). Next pages: give only cursor until next_cursor is null.
| Argument | Type | Description |
|---|---|---|
| tab | string | The channel's Videos, Shorts or Live tab. |
| sort | string | Newest first, most popular first, or oldest first. |
| cursor | string | The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed. |
| channel | string | A YouTube channel: an @handle (@NASA), a channel link (https://www.youtube.com/@NASA, /channel/UC…, /c/…, /user/…) or a channel id (UCLA_DiR1FfKNvjuUpBHmylQ). |
{
"type": "object",
"properties": {
"tab": {
"enum": [
"videos",
"shorts",
"streams"
],
"type": "string",
"default": "videos",
"description": "The channel's Videos, Shorts or Live tab."
},
"sort": {
"enum": [
"newest",
"popular",
"oldest"
],
"type": "string",
"default": "newest",
"description": "Newest first, most popular first, or oldest first."
},
"cursor": {
"type": "string",
"maxLength": 8192,
"minLength": 1,
"description": "The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed."
},
"channel": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A YouTube channel: an @handle (@NASA), a channel link (https://www.youtube.com/@NASA, /channel/UC…, /c/…, /user/…) or a channel id (UCLA_DiR1FfKNvjuUpBHmylQ)."
}
},
"additionalProperties": false
}List a YouTube video's comments, top comments first or newest first, about 20 per page, each with author, text, likes, reply count, age, and pinned and creator-heart flags; the first page also gives the exact comment count. A video with comments turned off returns an empty page. First page: give url (and sort). Next pages: give only cursor until next_cursor is null.
| Argument | Type | Description |
|---|---|---|
| url | string | A YouTube video link (watch, youtu.be, Shorts, live or embed link) or its 11-character id (_T8cn2J13-4). |
| sort | string | Top comments first, or newest first. |
| cursor | string | The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A YouTube video link (watch, youtu.be, Shorts, live or embed link) or its 11-character id (_T8cn2J13-4)."
},
"sort": {
"enum": [
"top",
"newest"
],
"type": "string",
"default": "top",
"description": "Top comments first, or newest first."
},
"cursor": {
"type": "string",
"maxLength": 8192,
"minLength": 1,
"description": "The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed."
}
},
"additionalProperties": false
}Search YouTube: one page of results in YouTube's order (about 20 videos, plus the Shorts and channels YouTube shows with them), each with title, views, length, age, channel and description snippet. Filter by result type, upload date, duration, sort order and features. First page: give query (and any filters). Next pages: give only cursor until next_cursor is null.
| Argument | Type | Description |
|---|---|---|
| sort | string | Order of the results. |
| type | string | Only results of one type. |
| query | string | The search terms, or a YouTube search link (its filters are kept). |
| cursor | string | The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed. |
| duration | string | Only videos of one length: short (under 4 minutes), medium (4 to 20 minutes), long (over 20 minutes). |
| features | array | Features every video must have. |
| upload_date | string | Only videos uploaded in the last hour, today, this week, this month or this year. |
Get what is said in a YouTube video: its transcript in any language the video has captions in (human-made captions before auto-generated ones), with its title, channel, length, the language returned and every available language. format=text (default) gives the plain text; format=segments gives timed lines with start and duration in seconds. A very long transcript is cut at a line to keep the answer small, and the answer then names the start_seconds to call again with to read on. Videos without captions have no transcript.
| Argument | Type | Description |
|---|---|---|
| url* | string | A YouTube video link (watch, youtu.be, Shorts, live or embed link) or its 11-character id (_T8cn2J13-4). |
| lang | string | A language code (en, es, pt-BR, zh-Hans). Leave it out for the default captions, usually the spoken language. Without captions in that language, the default ones are returned. |
| format | string | text: the plain transcript. segments: timed lines (start and duration in seconds). |
| start_seconds | integer | Read from this point of the video, in seconds. Used to continue a transcript that was cut. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A YouTube video link (watch, youtu.be, Shorts, live or embed link) or its 11-character id (_T8cn2J13-4)."
},
"lang": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "A language code (en, es, pt-BR, zh-Hans). Leave it out for the default captions, usually the spoken language. Without captions in that language, the default ones are returned."
},
"format": {
"enum": [
"text",
"segments"
],
"type": "string",
"default": "text",
"description": "text: the plain transcript. segments: timed lines (start and duration in seconds)."
},
"start_seconds": {
"type": "integer",
"maximum": 360000,
"minimum": 0,
"description": "Read from this point of the video, in seconds. Used to continue a transcript that was cut."
}
},
"additionalProperties": false
}Get a public YouTube video, Short or live stream: title, description, exact publish time, length, views, likes, exact comment count, tags and hashtags, category, chapters, links in the description, thumbnail, live status, members-only and age-restricted flags, and its channel with subscriber count and verified badge. For what is said in it, call youtube_transcript; for its comments, youtube_comments.
| Argument | Type | Description |
|---|---|---|
| url* | string | A YouTube video link (watch, youtu.be, Shorts, live or embed link) or its 11-character id (_T8cn2J13-4). |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "A YouTube video link (watch, youtu.be, Shorts, live or embed link) or its 11-character id (_T8cn2J13-4)."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 15, 2026.
{
"type": "object",
"properties": {
"sort": {
"enum": [
"relevance",
"popularity"
],
"type": "string",
"default": "relevance",
"description": "Order of the results."
},
"type": {
"enum": [
"all",
"video",
"shorts",
"channel",
"live",
"movie"
],
"type": "string",
"default": "all",
"description": "Only results of one type."
},
"query": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "The search terms, or a YouTube search link (its filters are kept)."
},
"cursor": {
"type": "string",
"maxLength": 8192,
"minLength": 1,
"description": "The next_cursor of the previous answer, exactly as returned, for the next page. Leave it out for the first page; with it, nothing else is needed."
},
"duration": {
"enum": [
"any",
"short",
"medium",
"long"
],
"type": "string",
"default": "any",
"description": "Only videos of one length: short (under 4 minutes), medium (4 to 20 minutes), long (over 20 minutes)."
},
"features": {
"type": "array",
"items": {
"enum": [
"live",
"4k",
"hd",
"subtitles",
"creative_commons",
"360",
"vr180",
"3d",
"hdr",
"location",
"purchased"
],
"type": "string"
},
"maxItems": 11,
"description": "Features every video must have.",
"uniqueItems": true
},
"upload_date": {
"enum": [
"any",
"hour",
"today",
"week",
"month",
"year"
],
"type": "string",
"default": "any",
"description": "Only videos uploaded in the last hour, today, this week, this month or this year."
}
},
"additionalProperties": false
}