> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sideshift.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Platforms and optional parameters

> Normalized endpoint coverage, pagination, caveats, and supported request options by platform.

Normalized endpoints use the same resource names and response schemas across seven
platforms. This page documents where each platform behaves differently.

## Endpoint matrix

| Platform path | `profile` | `posts` | `post` | `audience`      |
| ------------- | --------- | ------- | ------ | --------------- |
| `tiktok`      | Yes       | Yes     | Yes    | Yes, 25 credits |
| `instagram`   | Yes       | Yes     | Yes    | No              |
| `youtube`     | Yes       | Yes     | Yes    | No              |
| `facebook`    | Yes       | Yes     | Yes    | No              |
| `snapchat`    | Yes       | Yes     | Yes    | No              |
| `twitter` (X) | Yes       | Yes     | Yes    | No              |
| `linkedin`    | Yes       | Yes     | Yes    | No              |

All routes are `POST /api/v1/scrape/{platform}/{resource}`.

## Optional parameters

These optional parameters are fully supported by the normalized endpoints:

| Endpoint              | Parameter                           | Default       | Behavior                                                              |
| --------------------- | ----------------------------------- | ------------- | --------------------------------------------------------------------- |
| Instagram `posts`     | `include_carousels: boolean`        | `false`       | Includes carousel posts alongside reels; carousels have no view count |
| X `posts`             | `include_replies: boolean`          | `false`       | Includes reply posts alongside original posts                         |
| YouTube `posts`       | `contentType: "shorts" \| "video"`  | `"shorts"`    | Chooses Shorts or long-form videos                                    |
| Any normalized `post` | `include_transcript: boolean`       | `false`       | Requests a transcript; populated on TikTok, YouTube, and Facebook     |
| Any normalized `post` | `include_comments: boolean`         | `false`       | Requests top comments; populated on TikTok, YouTube, and Facebook     |
| TikTok `audience`     | `source: "followers" \| "comments"` | `"followers"` | Chooses the accounts sampled for the country split                    |
| TikTok `audience`     | `sample_size: integer`              | `250`         | Sets the sample size from 1 to 1,000 accounts                         |
| TikTok `audience`     | `limit: integer`                    | No limit      | Caps the number of countries returned                                 |

Unknown fields on normalized endpoints are ignored. Invalid values for documented fields
return `400 INVALID_INPUT` before billing.

## Listing pagination

| Platform  | Typical content                              | Pagination            |
| --------- | -------------------------------------------- | --------------------- |
| TikTok    | Recent videos                                | Cursor                |
| Instagram | Reels; optional carousels                    | Cursor                |
| YouTube   | Shorts by default; optional long-form videos | Cursor                |
| Facebook  | Reels                                        | Cursor when available |
| Snapchat  | Spotlights                                   | Single page           |
| X         | Original posts; optional replies             | Cursor                |
| LinkedIn  | Recent posts                                 | Single page           |

Pass `next_cursor` back as `cursor` exactly as returned. Stop when `next_cursor` is absent
or empty, not when a page is shorter than expected. Each fetched page costs one credit.

## TikTok

| Endpoint                       | Request                                                                                                    |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| `POST /scrape/tiktok/profile`  | `{ "username": "mrbeast" }`                                                                                |
| `POST /scrape/tiktok/posts`    | `{ "username": "mrbeast", "cursor": "..." }`                                                               |
| `POST /scrape/tiktok/post`     | `{ "url": "https://www.tiktok.com/@.../video/...", "include_transcript": true, "include_comments": true }` |
| `POST /scrape/tiktok/audience` | `{ "username": "mrbeast", "source": "comments", "sample_size": 500, "limit": 10 }`                         |

Audience data describes where the creator's viewers are located. It is not the upload
location of individual videos; normalized posts expose upload location in `region` when
available. `source` can be `followers` (default) or `comments`; `sample_size` defaults
to 250 and accepts 1 through 1,000; `limit` optionally caps the countries returned. These
controls do not change the normalized response schema or the 25-credit cost.

For favorites, reposts, stories, followers, following, sounds, hashtags, playlists,
search, trends, comments, transcripts, and ads, use the
[TikTok platform operations](/scraper/platform-operations#tiktok-—-27-platform-operations).

## Instagram

Listings return reels by default. Set `include_carousels: true` to add carousel posts.
Carousel posts do not expose view counts, and static single-image posts are not included
in listings. Fetch a static post individually with `post` and its `/p/` URL.

```json theme={"system"}
{
  "username": "nasa",
  "include_carousels": true
}
```

Pages can include collaborator posts whose `creator` differs from the requested username.
Instagram share links can use `/reels/{code}/`; both that form and `/reel/{code}/` are
accepted for a single-post lookup.

For full profile objects, separate timeline and reel listings, comments, search, audio,
and highlights, use the
[Instagram platform operations](/scraper/platform-operations#instagram-—-15-platform-operations).

## YouTube

Profiles accept an `@handle` or a channel ID beginning with `UC`. `follower_count` means
subscriber count.

Listings return Shorts by default. Set `contentType` to `video` for long-form videos:

```json theme={"system"}
{
  "username": "@MrBeast",
  "contentType": "video"
}
```

YouTube listing items do not contain a usable `videoUrl`, and listing comment counts can
be `0` when unavailable. Fetch the specific `post` for a temporary media URL and the most
complete metrics.

## Facebook

Profiles accept a vanity username or numeric profile ID. Listings contain Reels only;
timeline photos, links, and non-Reel videos are not included.

Page size depends on the Reels the Page exposes. Some Pages return only a few items and no
cursor. Listing engagement can be display-rounded; use `post` when you need the most exact
available values.

## Snapchat

Listings return recent Spotlights in one response and never return a cursor. The response
is the creator's entire retrievable Spotlight inventory, not the first page of a larger
catalog.

## X

Use `twitter` in API paths, not `x`. Handles may include a leading `@`, and single-post
lookups accept both `x.com` and `twitter.com` URLs.

Listings contain original posts by default. Set `include_replies: true` to include replies:

```json theme={"system"}
{
  "username": "elonmusk",
  "include_replies": true
}
```

The account's pinned post can lead every page out of chronological order. Deduplicate by
`platform` plus `id` while paging.

## LinkedIn

Use a person slug such as `jane-doe` or an organization identifier such as
`company/acme`. Always include the `company/` prefix for organizations; a bare company
slug can resolve to an unrelated person and still return a successful response.

Listings are single-page only and never return a cursor. Some company pages expose only a
small subset of their posts.

<CardGroup cols={2}>
  <Card title="Response behavior" icon="brackets-curly" href="/scraper/responses">
    Field semantics, media URLs, transcripts, comments, and cursors.
  </Card>

  <Card title="TikTok and Instagram operations" icon="list-tree" href="/scraper/platform-operations">
    All 42 focused operations with complete request and response documentation.
  </Card>
</CardGroup>
