MCP server
A Model Context Protocol server that gives AI agents access to public data from Instagram, TikTok, YouTube, the App Store, GitHub, Hacker News, Bluesky, Twitch and Linktree. It runs locally through npx.
01Get an API key
Create one in your dashboard. Keys start with sinac_, and new accounts get 100 free credits.
02Install
Requires Node.js 22+. Pick your client and add the server with your key:
{
"mcpServers": {
"scrapingisnotacrime": {
"command": "npx",
"args": ["-y", "@scrapingisnotacrime/mcp"],
"env": {
"SCRAPINGISNOTACRIME_API_KEY": "sinac_...",
"SCRAPINGISNOTACRIME_PLATFORMS": "instagram,tiktok"
}
}
}
}To pin a version instead of always using the latest release, use @scrapingisnotacrime/mcp@<version> in args.
03Choose platforms
SCRAPINGISNOTACRIME_PLATFORMS is an optional, comma-separated list of platform ids. Leave it unset to get all 34 tools.
instagramtiktokyoutubeappstoregithubhackernewsblueskytwitchlinktree
Filtering helps: every tool definition sits in the agent's context, so an agent that only needs GitHub and Hacker News works better with just those.
04Tools
Tool names follow <platform>_<method>. Arguments marked ? are optional.
| Tool | Returns | Arguments |
|---|---|---|
instagram_profile | Public profile: bio, links, follower/following/post counts, verification, business category | username |
instagram_contact | Public business contact details (email, phone, address, external URL) when the account exposes them | username |
instagram_latest_posts | Most recent posts, first page only | username |
instagram_posts | One page of post history (paginated) | usernamecount?cursor? |
instagram_highlights | List of story highlights (ids, titles, covers) | username |
instagram_highlight | Stories inside one highlight, with media URLs | highlight_id |
instagram_media_by_id | One post's details, given its owner and numeric media id | usernamemedia_id |
instagram_media | One post, video or carousel's details, from its shortcode | shortcode |
instagram_download | Every downloadable asset (videos, images, thumbnails) behind a post, reel or carousel | shortcode |
instagram_shortcode_to_id | Converts a post shortcode into its numeric media id (no call to Instagram, but still one API request) | shortcode |
instagram_id_to_shortcode | Converts a numeric media id into its shortcode (no call to Instagram, but still one API request) | media_id |
instagram_reel | One reel's details: views, likes, comments, caption, video URL, audio | shortcode |
TikTok
| Tool | Returns | Arguments |
|---|---|---|
tiktok_profile | Public profile: nickname, bio, follower/following/like/video counts, verification, privacy | username |
tiktok_video | One video's details: view/like/share/comment counts, duration, cover, audio | video_id |
YouTube
| Tool | Returns | Arguments |
|---|---|---|
youtube_videos | A channel's public videos plus the channel block (title, description, avatar) | handle |
App Store
| Tool | Returns | Arguments |
|---|---|---|
appstore_search | Matching apps: id, name, developer, price, rating, icon | termcountry?limit? |
appstore_reviews | One page of an app's most recent reviews (paginated) | app_idcountry?page? |
GitHub
| Tool | Returns | Arguments |
|---|---|---|
github_profile | Public user profile: name, bio, company, location, blog, counts, creation date | handle |
github_followers | One page of the accounts following a user (paginated) | handlelimit?page? |
github_following | One page of the accounts a user follows (paginated) | handlelimit?page? |
github_repositories | One page of a user's public repositories (paginated) | handlelimit?page? |
github_search_repositories | One page of repositories matching a GitHub search query (paginated) | qlimit?page? |
github_trending | Currently trending repositories over a daily, weekly or monthly window (not paginated) | since?language?limit? |
Hacker News
| Tool | Returns | Arguments |
|---|---|---|
hackernews_feed | One page of a feed β top, new, best, ask, show or job (paginated) | feedlimit?page? |
hackernews_item | One item (story, comment, job or poll) with its full nested comment tree β can be very large for popular threads; prefer hackernews_search/hackernews_feed for an overview | id |
hackernews_search | One page of stories matching a search term (paginated) | qlimit?page? |
hackernews_user | A user's karma, about text, creation date and submission count | username |
hackernews_submissions | One page of a user's submitted stories, newest first (paginated) | usernamelimit?page? |
hackernews_comments | One page of a user's comments, newest first (paginated) | usernamelimit?page? |
Bluesky
| Tool | Returns | Arguments |
|---|---|---|
bluesky_profile | Public profile: display name, description, avatar, banner, follower/following/post counts | handle |
bluesky_posts | One page of a profile's posts with engagement counts (paginated) | handlelimit?cursor? |
Twitch
| Tool | Returns | Arguments |
|---|---|---|
twitch_profile | Public channel: display name, description, followers, partner/affiliate status, live status | handle |
twitch_videos | A channel's recent videos (broadcasts, highlights, uploads) | handlelimit? |
Linktree
| Tool | Returns | Arguments |
|---|---|---|
linktree_profile | Page title, description, avatar, verification and every listed link | handle |
05Credits
Each successful tool call costs one credit. Failed calls are not charged, and calls with invalid arguments never reach the API. Paginated tools return one page per call; the agent decides whether to fetch the next.
06Troubleshooting
- Missing key or unknown platform id: the server logs a clear message to stderr and exits before connecting. Check your client's MCP logs or server status.
- Out of credits: the tool call returns an error pointing to pricing. Add credits to continue.
- Where to see the logs: in Claude Code, run
claude mcp get scrapingisnotacrimeor use/mcpto check the server's status, or start Claude Code with--debug. In Claude Desktop, open Settings β Developer or the app's logs folder.