Switching from ScrapeCreators
If you use ScrapeCreators today, most of your code keeps working. The request side is built to match: paths, parameter names, the x-api-key header and the cache_max_age spelling are all accepted. What changes is the host, the key, and the shape of the response.
Move over in four steps#
- Change the base URL from
https://api.scrapecreators.comtohttps://api.socialscrape.io. - Swap the key. The header is the same:
x-api-key. - Keep your request paths and parameters. Most paths are identical. Where ScrapeCreators spells a path differently (44 endpoints today; the list is below), theirs is registered as an alias of ours and still works. Their parameter names are accepted too.
- Update how you read the response. See the differences below.
# before
curl "https://api.scrapecreators.com/v1/youtube/channel-videos?handle=MrBeast&sort=popular" -H "x-api-key: $OLD_KEY"
# after
curl "https://api.socialscrape.io/v1/youtube/channel/videos?handle=MrBeast&sort=popular" -H "x-api-key: $SOCIALSCRAPE_API_KEY"What stays the same#
- Auth: the
x-api-keyheader. - Paths: the same
/v1/...style; where their path differs from ours (a different version or word), theirs still works. Table below. - Parameter names:
username,user_id,sort_by,continuationTokenand the other names they use are accepted and mapped to ours. Table below. - Caching:
cache_max_age=7dworks. We accept any age from 0 to 30 days in days, hours, minutes or seconds, not only fixed steps. See Caching. - Envelope names:
credits_chargedandcredits_remaining, andcachedwithcached_at, are the same. - Unknown parameters are ignored, not rejected, and listed in the
x-ignored-paramsresponse header. Parameters that only apply to their own billing, such asdownload_media, are simply ignored.
What is different#
Responses are normalised. ScrapeCreators passes each platform's raw JSON through, so a TikTok video has TikTok's field names and an Instagram post has Instagram's. SocialScrape returns one shape for every platform: a video, a reel and a tweet are all a Post with the same field names (stats.likes, author.handle, published_at). Your parsing gets simpler across platforms, but you will need to remap fields once. See Data models. The platform's own fields we do not model are in extra, and raw=true adds the platform's original object next to data (its contents are the platform's, so it is not promised to equal ScrapeCreators' payload byte for byte).
The data sits in data. The result is in data, with ok first. Lists are data.items with data.cursor and data.has_more.
Errors have codes. A failure is { "ok": false, "error": { "code", "message", "retryable" } } with credits_charged: 0. See Errors.
Cursors are our own. The cursor parameter names are accepted, but a cursor from ScrapeCreators means nothing here: restart lists from the first page. See Pagination.
Prices are flat. Every request is its normal price. There are no surcharges for downloading media, including replies or fetching ad details, and no extra price for creator contact tools. AI transcription is priced by length; see AI transcription. Packs never expire; see Credits and pricing.
Some things are not offered. Logged-in data is never served, and we do not offer TikTok audience demographics, which come from non-public creator analytics.
Some things are extra. Monitors and webhooks, batch, AI transcription on every platform that has a transcript endpoint, and a transcript from any URL.
Paths that differ#
Both columns work against https://api.socialscrape.io. Every path not listed here is the same on both sides.
| ScrapeCreators path | SocialScrape path |
|---|---|
GET /v1/account/credit-balance | GET /v1/account/credits |
GET /v1/account/get-api-usage | GET /v1/account/usage |
GET /v1/account/get-daily-usage-count | GET /v1/account/usage/daily |
GET /v1/account/get-most-used-routes | GET /v1/account/usage/routes |
GET /v1/bluesky/user/posts | GET /v1/bluesky/profile/posts |
GET /v1/cosmos/cluster/posts | GET /v1/cosmos/collection/posts |
GET /v1/cosmos/cluster | GET /v1/cosmos/collection |
GET /v1/cosmos/user/clusters | GET /v1/cosmos/profile/collections |
GET /v1/cosmos/user/posts | GET /v1/cosmos/profile/posts |
GET /v1/facebook/adLibrary/ad/transcript | GET /v1/facebook/ad-library/ad/transcript |
GET /v1/facebook/adLibrary/ad | GET /v1/facebook/ad-library/ad |
GET /v1/facebook/adLibrary/company/ads | GET /v1/facebook/ad-library/company/ads |
GET /v1/facebook/adLibrary/search/ads | GET /v1/facebook/ad-library/search |
GET /v1/facebook/adLibrary/search/companies | GET /v1/facebook/ad-library/search/companies |
GET /v1/facebook/event/details | GET /v1/facebook/event |
GET /v1/find-creator-emails | GET /v1/creators/emails |
GET /v1/find-social-profiles | GET /v1/creators/social-profiles |
GET /v1/google/adLibrary/advertisers/search | GET /v1/google/ad-library/advertisers/search |
GET /v1/google/ad | GET /v1/google/ad-library/ad |
GET /v1/google/company/ads | GET /v1/google/ad-library/company/ads |
GET /v1/instagram/audio/reels | GET /v1/instagram/song/reels |
GET /v1/instagram/user/embed | GET /v1/instagram/profile/embed |
GET /v1/instagram/user/highlight/detail | GET /v1/instagram/highlight |
GET /v1/instagram/user/highlights | GET /v1/instagram/profile/highlights |
GET /v1/instagram/user/reels | GET /v1/instagram/profile/reels |
GET /v1/kwai/user/posts | GET /v1/kwai/profile/posts |
GET /v1/linkedin/ad | GET /v1/linkedin/ad-library/ad |
GET /v1/linkedin/ads/search | GET /v1/linkedin/ad-library/search |
GET /v1/pinterest/user/boards | GET /v1/pinterest/profile/boards |
GET /v1/threads/user/posts | GET /v1/threads/profile/posts |
GET /v1/tiktok/get-trending-feed | GET /v1/tiktok/trending |
GET /v1/tiktok/product | GET /v1/tiktok/shop/product |
GET /v1/tiktok/user/live | GET /v1/tiktok/profile/live |
GET /v1/truthsocial/user/posts | GET /v1/truthsocial/profile/posts |
GET /v1/twitter/user-tweets | GET /v1/twitter/profile/tweets |
GET /v1/youtube/channel-videos | GET /v1/youtube/channel/videos |
GET /v2/instagram/media/transcript | GET /v1/instagram/post/transcript |
GET /v2/instagram/post/comments | GET /v1/instagram/post/comments |
GET /v2/instagram/reels/search | GET /v1/instagram/search/reels |
GET /v2/instagram/user/posts | GET /v1/instagram/profile/posts |
GET /v2/tiktok/video | GET /v1/tiktok/video |
GET /v3/tiktok/profile/videos | GET /v1/tiktok/profile/videos |
POST /v1/facebook/adLibrary/company/ads | POST /v1/facebook/ad-library/company/ads |
POST /v1/facebook/adLibrary/search/ads | POST /v1/facebook/ad-library/search |
Parameter names#
Their name on the left is accepted wherever the endpoint has the parameter on the right.
| Their parameter | Ours | Endpoints |
|---|---|---|
use_ai_as_fallback | ai_fallback | 3 |
cid | comment_id | 1 |
commentId | comment_id | 3 |
company_name | company | 1 |
companyId | company_id | 1 |
companyName | company_name | 2 |
after | cursor | 104 |
continuationToken | cursor | 104 |
continuation_token | cursor | 104 |
max_cursor | cursor | 104 |
max_id | cursor | 104 |
min_time | cursor | 104 |
next_max_id | cursor | 104 |
next_page_id | cursor | 104 |
page | cursor | 104 |
pageToken | cursor | 104 |
page_token | cursor | 104 |
paginationToken | cursor | 104 |
datePosted | date_posted | 1 |
endDate | end_date | 2 |
endTime | end_time | 1 |
login | handle | 7 |
screen_name | handle | 2 |
user_id | handle | 1 |
username | handle | 53 |
adId | id | 4 |
ad_id | id | 4 |
advertiserId | id | 1 |
advertiser_id | id | 1 |
audioId | id | 1 |
audio_id | id | 1 |
aweme_id | id | 4 |
channelId | id | 7 |
channel_id | id | 7 |
clipId | id | 2 |
community_id | id | 2 |
event_id | id | 1 |
group_id | id | 2 |
highlight_id | id | 1 |
item_id | id | 1 |
media_id | id | 3 |
music_id | id | 2 |
pageId | id | 3 |
page_id | id | 3 |
playlistId | id | 1 |
playlist_id | id | 1 |
product_id | id | 2 |
room_id | id | 1 |
secUid | id | 2 |
sec_uid | id | 2 |
shortcode | id | 3 |
tweet_id | id | 2 |
userId | id | 4 |
user_id | id | 7 |
videoId | id | 5 |
video_id | id | 9 |
includeExtras | include_extras | 3 |
lang | language | 9 |
latitude | lat | 1 |
count | limit | 1 |
longitude | lng | 1 |
search_type | match | 2 |
cache_max_age | max_age_days | 176 |
keyword | query | 28 |
q | query | 28 |
radius | radius_km | 1 |
country | region | 28 |
geo | region | 28 |
full_name | repo | 1 |
order | sort | 18 |
sortBy | sort | 18 |
sort_by | sort | 18 |
startDate | start_date | 2 |
startTime | start_time | 1 |
active_status | status | 4 |
statusCode | status | 1 |
status_code | status | 1 |
filter | type | 2 |
filter_by | type | 1 |
uploadDate | upload_date | 1 |
Parameter values#
Where a value is spelled differently, theirs is accepted and mapped to ours before validation.