What changes
Send the token as an
Authorization: Bearer header, or as a ?token= query
parameter. The apify-client library sends it as a header for you.
Do not add
/v2 to the Python client’s api_url. The client adds it for
you. Direct HTTP calls use the full path, for example
https://app.sideshift.app/api/v2/acts/clockworks~tiktok-scraper/runs.cURL
Supported actors and inputs
SideShift supports two actors:clockworks/tiktok-scraper and
apify/instagram-scraper. Each actor accepts a subset of the inputs the
Apify actor accepts. The API rejects any other input with a 400 error that
names the field.
clockworks/tiktok-scraper
oldestPostDateUnified drops posts older than the date you set. This applies
to profiles, hashtags, and search queries.
Only a profile run stops paging early at that date. A profile lists its posts
newest first. A hashtag or search run does not list posts in date order. It
pages through every result and drops old posts along the way.
newestPostDate drops posts newer than the date you set. It never stops
paging early.
excludePinnedPosts is also supported.
The API rejects these inputs with a 400 error that names the field:
shouldDownloadVideosshouldDownloadCoversshouldDownloadSlideshowImagesshouldDownloadAvatarsshouldDownloadMusicCoversshouldDownloadSubtitlesscrapeRelatedVideosmaxFollowersPerProfile, when set to a value greater than 0maxFollowingPerProfile, when set to a value greater than 0profileSorting, unless set tolatestprofileScrapeSections, unless set tovideos
apify/instagram-scraper
directUrls accepts a profile URL, a post or reel URL, or a hashtag URL.
resultsType chooses what the run returns for a profile URL.
onlyPostsNewerThan stops paging once a page is older than the date you set,
for posts and reels.
Set resultsType: details and a small searchLimit when you want only the
matched profiles. The default resultsType (posts) also fetches each
match’s posts, which costs more.
The API rejects these inputs with a 400 error that names the field:
resultsType, set tomentionsorstoriessearchType, set toplaceaddParentData
resultsType: comments needs a post or reel URL in directUrls. The API
rejects a profile or hashtag URL with a 400 error.
Supported endpoints
Every path below starts withhttps://app.sideshift.app/api/v2. Use acts
or actors. Both work.
Billing
A run bills the same credits, at the same price, as the rest of the Scraper API. Each upstream request a run makes costs 1 credit, charged from your account’s balance.
The run object’s
usageTotalUsd field reports the cost in dollars: credits
charged, multiplied by your account’s average purchase price per credit.
SideShift keeps a run and its dataset items for 7 days. After 7 days,
SideShift deletes them. Save any items you need to keep.
Differences from Apify
Not supported:- Webhooks. The API rejects a
webhooksvalue on every endpoint that starts a run, with a 400 error. This includesPOST /acts/{actor}/runsand both methods ofrun-sync-get-dataset-items. - Key-value stores.
- Tasks.
- The legacy
run-syncendpoint. The API rejects it with a 400 error. Userun-sync-get-dataset-itemsinstead. - CSV, XLSX, and other dataset formats. Use
format=jsonorformat=jsonl.
- A run can request at most 1,000 inputs. Split a larger request into several runs.
- To start a run, your balance must have at least 1 credit for each input.
- An account can have at most 25 runs in progress. The API rejects another run with a 429 error.
null. Every field in an Apify item exists in the
matching SideShift item, with the same name and type. When SideShift cannot
fill a field, the field is null, never missing.
Examples:
- TikTok: on hashtag and search items,
authorMeta.fans,authorMeta.heart, andauthorMeta.videoarenull. Videowidthandheightare alsonull. - Instagram: on a profile,
latestPosts,businessCategoryName, andhighlightReelCountarenull.
Quickstart
Create a Scraper key and make your first request.
Billing, errors, and limits
Credit costs, purchase rates, and rate-limit handling.