Pagination
One rule for every list endpoint. Send `pagination.next_cursor` back as `cursor` and stop when `has_more` is false. Identical on all 193 paginatable endpoints, every platform.
Every list endpoint on every platform paginates the same way. Learn it once and it works on all 193 paginatable endpoints: TikTok, Instagram, YouTube, Reddit, LinkedIn, Naver, all of them.
The one rule
Read pagination.next_cursor from the response, send it back as the cursor query parameter, and stop when pagination.has_more is false.
That is the entire contract. You never construct a cursor, decode a token, or look up a platform's native pagination param. The API hands you an opaque token and takes it straight back.
The response block
Every list response carries a top-level pagination block:
{
"success": true,
"platform": "tiktok",
"endpoint": "/v1/tiktok/profile/videos",
"data": {
"items": [ /* … this page of results … */ ],
"total": 1247
},
"credits_used": 1,
"credits_remaining": 98,
"request_id": "req-abc123",
"cached": false,
"pagination": {
"next_cursor": "sc.eyJ2IjoyLCJjIjoiNzM4…",
"has_more": true,
"page_size": 30
}
}| Field | Meaning |
|---|---|
pagination.next_cursor | Opaque token for the next page. Send it back as cursor. null at the end of the list. |
pagination.has_more | true while more pages exist, false on the last page. This is your stop signal. |
pagination.page_size | How many items came back in data.items on this page. |
The token is a single sc. string that works identically for cursor-, page-, and offset-style upstreams, so your loop is byte-for-byte the same everywhere. (data.total, when present, is the upstream's own result count, useful for a progress bar, but never use it to decide when to stop; has_more is the only always-correct signal.)
A worked round-trip
Request page 1 (no cursor):
curl "https://www.socialcrawl.dev/v1/tiktok/profile/videos?handle=mrbeast" \
-H "x-api-key: YOUR_API_KEY"The response comes back with "pagination": { "next_cursor": "sc.eyJ2Ijoy…", "has_more": true, "page_size": 30 }.
Request page 2 (pass that next_cursor back as cursor):
curl "https://www.socialcrawl.dev/v1/tiktok/profile/videos?handle=mrbeast&cursor=sc.eyJ2Ijoy…" \
-H "x-api-key: YOUR_API_KEY"Keep going until a response returns "has_more": false (and "next_cursor": null). Swap tiktok/profile/videos for any list endpoint in the table below and this is unchanged.
The loop
Identical for every list endpoint on every platform:
async function* paginate(path: string, params: Record<string, string>) {
let cursor: string | null = null;
do {
const url = new URL(`https://www.socialcrawl.dev/v1/${path}`);
for (const [k, v] of Object.entries(params)) url.searchParams.set(k, v);
if (cursor) url.searchParams.set("cursor", cursor); // <-- always "cursor"
const res = await fetch(url, {
headers: { "x-api-key": process.env.SOCIALCRAWL_KEY! },
});
const json = await res.json();
for (const item of json.data.items) yield item;
cursor = json.pagination.next_cursor; // <-- send back verbatim next round
} while (cursor); // <-- pagination.has_more === false ends the loop
}
// Usage: same call shape for TikTok, Instagram, YouTube, Reddit, …
for await (const video of paginate("tiktok/profile/videos", { handle: "mrbeast" })) {
// … handle each item
}Two things to get right:
- Send
next_cursorback as the EXACT string you received, under the keycursor. Don't decode, trim, or re-encode it; it's an opaque token. - Stop when
has_moreisfalse(equivalently, whennext_cursorisnull). Don't infer the end from an empty page or fromtotal.
Recipe: drain a full account safely
The real-world loop is "pull every post/comment/follower an account has" without burning credits or tripping limits. Walk pages until has_more is false, and keep three things in mind:
// Drain every video for a handle, then stop.
async function drain(path: string, params: Record<string, string>) {
const all: unknown[] = [];
let cursor: string | null = null;
let pages = 0;
do {
const url = new URL(`https://www.socialcrawl.dev/v1/${path}`);
for (const [k, v] of Object.entries(params)) url.searchParams.set(k, v);
if (cursor) url.searchParams.set("cursor", cursor);
const res = await fetch(url, {
headers: { "x-api-key": process.env.SOCIALCRAWL_KEY! },
});
// Respect backpressure: on 429 (CONCURRENCY_LIMIT) or 503 back off and retry
// the SAME cursor; never advance past a page you didn't successfully read.
if (res.status === 429 || res.status === 503) {
const wait = Number(res.headers.get("retry-after") ?? "2") * 1000;
await new Promise((r) => setTimeout(r, wait));
continue;
}
const json = await res.json();
all.push(...json.data.items);
cursor = json.pagination.next_cursor;
pages += 1;
} while (cursor);
return { items: all, pages };
}- Concurrency. You can drain many accounts in parallel, but a single API key allows at most 50 concurrent requests. Exceed it and you get a
429 CONCURRENCY_LIMIT(0 credits charged). Cap your worker pool well under 50; within one account, pages are inherently sequential (each needs the previousnext_cursor). - Credit budget. Each page is a normal billed request: one page of a 1-credit endpoint costs 1 credit, so draining a 50-page feed costs about 50 credits. Multiply pages by the endpoint's per-call cost (see Endpoint pricing) before you loop, and cap
pagesif you only need the most recent N results. Cache hits on re-runs cost 0 credits. - Bounded depth. Page- and offset-style endpoints (Naver, LinkedIn, the app stores) have a finite maximum depth;
has_moreflips tofalsewhen you reach it. Cursor-style feeds end when the upstream runs out of items.
Sending the wrong param is a 400, not a silent bug
You never need a platform's native pagination param name: always send cursor. If you do send a foreign cursor param (say you copy max_id off an Instagram response onto a TikTok endpoint), you get a 400 INVALID_REQUEST with a did_you_mean: "cursor" hint and zero credits charged, instead of silently receiving page 1 again.
Stale or malformed cursors
If you pass a cursor the upstream rejects (expired, hand-edited, copied across endpoints), you'll get a 502 UPSTREAM_ERROR or 400 INVALID_REQUEST envelope. Credits are refunded on upstream errors (see Credits → When are credits refunded?). Start over with no cursor.
Two kinds of limit
limit means one of two different things depending on the endpoint, and the difference changes both how many requests you make and what you pay. The limit behaviour column in the tables below tells you which one you have.
Page size: caps a single upstream page. You still paginate yourself: one request returns one page, and you send cursor back for the next. The API maps limit to the upstream's native name (Naver display, GitHub per_page, and so on), capped at that endpoint's maximum. This is the common case.
Collect-until-N: the endpoint paginates for you. It walks upstream pages server-side until it has limit unique items (or the source runs dry), de-duplicates as it goes, and returns them in a single response. You are billed per page or window actually consumed, and the unused budget is refunded. This is how you get more than one window's worth of results in one call.
These endpoints collect until N:
| Endpoint | Max limit | What one call costs |
|---|---|---|
GET /v1/facebook/profile/reels/full | 50 | limit (1-50) walks upstream pages server-side until that many reels are collected, billing per page of 10 consumed (5 credits each, 5-25 total). It is not a page size. |
GET /v1/instagram/profile/posts/full | 50 | limit (1-50) walks upstream pages server-side until that many items are collected, billing per page of ~12 consumed (5 credits each, 5-25 total). It is not a page size. |
GET /v1/instagram/profile/reels/full | 50 | limit (1-50) walks upstream pages server-side until that many items are collected, billing per page of ~12 consumed (5 credits each, 5-25 total). It is not a page size. |
GET /v1/threads/search | 100 | limit (1-100) walks successive result windows server-side, de-duplicating posts as it goes, and bills 1 credit per window consumed with the unused window budget refunded. It is not a page size. |
An n/a in the column means no limit control at all: to get fewer items, slice client-side; to get more, paginate another page.
Two things that are not
limit:/v1/prism/commentstakes bothmaxandlimit:maxbounds how many pages it scans (and is what you pay for), whilelimitonly caps how many of the scanned comments come back, so it never changes the price. Andpagination.page_sizein the response is a report of what arrived, not a control.
Every paginatable endpoint
193 endpoints paginate today (113 cursor-based, 62 page-based, 18 offset-based). Every one of them takes the universal cursor input and returns the same pagination block (next_cursor / has_more / page_size): no per-platform special cases. The Style column is informational only; you always send cursor.
AliExpress
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Get similar AliExpress products | GET /v1/aliexpress/product/similar | cursor | page | n/a |
| Get AliExpress product reviews | GET /v1/aliexpress/reviews | cursor | page | n/a |
| Search AliExpress products | GET /v1/aliexpress/search | cursor | page | n/a |
| List hot AliExpress products | GET /v1/aliexpress/search/hot | cursor | page | n/a |
| List AliExpress products in a featured promotion | GET /v1/aliexpress/search/promo | cursor | page | n/a |
Amazon
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Get Amazon Best Sellers in a category | GET /v1/amazon/best-sellers | cursor | page | n/a |
| Search Amazon products by keyword | GET /v1/amazon/product-search | cursor | page | n/a |
Apple App Store
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search the Apple App Store listings database (paginated) | GET /v1/app_store/app-listings-search | cursor | cursor | page size (limit) |
Content Analysis
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search web citations of a keyword with per-mention sentiment | GET /v1/content_analysis/search | cursor | cursor | page size (limit) |
eBay
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search eBay listings | GET /v1/ebay/search | cursor | page | n/a |
Etsy
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List products in an Etsy shop | GET /v1/etsy/shop/products | cursor | page | page size (limit) |
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List Facebook Ad Library company ads | GET /v1/facebook/adlibrary/company/ads | cursor | cursor | n/a |
| Search Facebook Ad Library | GET /v1/facebook/adlibrary/search/ads | cursor | cursor | n/a |
| List Facebook events for a city | GET /v1/facebook/events | cursor | cursor | n/a |
| Search Facebook events by keyword | GET /v1/facebook/events/search | cursor | cursor | n/a |
| List Facebook group posts | GET /v1/facebook/group/posts | cursor | cursor | n/a |
| Search Facebook Marketplace listings | GET /v1/facebook/marketplace/search | cursor | cursor | page size (count) |
| List replies to a Facebook post comment | GET /v1/facebook/post/comment/replies | cursor | cursor | n/a |
| List Facebook post comments | GET /v1/facebook/post/comments | cursor | cursor | n/a |
| List a Facebook page's events | GET /v1/facebook/profile/events | cursor | cursor | n/a |
| Facebook profile, recent posts, and computed analytics in one call. | GET /v1/facebook/profile/full | cursor | cursor | n/a |
| List Facebook profile photos | GET /v1/facebook/profile/photos | cursor | cursor | n/a |
| List Facebook page posts | GET /v1/facebook/profile/posts | cursor | cursor | n/a |
| List Facebook profile reels | GET /v1/facebook/profile/reels | cursor | cursor | n/a |
| Facebook profile reels with exact views, likes, comments, and shares merged in, in one call. | GET /v1/facebook/profile/reels/full | cursor | cursor | collect-until-N (max 50) |
G2
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List products in a G2 category | GET /v1/g2/category | cursor | page | n/a |
| List G2 product URLs | GET /v1/g2/product-index | cursor | page | n/a |
| Get G2 reviews for a product | GET /v1/g2/reviews | cursor | page | n/a |
| List products for a G2 seller | GET /v1/g2/seller/products | cursor | page | n/a |
GitHub
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Get comments on an issue or pull request | GET /v1/github/issue/comments | cursor | page | page size (per_page) |
| List a GitHub user's repositories | GET /v1/github/profile/repos | cursor | page | page size (per_page) |
| List a repository's issues (and PRs) | GET /v1/github/repo/issues | cursor | page | page size (per_page) |
| List a repository's releases | GET /v1/github/repo/releases | cursor | page | page size (per_page) |
| Search GitHub issues and pull requests | GET /v1/github/search | cursor | page | page size (per_page) |
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List Google ads by company | GET /v1/google/company/ads | cursor | cursor | n/a |
| Google web search | GET /v1/google/search | cursor | page | n/a |
Google Play
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search the Google Play listings database (paginated) | GET /v1/google_play/app-listings-search | cursor | cursor | page size (limit) |
Gumtree
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search Gumtree UK listings | GET /v1/gumtree/search | cursor | page | n/a |
| List a Gumtree seller's active ads | GET /v1/gumtree/seller/listings | cursor | page | n/a |
H&M
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search H&M products by keyword | GET /v1/hm/search | cursor | page | page size (limit) |
Hacker News
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search Hacker News | GET /v1/hackernews/search | cursor | page | n/a |
Home Depot
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Browse Home Depot products in a category | GET /v1/home_depot/category | cursor | page | n/a |
| Get Home Depot product reviews | GET /v1/home_depot/reviews | cursor | page | n/a |
| Search Home Depot products by keyword | GET /v1/home_depot/search | cursor | page | n/a |
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List Instagram reels using an audio track | GET /v1/instagram/audio/reels | cursor | cursor | n/a |
| List Instagram followers | GET /v1/instagram/followers | cursor | cursor | n/a |
| List Instagram following | GET /v1/instagram/following | cursor | cursor | n/a |
| List replies under an Instagram comment | GET /v1/instagram/post/comment/replies | cursor | cursor | n/a |
| List Instagram post comments | GET /v1/instagram/post/comments | cursor | cursor | n/a |
| Instagram profile, recent posts, and computed analytics in one call. | GET /v1/instagram/profile/full | cursor | cursor | n/a |
| List Instagram user posts | GET /v1/instagram/profile/posts | cursor | cursor | n/a |
| Instagram posts with views, likes, comments, and per-post share counts where available, in one call. | GET /v1/instagram/profile/posts/full | cursor | cursor | collect-until-N (max 50) |
| List Instagram user reels | GET /v1/instagram/profile/reels | cursor | cursor | n/a |
| Instagram reels with views, likes, comments, and per-reel share counts where available, in one call. | GET /v1/instagram/profile/reels/full | cursor | cursor | collect-until-N (max 50) |
| Search Instagram posts by hashtag | GET /v1/instagram/search/hashtag | cursor | cursor | n/a |
| Search Instagram music | GET /v1/instagram/search/music | cursor | cursor | n/a |
| Search popular Instagram posts | GET /v1/instagram/search/popular | cursor | cursor | n/a |
| Search Instagram profiles by keyword | GET /v1/instagram/search/profiles | cursor | cursor | n/a |
| Search Instagram reels | GET /v1/instagram/search/reels | cursor | page | n/a |
| List posts an Instagram user is tagged in | GET /v1/instagram/tagged | cursor | cursor | n/a |
Jobs
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search Bing job listings | GET /v1/jobs/bing/search | cursor | cursor | n/a |
| Search Indeed job listings | GET /v1/jobs/indeed/search | cursor | cursor | n/a |
| Search LinkedIn job listings | GET /v1/jobs/linkedin/search | cursor | cursor | n/a |
| Search Xing job listings | GET /v1/jobs/xing/search | cursor | cursor | n/a |
Klarna
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Browse Klarna products in a category | GET /v1/klarna/category | cursor | offset | n/a |
| Get Klarna user reviews for a product | GET /v1/klarna/reviews | cursor | cursor | page size (limit) |
| Get Klarna professional reviews for a product | GET /v1/klarna/reviews/pro | cursor | cursor | page size (limit) |
| List products from a Klarna store | GET /v1/klarna/store/products | cursor | offset | n/a |
| List Klarna shopping stores | GET /v1/klarna/stores | cursor | offset | n/a |
Kohl's
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Get Kohl's product questions and answers | GET /v1/kohls/questions | cursor | page | page size (limit) |
| Get Kohl's product reviews | GET /v1/kohls/reviews | cursor | page | page size (limit) |
| Search Kohl's products by keyword | GET /v1/kohls/search | cursor | page | page size (limit) |
Kwai
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List a Kwai user's posts | GET /v1/kwai/user/posts | cursor | cursor | page size (count) |
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search LinkedIn ads | GET /v1/linkedin/ads/search | cursor | cursor | n/a |
| List a company's job postings | GET /v1/linkedin/company/jobs | cursor | page | n/a |
| List people at a LinkedIn company | GET /v1/linkedin/company/people | cursor | page | n/a |
| List LinkedIn company posts | GET /v1/linkedin/company/posts | cursor | page | n/a |
| List posts in a LinkedIn group | GET /v1/linkedin/group/posts | cursor | page | n/a |
| Get LinkedIn post comments | GET /v1/linkedin/post/comments | cursor | page | n/a |
| List replies to a LinkedIn comment | GET /v1/linkedin/post/comments/replies | cursor | cursor | n/a |
| List reactors on a LinkedIn post | GET /v1/linkedin/post/reactions | cursor | page | n/a |
| List reposts of a LinkedIn post | GET /v1/linkedin/post/reposts | cursor | cursor | n/a |
| List a member's licenses and certifications | GET /v1/linkedin/profile/certifications | cursor | page | n/a |
| List a member's comments | GET /v1/linkedin/profile/comments | cursor | cursor | n/a |
| List a member's education history | GET /v1/linkedin/profile/educations | cursor | page | n/a |
| List a member's work experiences | GET /v1/linkedin/profile/experiences | cursor | page | n/a |
| LinkedIn company profile, recent posts, and computed analytics in one call. | GET /v1/linkedin/profile/full | cursor | cursor | n/a |
| List a member's honors and awards | GET /v1/linkedin/profile/honors | cursor | page | n/a |
| List a member's image posts | GET /v1/linkedin/profile/images | cursor | cursor | n/a |
| List companies a member follows | GET /v1/linkedin/profile/interests/companies | cursor | page | n/a |
| List groups a member follows | GET /v1/linkedin/profile/interests/groups | cursor | page | n/a |
| List a LinkedIn member's posts | GET /v1/linkedin/profile/posts | cursor | cursor | n/a |
| List a member's publications | GET /v1/linkedin/profile/publications | cursor | page | n/a |
| List posts a LinkedIn member reacted to | GET /v1/linkedin/profile/reactions | cursor | cursor | n/a |
| List recommendations for a member | GET /v1/linkedin/profile/recommendations | cursor | page | n/a |
| List a member's skills | GET /v1/linkedin/profile/skills | cursor | page | n/a |
| List a member's video posts | GET /v1/linkedin/profile/videos | cursor | cursor | n/a |
| List a member's volunteer experiences | GET /v1/linkedin/profile/volunteers | cursor | page | n/a |
| Search LinkedIn jobs | GET /v1/linkedin/search/jobs | cursor | page | n/a |
| Search LinkedIn people | GET /v1/linkedin/search/people | cursor | page | n/a |
| Search public LinkedIn posts by keyword | GET /v1/linkedin/search/posts | cursor | page | n/a |
| Search LinkedIn schools | GET /v1/linkedin/search/schools | cursor | page | n/a |
Naver
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search Naver Blog | GET /v1/naver/blog/search | cursor | offset | page size (display) |
| One query across the Korean internet (5 Naver corpora) + optional digest. | GET /v1/naver/brief | cursor | cursor | page size (display) |
| Search Naver Cafe articles | GET /v1/naver/cafearticle/search | cursor | offset | page size (display) |
| Search Naver Encyclopedia | GET /v1/naver/encyc/search | cursor | offset | page size (display) |
| Search Naver Image | GET /v1/naver/image/search | cursor | offset | page size (display) |
| Search Naver KnowledgeiN (지식iN) | GET /v1/naver/kin/search | cursor | offset | page size (display) |
| Search Naver News | GET /v1/naver/news/search | cursor | offset | page size (display) |
| Search Naver Web (웹문서) | GET /v1/naver/webkr/search | cursor | offset | page size (display) |
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Get Pinterest board | GET /v1/pinterest/board | cursor | cursor | n/a |
| Search Pinterest pins | GET /v1/pinterest/search | cursor | cursor | n/a |
Prism
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Every comment on a post, replies nested, server-paginated to completion. | GET /v1/prism/comments | cursor | cursor | page size (limit) |
| A Truth Social handle's pulse: profile, recent posts, per-post detail drill, and the news echo, in one call. | GET /v1/prism/truthsocial-pulse | cursor | cursor | n/a |
| One person's public posts across X, Threads, Bluesky, and Truth Social, time-merged. | GET /v1/prism/voice | cursor | cursor | n/a |
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Reddit VoC sweep: one keyword → threads across all of Reddit with subreddit attribution and top comments inline. | GET /v1/reddit/omni-search | cursor | cursor | n/a |
| List Reddit post comments | GET /v1/reddit/post/comments | cursor | cursor | n/a |
| Search Reddit posts | GET /v1/reddit/search | cursor | cursor | n/a |
| List Reddit subreddit posts | GET /v1/reddit/subreddit | cursor | cursor | n/a |
| Search within a subreddit | GET /v1/reddit/subreddit/search | cursor | cursor | n/a |
Rumble
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List videos for a Rumble channel | GET /v1/rumble/channel/videos | cursor | cursor | n/a |
| Search Rumble videos | GET /v1/rumble/search | cursor | cursor | n/a |
Sephora
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List Sephora products for a brand | GET /v1/sephora/brand/products | cursor | page | n/a |
| Browse Sephora products in a category | GET /v1/sephora/category | cursor | page | n/a |
| Get Sephora product reviews | GET /v1/sephora/reviews | cursor | page | page size (limit) |
| Search Sephora products by keyword | GET /v1/sephora/search | cursor | page | n/a |
Snapchat
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List comments on a Snapchat Spotlight | GET /v1/snapchat/spotlight/comments | cursor | cursor | n/a |
Spotify
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List a Spotify podcast's episodes | GET /v1/spotify/podcast/episodes | cursor | cursor | n/a |
Target
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Browse Target products in a category | GET /v1/target/category | cursor | page | n/a |
| Get Target product reviews | GET /v1/target/reviews | cursor | page | n/a |
Telegram
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List Telegram channel posts | GET /v1/telegram/profile/posts | cursor | cursor | n/a |
Threads
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search Threads posts | GET /v1/threads/search | cursor | cursor | collect-until-N (max 100) |
TikTok
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search the TikTok Ad Library | GET /v1/tiktok/adlibrary/search | cursor | cursor | n/a |
| List videos in a TikTok collection | GET /v1/tiktok/collection/videos | cursor | cursor | n/a |
| List TikTok videos made with an effect | GET /v1/tiktok/effect/videos | cursor | cursor | n/a |
| List TikTok videos tagged at a place | GET /v1/tiktok/location/posts | cursor | cursor | n/a |
| List videos in a TikTok playlist | GET /v1/tiktok/playlist/videos | cursor | cursor | n/a |
| List TikTok post comments | GET /v1/tiktok/post/comments | cursor | cursor | n/a |
| TikTok profile, recent posts, and computed analytics in one call. | GET /v1/tiktok/profile/full | cursor | cursor | n/a |
| List TikTok user videos | GET /v1/tiktok/profile/videos | cursor | cursor | n/a |
| Search TikTok videos by keyword | GET /v1/tiktok/search | cursor | cursor | n/a |
| Search TikTok by hashtag | GET /v1/tiktok/search/hashtag | cursor | cursor | n/a |
| Search TikTok sounds | GET /v1/tiktok/search/music | cursor | cursor | n/a |
| TikTok top search results | GET /v1/tiktok/search/top | cursor | cursor | n/a |
| Search TikTok users | GET /v1/tiktok/search/users | cursor | cursor | n/a |
| List TikTok videos using a song | GET /v1/tiktok/song/videos | cursor | cursor | n/a |
| List TikTok user followers | GET /v1/tiktok/user/followers | cursor | cursor | n/a |
| List TikTok user following | GET /v1/tiktok/user/following | cursor | cursor | n/a |
| List the videos a TikTok account has liked | GET /v1/tiktok/user/liked | cursor | cursor | n/a |
| List TikTok comment replies | GET /v1/tiktok/video/comment/replies | cursor | cursor | n/a |
TikTok Shop
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Search TikTok Shop products | GET /v1/tiktokshop/search | cursor | page | n/a |
| List TikTok user showcase products | GET /v1/tiktokshop/user/showcase | cursor | cursor | n/a |
Truth Social
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List Truth Social user posts | GET /v1/truthsocial/user/posts | cursor | cursor | n/a |
Twitter/X
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| X (Twitter) profile, recent posts, and computed analytics in one call. | GET /v1/twitter/profile/full | cursor | cursor | n/a |
| Search Twitter tweets | GET /v1/twitter/search/tweets | cursor | cursor | n/a |
| List Twitter tweet replies | GET /v1/twitter/tweet/replies | cursor | cursor | n/a |
| List Twitter tweet retweeters | GET /v1/twitter/tweet/retweeters | cursor | cursor | n/a |
| List Twitter user followers | GET /v1/twitter/user/followers | cursor | cursor | n/a |
| List Twitter user following | GET /v1/twitter/user/following | cursor | cursor | n/a |
| List Twitter user media tweets | GET /v1/twitter/user/media | cursor | cursor | n/a |
| List Twitter user tweets | GET /v1/twitter/user/tweets | cursor | cursor | n/a |
US Congress Trades
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List members of Congress who have disclosed trades | GET /v1/us_congress_trades/members | cursor | offset | page size (limit) |
| List trades for one politician | GET /v1/us_congress_trades/politician/trades | cursor | offset | page size (limit) |
| List trades from a state's congressional delegation | GET /v1/us_congress_trades/state/trades | cursor | offset | page size (limit) |
| Politicians ranked by late STOCK Act filings | GET /v1/us_congress_trades/stats/reporting-gaps | cursor | offset | page size (limit) |
| List congressional trades for a ticker | GET /v1/us_congress_trades/ticker/trades | cursor | offset | page size (limit) |
| Search US Congress stock trades | GET /v1/us_congress_trades/trades | cursor | offset | page size (limit) |
| Latest US Congress trades (48 hours) | GET /v1/us_congress_trades/trades/latest | cursor | offset | page size (limit) |
| Recent US Congress trades (7 days) | GET /v1/us_congress_trades/trades/recent | cursor | offset | page size (limit) |
Walmart
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Browse Walmart products in a category | GET /v1/walmart/category | cursor | page | page size (limit) |
| Get Walmart product reviews | GET /v1/walmart/reviews | cursor | page | page size (limit) |
| Search Walmart products by keyword | GET /v1/walmart/search | cursor | page | n/a |
Wayfair
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Get Wayfair product reviews | GET /v1/wayfair/reviews | cursor | page | n/a |
| Search Wayfair products | GET /v1/wayfair/search | cursor | page | n/a |
Web Scraping
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List async web jobs | GET /v1/web/jobs | cursor | cursor | page size (limit) |
| List web monitors | GET /v1/web/monitors | cursor | cursor | page size (limit) |
Yelp
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| Get Yelp reviews for a business | GET /v1/yelp/business/reviews | cursor | cursor | n/a |
| Search Yelp businesses | GET /v1/yelp/search | cursor | cursor | n/a |
| Search Yelp businesses with full cards | GET /v1/yelp/search/full | cursor | cursor | n/a |
YouTube
| Endpoint | Path | Send back as | Style | limit behaviour |
|---|---|---|---|---|
| List a YouTube channel's community posts | GET /v1/youtube/channel/community-posts | cursor | cursor | n/a |
| List a YouTube channel's live streams | GET /v1/youtube/channel/lives | cursor | cursor | n/a |
| List a YouTube channel's playlists | GET /v1/youtube/channel/playlists | cursor | cursor | n/a |
| List YouTube channel shorts | GET /v1/youtube/channel/shorts | cursor | cursor | n/a |
| List YouTube channel videos | GET /v1/youtube/channel/videos | cursor | cursor | n/a |
| Get YouTube playlist | GET /v1/youtube/playlist | cursor | cursor | n/a |
| List the videos in a YouTube playlist | GET /v1/youtube/playlist/items | cursor | cursor | n/a |
| YouTube profile, recent posts, and computed analytics in one call. | GET /v1/youtube/profile/full | cursor | cursor | n/a |
| Search YouTube | GET /v1/youtube/search | cursor | cursor | n/a |
| Advanced YouTube video search | GET /v1/youtube/search/advanced | cursor | cursor | n/a |
| Search YouTube by hashtag | GET /v1/youtube/search/hashtag | cursor | cursor | n/a |
| List YouTube comment replies | GET /v1/youtube/video/comment/replies | cursor | cursor | n/a |
| List YouTube video comments | GET /v1/youtube/video/comments | cursor | cursor | n/a |
| Get trending YouTube videos | GET /v1/youtube/videos/trending | cursor | cursor | n/a |
See also
- Response schema → List endpoints: the envelope shape in one sentence.
- Quickstart: your first request in under a minute.
- Endpoint pricing: every endpoint and what each call costs.
- Error handling: refund rules for stale-cursor errors, and the concurrency limit.
