ScrapeCreators API
ScrapeCreators provides 100+ REST endpoints to scrape public data from 20+ social media platforms. One API key, one header, simple curl requests.
Quick start
Authentication
Every request needs a single header:
x-api-key: YOUR_API_KEY
Get your key at https://scrapecreators.com (100 free credits on signup, no card required).
Store the key in an environment variable so it stays out of scripts and doesn't end up in version control or chat history:
export SCRAPECREATORS_API_KEY="your-key-here"
Your first request
curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile" \
--data-urlencode "handle=khaby.lame" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" | jq .
That's the whole pattern. Every endpoint works the same way: GET request, query parameters, one auth header.
Base URL
https://api.scrapecreators.com
How credits work
- Most endpoints: 1 request = 1 credit
- A few specialized endpoints cost more (e.g., audience demographics = 26 credits)
- Credits never expire, no monthly commitment
- Most responses include a
credits_remaining field
- Check credit costs per endpoint in the docs: https://docs.scrapecreators.com
Common parameters
These work across most endpoints:
| Parameter |
Description |
trim=true |
Returns a trimmed, smaller response — keeps context window manageable and saves tokens when you only need key fields like names, stats, and IDs |
cursor |
Pagination cursor returned in previous response — pass it to get the next page. Each page costs 1 credit, so only paginate if the user needs more results |
includeExtras=true |
Returns additional fields (like counts, descriptions) on YouTube endpoints — without this, channel-videos only returns titles and IDs |
sort_by |
Sort results — values depend on endpoint (e.g., popular, relevance, total_impressions, recency). Check the platform reference for valid values per endpoint, since passing an invalid value returns a 400 error |
Pagination
Many endpoints return paginated results. The pattern is:
- Make the first request without a cursor
- The response includes a
cursor (or next_cursor or next_page_id) field
- Pass that value as
?cursor=... in the next request
- Repeat until cursor is null/empty
# First page
curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \
--data-urlencode "handle=khaby.lame" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" | jq .
# Next page (using cursor from previous response)
curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \
--data-urlencode "handle=khaby.lame" \
--data-urlencode "cursor=CURSOR_VALUE" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" | jq .
Some v2 endpoints require manual pagination — check the platform reference for specifics.
Supported platforms and endpoints
Each platform has its own reference file with full endpoint details. Read the relevant one based on the user's request.
| Platform |
Reference file |
Key endpoints |
| TikTok |
references/tiktok.md |
Profile, videos, comments, search, trending, shop, songs, transcripts, live, followers/following, audience demographics |
| Instagram |
references/instagram.md |
Profile, posts, reels, comments, search reels, transcripts, story highlights, embed |
| YouTube |
references/youtube.md |
Video details, channel info, channel videos, shorts, search, transcripts |
| Twitter/X |
references/twitter.md |
Profile, community, community tweets |
| LinkedIn |
references/linkedin.md |
Person profile, company page, company posts, post details, ad library search, ad details |
| Facebook |
references/facebook.md |
Posts, comments, reels, ad library, transcripts, group posts, profile |
| Reddit |
references/reddit.md |
Profile, subreddit details/posts/search, post comments, search, ad library |
| Other platforms |
references/other-platforms.md |
Pinterest, Threads, Bluesky, Snapchat, Twitch, Kick, Truth Social, Google (ads + search), link-in-bio platforms (Linktree, Komi, Pillar, Linkbio, Linkme), Amazon Shop |
Making requests: the pattern
Every call follows the same shape. Always use -G with --data-urlencode to safely pass query parameters — this prevents shell injection from user-provided values (handles, search queries, URLs) and properly encodes special characters:
curl -s -G "https://api.scrapecreators.com/v1/{platform}/{endpoint}" \
--data-urlencode "param=value" \
-H "x-api-key: $SCRAPECREATORS_API_KEY"
Pipe through jq to format the JSON, or through jq '.some.field' to extract specific data. Using jq is important because raw API responses are often large nested JSON — extracting just the fields the user needs makes the output readable and keeps your context window clean.
Chaining requests
A common pattern is to fetch a profile first (to confirm the account exists and get IDs), then drill into their content:
# 1. Get profile
PROFILE=$(curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile" \
--data-urlencode "handle=creator_name" \
-H "x-api-key: $SCRAPECREATORS_API_KEY")
# 2. Get their recent posts
POSTS=$(curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \
--data-urlencode "handle=creator_name" \
-H "x-api-key: $SCRAPECREATORS_API_KEY")
# 3. Get comments on a specific video (extract video ID from posts)
VIDEO_ID=$(echo "$POSTS" | jq -r '.aweme_list[0].aweme_id')
COMMENTS=$(curl -s -G "https://api.scrapecreators.com/v1/tiktok/video/comments" \
--data-urlencode "video_id=$VIDEO_ID" \
-H "x-api-key: $SCRAPECREATORS_API_KEY")
Saving results
# Save raw JSON
curl -s -G "https://api.scrapecreators.com/v1/instagram/profile" \
--data-urlencode "handle=natgeo" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" > natgeo_profile.json
# Save as CSV (extract specific fields with jq)
curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \
--data-urlencode "handle=creator" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" \
| jq -r '.aweme_list[] | [.aweme_id, .desc, .statistics.play_count, .statistics.digg_count] | @csv' \
> creator_posts.csv
Processing and analyzing scraped data
After fetching data, here are common analysis patterns:
Extract key metrics
# Get engagement stats from a profile
curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile" \
--data-urlencode "handle=creator" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" \
| jq '{followers: .statsV2.followerCount, following: .statsV2.followingCount, likes: .statsV2.heartCount}'
Aggregate across posts
# Average engagement across recent posts
curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \
--data-urlencode "handle=creator" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" \
| jq '[.aweme_list[] | .statistics.digg_count] | (add / length)'
Get video transcripts for content analysis
# Fetch transcript of a TikTok video
curl -s -G "https://api.scrapecreators.com/v1/tiktok/video/transcript" \
--data-urlencode "video_id=VIDEO_ID" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" | jq -r '.data.transcript'
Search and filter
# Find TikTok creators by niche with audience filters
curl -s -G "https://api.scrapecreators.com/v1/tiktok/creators/popular" \
--data-urlencode "min_followers=100000" \
--data-urlencode "audience_country=US" \
-H "x-api-key: $SCRAPECREATORS_API_KEY" | jq '.data'
Important notes
- Public data only — the API scrapes publicly available information. No private accounts or DMs.
- No rate limits — run as many concurrent requests as needed.
- 29-second timeout — requests that take longer will time out (AWS Lambda limit). Most complete in ~3 seconds.
- AI transcript limit — videos over 2 minutes that need AI-generated transcripts won't return transcripts. YouTube transcripts have their own dedicated endpoint and are unaffected.
- v2 endpoints — some endpoints (Instagram search reels, Instagram comments) have v2 versions that require manual pagination. The v1 convenience endpoints that auto-paginate are being deprecated.
- Response format — all responses are JSON. Use
trim=true to reduce payload size when you only need key fields.
Error handling
If a request fails:
- Check the HTTP status code
- The response body usually contains an error message
- Common issues: invalid API key (401), endpoint not found (404), timeout on slow requests (502/503)
# Check status code
curl -s -G -o response.json -w "%{http_code}" \
"https://api.scrapecreators.com/v1/tiktok/profile" \
--data-urlencode "handle=creator" \
-H "x-api-key: $SCRAPECREATORS_API_KEY"
Choosing the right endpoint
When the user describes what they need, match it to the right platform and endpoint:
- "Get info about a creator/account" →
/{platform}/profile
- "Get their posts/videos/content" →
/{platform}/profile/videos (TikTok) or /{platform}/channel-videos (YouTube) or /{platform}/user/posts (Instagram) or /{platform}/posts (Facebook)
- "Get comments on a post" →
/{platform}/video/comments or /{platform}/post/comments
- "Search for content about X" →
/{platform}/search/keyword (TikTok) or /{platform}/search (others)
- "Get the transcript of a video" →
/{platform}/video/transcript (TikTok/YouTube) or /v2/instagram/media/transcript (Instagram) or /facebook/transcript (Facebook)
- "Who follows them / who do they follow" →
/{platform}/user/followers or /following
- "What's trending" →
/tiktok/videos/popular, /tiktok/get-trending-feed, /tiktok/hashtags/popular
- "Find ads by a company" →
/facebook/adLibrary/search/ads, /linkedin/ads/search, /google/company/ads, or /reddit/ads/search
- "Get product details from TikTok Shop" →
/tiktok/product, /tiktok/shop/search
When in doubt, check the platform reference file for the full endpoint list.
Full API docs
For the complete interactive documentation with response schemas and playground: https://docs.scrapecreators.com
1---2name: scrapping3description: Use this skill whenever a user wants to get, pull, grab, fetch, or look up public data from social media platforms — profiles, posts, videos, comments, followers, engagement stats, transcripts, trending content, hashtags, or creator info from TikTok, Instagram, YouTube, Twitter/X, LinkedIn, Facebook, Reddit, Threads, Bluesky, Pinterest, Snapchat, Twitch, Kick, Truth Social, or link-in-bio sites (Linktree, Komi, Pillar). Also covers ad library lookups (Meta, Google, LinkedIn, Reddit) and TikTok Shop data. Trigger even when users say "scrape", "monitor", "search", or "check" a platform. Do NOT trigger for building apps, using official platform SDKs/APIs (like PRAW, tweepy, YouTube Data API), analyzing local files, or creating dashboards — only when the user needs to retrieve data directly from a social platform.4---56# ScrapeCreators API78ScrapeCreators provides 100+ REST endpoints to scrape public data from 20+ social media platforms. One API key, one header, simple curl requests.910## Quick start1112### Authentication1314Every request needs a single header:1516```17x-api-key: YOUR_API_KEY18```1920Get your key at https://scrapecreators.com (100 free credits on signup, no card required).2122Store the key in an environment variable so it stays out of scripts and doesn't end up in version control or chat history:2324```bash25export SCRAPECREATORS_API_KEY="your-key-here"26```2728### Your first request2930```bash31curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile" \32 --data-urlencode "handle=khaby.lame" \33 -H "x-api-key: $SCRAPECREATORS_API_KEY" | jq .34```3536That's the whole pattern. Every endpoint works the same way: `GET` request, query parameters, one auth header.3738## Base URL3940```41https://api.scrapecreators.com42```4344## How credits work4546- Most endpoints: **1 request = 1 credit**47- A few specialized endpoints cost more (e.g., audience demographics = 26 credits)48- Credits never expire, no monthly commitment49- Most responses include a `credits_remaining` field50- Check credit costs per endpoint in the docs: https://docs.scrapecreators.com5152## Common parameters5354These work across most endpoints:5556| Parameter | Description |57|-----------|-------------|58| `trim=true` | Returns a trimmed, smaller response — keeps context window manageable and saves tokens when you only need key fields like names, stats, and IDs |59| `cursor` | Pagination cursor returned in previous response — pass it to get the next page. Each page costs 1 credit, so only paginate if the user needs more results |60| `includeExtras=true` | Returns additional fields (like counts, descriptions) on YouTube endpoints — without this, channel-videos only returns titles and IDs |61| `sort_by` | Sort results — values depend on endpoint (e.g., `popular`, `relevance`, `total_impressions`, `recency`). Check the platform reference for valid values per endpoint, since passing an invalid value returns a 400 error |6263## Pagination6465Many endpoints return paginated results. The pattern is:66671. Make the first request without a cursor682. The response includes a `cursor` (or `next_cursor` or `next_page_id`) field693. Pass that value as `?cursor=...` in the next request704. Repeat until cursor is null/empty7172```bash73# First page74curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \75 --data-urlencode "handle=khaby.lame" \76 -H "x-api-key: $SCRAPECREATORS_API_KEY" | jq .7778# Next page (using cursor from previous response)79curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \80 --data-urlencode "handle=khaby.lame" \81 --data-urlencode "cursor=CURSOR_VALUE" \82 -H "x-api-key: $SCRAPECREATORS_API_KEY" | jq .83```8485Some v2 endpoints require manual pagination — check the platform reference for specifics.8687## Supported platforms and endpoints8889Each platform has its own reference file with full endpoint details. Read the relevant one based on the user's request.9091| Platform | Reference file | Key endpoints |92|----------|---------------|---------------|93| TikTok | `references/tiktok.md` | Profile, videos, comments, search, trending, shop, songs, transcripts, live, followers/following, audience demographics |94| Instagram | `references/instagram.md` | Profile, posts, reels, comments, search reels, transcripts, story highlights, embed |95| YouTube | `references/youtube.md` | Video details, channel info, channel videos, shorts, search, transcripts |96| Twitter/X | `references/twitter.md` | Profile, community, community tweets |97| LinkedIn | `references/linkedin.md` | Person profile, company page, company posts, post details, ad library search, ad details |98| Facebook | `references/facebook.md` | Posts, comments, reels, ad library, transcripts, group posts, profile |99| Reddit | `references/reddit.md` | Profile, subreddit details/posts/search, post comments, search, ad library |100| Other platforms | `references/other-platforms.md` | Pinterest, Threads, Bluesky, Snapchat, Twitch, Kick, Truth Social, Google (ads + search), link-in-bio platforms (Linktree, Komi, Pillar, Linkbio, Linkme), Amazon Shop |101102## Making requests: the pattern103104Every call follows the same shape. Always use `-G` with `--data-urlencode` to safely pass query parameters — this prevents shell injection from user-provided values (handles, search queries, URLs) and properly encodes special characters:105106```bash107curl -s -G "https://api.scrapecreators.com/v1/{platform}/{endpoint}" \108 --data-urlencode "param=value" \109 -H "x-api-key: $SCRAPECREATORS_API_KEY"110```111112Pipe through `jq` to format the JSON, or through `jq '.some.field'` to extract specific data. Using `jq` is important because raw API responses are often large nested JSON — extracting just the fields the user needs makes the output readable and keeps your context window clean.113114### Chaining requests115116A common pattern is to fetch a profile first (to confirm the account exists and get IDs), then drill into their content:117118```bash119# 1. Get profile120PROFILE=$(curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile" \121 --data-urlencode "handle=creator_name" \122 -H "x-api-key: $SCRAPECREATORS_API_KEY")123124# 2. Get their recent posts125POSTS=$(curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \126 --data-urlencode "handle=creator_name" \127 -H "x-api-key: $SCRAPECREATORS_API_KEY")128129# 3. Get comments on a specific video (extract video ID from posts)130VIDEO_ID=$(echo "$POSTS" | jq -r '.aweme_list[0].aweme_id')131COMMENTS=$(curl -s -G "https://api.scrapecreators.com/v1/tiktok/video/comments" \132 --data-urlencode "video_id=$VIDEO_ID" \133 -H "x-api-key: $SCRAPECREATORS_API_KEY")134```135136### Saving results137138```bash139# Save raw JSON140curl -s -G "https://api.scrapecreators.com/v1/instagram/profile" \141 --data-urlencode "handle=natgeo" \142 -H "x-api-key: $SCRAPECREATORS_API_KEY" > natgeo_profile.json143144# Save as CSV (extract specific fields with jq)145curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \146 --data-urlencode "handle=creator" \147 -H "x-api-key: $SCRAPECREATORS_API_KEY" \148 | jq -r '.aweme_list[] | [.aweme_id, .desc, .statistics.play_count, .statistics.digg_count] | @csv' \149 > creator_posts.csv150```151152## Processing and analyzing scraped data153154After fetching data, here are common analysis patterns:155156### Extract key metrics157```bash158# Get engagement stats from a profile159curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile" \160 --data-urlencode "handle=creator" \161 -H "x-api-key: $SCRAPECREATORS_API_KEY" \162 | jq '{followers: .statsV2.followerCount, following: .statsV2.followingCount, likes: .statsV2.heartCount}'163```164165### Aggregate across posts166```bash167# Average engagement across recent posts168curl -s -G "https://api.scrapecreators.com/v1/tiktok/profile/videos" \169 --data-urlencode "handle=creator" \170 -H "x-api-key: $SCRAPECREATORS_API_KEY" \171 | jq '[.aweme_list[] | .statistics.digg_count] | (add / length)'172```173174### Get video transcripts for content analysis175```bash176# Fetch transcript of a TikTok video177curl -s -G "https://api.scrapecreators.com/v1/tiktok/video/transcript" \178 --data-urlencode "video_id=VIDEO_ID" \179 -H "x-api-key: $SCRAPECREATORS_API_KEY" | jq -r '.data.transcript'180```181182### Search and filter183```bash184# Find TikTok creators by niche with audience filters185curl -s -G "https://api.scrapecreators.com/v1/tiktok/creators/popular" \186 --data-urlencode "min_followers=100000" \187 --data-urlencode "audience_country=US" \188 -H "x-api-key: $SCRAPECREATORS_API_KEY" | jq '.data'189```190191## Important notes192193- **Public data only** — the API scrapes publicly available information. No private accounts or DMs.194- **No rate limits** — run as many concurrent requests as needed.195- **29-second timeout** — requests that take longer will time out (AWS Lambda limit). Most complete in ~3 seconds.196- **AI transcript limit** — videos over 2 minutes that need AI-generated transcripts won't return transcripts. YouTube transcripts have their own dedicated endpoint and are unaffected.197- **v2 endpoints** — some endpoints (Instagram search reels, Instagram comments) have v2 versions that require manual pagination. The v1 convenience endpoints that auto-paginate are being deprecated.198- **Response format** — all responses are JSON. Use `trim=true` to reduce payload size when you only need key fields.199200## Error handling201202If a request fails:2031. Check the HTTP status code2042. The response body usually contains an error message2053. Common issues: invalid API key (401), endpoint not found (404), timeout on slow requests (502/503)206207```bash208# Check status code209curl -s -G -o response.json -w "%{http_code}" \210 "https://api.scrapecreators.com/v1/tiktok/profile" \211 --data-urlencode "handle=creator" \212 -H "x-api-key: $SCRAPECREATORS_API_KEY"213```214215## Choosing the right endpoint216217When the user describes what they need, match it to the right platform and endpoint:218219- **"Get info about a creator/account"** → `/{platform}/profile`220- **"Get their posts/videos/content"** → `/{platform}/profile/videos` (TikTok) or `/{platform}/channel-videos` (YouTube) or `/{platform}/user/posts` (Instagram) or `/{platform}/posts` (Facebook)221- **"Get comments on a post"** → `/{platform}/video/comments` or `/{platform}/post/comments`222- **"Search for content about X"** → `/{platform}/search/keyword` (TikTok) or `/{platform}/search` (others)223- **"Get the transcript of a video"** → `/{platform}/video/transcript` (TikTok/YouTube) or `/v2/instagram/media/transcript` (Instagram) or `/facebook/transcript` (Facebook)224- **"Who follows them / who do they follow"** → `/{platform}/user/followers` or `/following`225- **"What's trending"** → `/tiktok/videos/popular`, `/tiktok/get-trending-feed`, `/tiktok/hashtags/popular`226- **"Find ads by a company"** → `/facebook/adLibrary/search/ads`, `/linkedin/ads/search`, `/google/company/ads`, or `/reddit/ads/search`227- **"Get product details from TikTok Shop"** → `/tiktok/product`, `/tiktok/shop/search`228229When in doubt, check the platform reference file for the full endpoint list.230231## Full API docs232233For the complete interactive documentation with response schemas and playground: https://docs.scrapecreators.com