Capability matrix
Auto-generated endpoint capability appendix derived from the public OpenAPI spec and LLMS index helpers
This page is generated from the same OpenAPI-derived data used by /llms.json.
TikTok
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/tiktok/profiles/{handle} | Get TikTok profile | handle (path) | client.tiktok.getProfile({ handle }) | none | data.lookupStatus: found, private, not_found | 1 credit per successful request. | no |
GET /v1/tiktok/profiles/{handle}/videos | List TikTok profile videos | handle (path), userId (query) | client.tiktok.getProfileVideos({ handle, sortBy?, cursor?, userId?, region?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: latest, popular | An empty data.videos array can mean no videos in the selected sort window, a private profile, or other cases—there is no lookupStatus field on this route. Call GET /v1/tiktok/profiles/{handle} when you need explicit lookupStatus including private or not_found before interpreting an empty video list. | 1 credit per successful request. | no |
GET /v1/tiktok/profiles/{handle}/followers | List TikTok profile followers | handle (path), userId (query) | client.tiktok.getProfileFollowers({ handle, cursor?, userId?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, hidden, private, not_found An empty data.followers array with lookupStatus: "found" means the profile resolved but this page returned no followers (for example a zero-follower account). Use lookupStatus to distinguish found, hidden, private, and not_found. Call GET /v1/tiktok/profiles/{handle} when you need full profile details. | 1 credit per successful request. | no |
GET /v1/tiktok/profiles/{handle}/following | List TikTok profile following | handle (path) | client.tiktok.getProfileFollowing({ handle, cursor?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, hidden, private, not_found An empty data.accounts array with lookupStatus: "found" means the profile resolved but this page returned no accounts (for example the profile follows nobody). Use lookupStatus to distinguish found, hidden, private, and not_found. Call GET /v1/tiktok/profiles/{handle} when you need full profile details. | 1 credit per successful request. | no |
GET /v1/tiktok/profiles/{handle}/region | Get TikTok profile region | handle (path) | client.tiktok.getProfileRegion({ handle }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/tiktok/profiles/{handle}/live | Get TikTok live stream | handle (path) | client.tiktok.getProfileLive({ handle }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/tiktok/users/search | Search TikTok users | none documented | client.tiktok.searchUsers({ query, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/tiktok/search | Search TikTok videos | none documented | client.tiktok.searchVideos({ query, datePosted?, sortBy?, region?, cursor?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: relevance, most-liked, date-posted | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/tiktok/search/hashtags | Search TikTok by hashtag | none documented | client.tiktok.searchHashtags({ hashtag, region?, cursor?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | Use data.page.hasMore and data.page.nextCursor for pagination. Repeat the same hashtag and filters when requesting the next page. | 1 credit per successful request. | no |
GET /v1/tiktok/videos | Get TikTok video | url (query) | client.tiktok.getVideo({ url, region?, trim?, downloadMedia? }) | none | data.lookupStatus: found, not_found | 1 credit base, +10 with downloadMedia. Up to 11 credits max. | downloadMedia=true |
GET /v1/tiktok/videos/comments | List TikTok video comments | url (query) | client.tiktok.getVideoComments({ url, cursor?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/tiktok/videos/transcript | Get TikTok video transcript | url (query) | client.tiktok.getVideoTranscript({ url, language?, useAiFallback? }) | none | data.lookupStatus: found, not_found | 1 credit base, +10 with useAiFallback. Up to 11 credits max. | no |
GET /v1/tiktok/feed/trending | List TikTok trending feed | none documented | client.tiktok.listTrendingFeed({ region, trim? }) | none | An empty data.items array means no trending posts were available for that request. Repeat the same request for a fresh trending batch. New and overlapping posts are both possible. No cursor or page parameters. | 1 credit per successful request. | no |
GET /v1/tiktok/shop/products/search | Search TikTok Shop products | none documented | client.tiktok.searchShopProducts({ query, page?, region? }) | none | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/tiktok/shop/products | List TikTok Shop store products | url (query) | client.tiktok.listShopProducts({ url, cursor?, region? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/tiktok/products | Get TikTok Shop product | url (query) | client.tiktok.getProduct({ url, region? }) | none | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/tiktok/products/reviews | List TikTok Shop product reviews | url (query) | client.tiktok.getProductReviews({ url?, productId?, region?, page? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/tiktok/profiles/{handle}/showcase-products | List TikTok profile showcase products | handle (path) | client.tiktok.getProfileShowcaseProducts({ handle, cursor?, region? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | An empty data.products array can mean no showcased products, a private profile, or other cases—there is no lookupStatus field on this route. Call GET /v1/tiktok/profiles/{handle} when you need explicit profile lookup status before interpreting an empty showcase list. | 1 credit per successful request. | no |
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/facebook/profiles | Get Facebook profile | url (query) | client.facebook.getProfile({ url, includeBusinessHours? }) | none | data.lookupStatus: found, private, not_found | 1 credit per successful request. | no |
GET /v1/facebook/profiles/posts | List Facebook profile posts | url (query) | client.facebook.getProfilePosts({ url?, pageId?, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | An empty data.posts page with hasMore: false can represent no public posts, restricted visibility, or an unresolvable URL or id—there is no lookupStatus field on this route. Call GET /v1/facebook/profiles first when you need found / private / not_found before interpreting an empty posts page. | 1 credit per successful request. | no |
GET /v1/facebook/profiles/reels | List Facebook profile reels | url (query) | client.facebook.getProfileReels({ url, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/facebook/profiles/photos | List Facebook profile photos | url (query) | client.facebook.getProfilePhotos({ url, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/facebook/posts | Get Facebook post or reel | url (query) | client.facebook.getPost({ url, includeComments?, includeTranscript? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/facebook/posts/comments | List Facebook post or reel comments | url (query) | client.facebook.getPostComments({ url?, cursor?, feedbackId? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/facebook/posts/transcript | Get Facebook post transcript | url (query) | client.facebook.getPostTranscript({ url }) | none | data.lookupStatus: found, not_found, lookup_failed | 1 credit per successful request. | no |
GET /v1/facebook/groups/posts | List Facebook group posts | url (query) | client.facebook.listGroupPosts({ url, sortBy?, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: top, recentActivity, chronological, chronologicalListings | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/facebook/marketplace/items | Get Facebook Marketplace item | url (query) | client.facebook.getMarketplaceItem({ itemId?, url? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/facebook/marketplace/locations/search | Search Facebook Marketplace locations | none documented | client.facebook.searchMarketplaceLocations({ query }) | none | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/facebook/marketplace/search | Search Facebook Marketplace listings | none documented | client.facebook.searchMarketplace({ query, lat, lng, sortBy?, deliveryMethod?, cursor?, ... }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: suggested, distanceAscend, creationTimeDescend, priceAscend, priceDescend | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/facebook/ad-library/ads | Get Facebook Ad Library ad | url (query) | client.facebook.getAdLibraryAd({ adId?, url?, includeTranscript?, trim? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/facebook/ad-library/ads/search | Search Facebook Ad Library ads | none documented | client.facebook.searchAdLibraryAds({ query, sortBy?, searchType?, adType?, country?, status?, mediaType?, startDate?, endDate?, cursor?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: impressions, most-recent | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/facebook/ad-library/companies/ads | List Facebook company ads | none documented | client.facebook.listCompanyAds({ pageId?, companyName?, country?, status?, mediaType?, language?, sortBy?, startDate?, endDate?, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: impressions, most-recent | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/facebook/ad-library/companies/search | Search Facebook ad library companies | none documented | client.facebook.searchAdLibraryCompanies({ query }) | none | standard HTTP / success envelope | 1 credit per successful request. | no |
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/instagram/profiles/{handle} | Get Instagram profile | handle (path) | client.instagram.getProfile({ handle }) | none | data.lookupStatus: found, private, not_found | 1 credit per successful request. | no |
GET /v1/instagram/profiles/{userId}/basic | Get Instagram basic profile | userId (path) | client.instagram.getBasicProfile({ userId }) | none | data.lookupStatus: found, private, not_found | 1 credit per successful request. | no |
GET /v1/instagram/profiles/{handle}/posts | List Instagram profile posts | handle (path) | client.instagram.getProfilePosts({ handle, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, private, not_found When lookupStatus is found, an empty data.posts page with hasMore: false can still mean a public profile with no posts in range. When lookupStatus is private or not_found, posts will be empty by design. Use data.lookupStatus for the domain outcome; call GET /v1/instagram/profiles/{handle} when you need full profile cards and related fields. | 1 credit per successful request. | no |
GET /v1/instagram/profiles/{handle}/reels | List Instagram profile reels | handle (path) | client.instagram.getProfileReels({ handle, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found When lookupStatus is found, an empty data.reels page with hasMore: false can mean a public profile with no reels in range. When lookupStatus is not_found, reels will be empty by design. Use data.lookupStatus for the domain outcome; call GET /v1/instagram/profiles/{handle} when you need full profile cards and related fields. | 1 credit per successful request. | no |
GET /v1/instagram/profiles/{handle}/highlights | List Instagram profile highlights | handle (path) | client.instagram.getProfileHighlights({ handle }) | none | data.lookupStatus: found, not_found When lookupStatus is found, an empty data.highlights list can mean the profile has no visible story highlight albums. When lookupStatus is not_found, highlights will be empty by design. Use data.lookupStatus for the domain outcome; call GET /v1/instagram/profiles/{handle} when you need full profile cards and related fields. | 1 credit per successful request. | no |
GET /v1/instagram/highlights/{highlightId} | Get Instagram highlight | none documented | client.instagram.getHighlight({ highlightId }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/instagram/posts | Get Instagram post or reel | url (query) | client.instagram.getPost({ url, region?, trim?, downloadMedia? }) | none | data.lookupStatus: found, not_found, restricted | 1 credit base, +10 with downloadMedia. Up to 11 credits max. | downloadMedia=true |
GET /v1/instagram/posts/comments | List Instagram post or reel comments | url (query) | client.instagram.getPostComments({ url, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/instagram/posts/transcript | Get Instagram post transcript | url (query) | client.instagram.getPostTranscript({ url }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/instagram/search/reels | Search Instagram Reels | none documented | client.instagram.searchReels({ query, datePosted?, page? }) | none | standard HTTP / success envelope | 1 credit per successful request. | no |
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/linkedin/profiles | Get LinkedIn profiles | url (query) | client.linkedin.getProfiles({ urls }) or client.linkedin.getProfile({ url }) | none | standard HTTP / success envelope | 2 credits per profile URL requested. Up to 50 profiles per request (100 credits max). | no |
GET /v1/linkedin/profiles/posts | List LinkedIn profile posts | url (query) | client.linkedin.listProfilePosts({ url, startDate?, endDate?, onlyAuthoredPosts? }) | none | data.lookupStatus: found, not_found | 2 credits per returned record. Up to 200 per request (400 credits max). limit defaults to 10. | no |
GET /v1/linkedin/people/search | Search LinkedIn people | none documented | client.linkedin.searchPeople({ firstName?, lastName? }) | none | data.lookupStatus: found, not_found This search usually takes around one and a half minutes to complete, so expect a longer wait than most endpoints. | 2 credits per returned record. Up to 50 per request (100 credits max). | no |
GET /v1/linkedin/organizations | Get LinkedIn organization page | url (query) | client.linkedin.getOrganizations({ urls }) or client.linkedin.getOrganization({ url }) | none | This endpoint covers company, school, and other LinkedIn organization pages. If you only need a standard company page lookup, the Company page endpoint may be a better fit. | 2 credits per organization URL requested. Up to 50 organizations per request (100 credits max). | no |
GET /v1/linkedin/companies | Get LinkedIn company page | url (query) | client.linkedin.getCompany({ url }) | none | data.lookupStatus: found, not_found This endpoint is for LinkedIn company pages only. If you have a school URL or another organization page type, use the Organization page endpoint instead. | 1 credit per successful request. | no |
GET /v1/linkedin/companies/posts | List LinkedIn company posts | url (query) | client.linkedin.listCompanyPosts({ url, page? }) | none | data.lookupStatus: found, not_found This endpoint is for LinkedIn company pages only. If you have a school URL or another organization page type, use the Organization page endpoint instead. | 1 credit per successful request. | no |
GET /v1/linkedin/posts | Get LinkedIn post or article | url (query) | client.linkedin.getPost({ url }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/linkedin/jobs | Get LinkedIn jobs | url (query) | client.linkedin.getJobs({ urls }) | none | standard HTTP / success envelope | 2 credits per job URL requested. Up to 50 jobs per request (100 credits max). | no |
GET /v1/linkedin/jobs/search | Search LinkedIn jobs | none documented | client.linkedin.searchJobs({ keyword, location, country?, timeRange?, jobType?, experienceLevel?, remote?, company?, locationRadius? }) | none | data.lookupStatus: found, not_found This search usually takes around one and a half minutes. | 2 credits per returned record. Up to 1000 per request (2000 credits max). limit defaults to 10. | no |
YouTube
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/youtube/channel | Get YouTube channel | handle (query), url (query) | client.youtube.getChannel({ channelId?, handle?, url? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/youtube/channels/videos | List YouTube channel videos | handle (query) | client.youtube.getChannelVideos({ channelId?, handle?, sortBy?, cursor?, includeExtras? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: latest, popular | data.lookupStatus: found, not_found An empty data.videos array can still mean data.lookupStatus: "found" when the channel resolves but the returned page has no videos. Use data.lookupStatus to distinguish a resolved empty result from not_found. | 1 credit per successful request. | no |
GET /v1/youtube/channels/shorts | List YouTube channel shorts | handle (query) | client.youtube.getChannelShorts({ channelId?, handle?, sortBy?, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: latest, popular | data.lookupStatus: found, not_found An empty data.shorts array can still mean data.lookupStatus: "found" when the channel resolves but the returned page has no Shorts. Use data.lookupStatus to distinguish a resolved empty result from not_found. | 1 credit per successful request. | no |
GET /v1/youtube/playlists | Get YouTube playlist | playlistId (query) | client.youtube.getPlaylist({ playlistId }) | none | data.lookupStatus: found, not_found An empty data.videos array with data.lookupStatus: "found" means the playlist resolved but returned no videos in the response. Use data.lookupStatus to distinguish a resolved playlist from not_found. | 1 credit per successful request. | no |
GET /v1/youtube/community-posts | Get YouTube community post | url (query) | client.youtube.getCommunityPost({ url }) | none | data.lookupStatus: found, not_found Use data.lookupStatus to distinguish a resolved community post from not_found. | 1 credit per successful request. | no |
GET /v1/youtube/search | Search YouTube | none documented | client.youtube.search({ query, uploadDate?, sortBy?, type?, duration?, region?, cursor?, includeExtras? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: relevance, popular | Use data.page.hasMore and data.page.nextCursor for pagination rather than inferring completion from bucket sizes alone. | 1 credit per successful request. | no |
GET /v1/youtube/search/hashtags | Search YouTube by hashtag | none documented | client.youtube.searchHashtag({ hashtag, type?, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | Use data.page.hasMore and data.page.nextCursor for pagination rather than inferring completion from result count alone. | 1 credit per successful request. | no |
GET /v1/youtube/shorts/trending | List trending YouTube Shorts | none documented | client.youtube.getTrendingShorts() | none | An empty data.shorts array means no trending Shorts were available for that call (you normally receive about 48 when the feed is populated). Typically returns about 48 trending Shorts per call. Repeat the same request for another fresh batch (new and overlapping Shorts are both possible). No cursor or page parameters. | 1 credit per successful request. | no |
GET /v1/youtube/videos | Get YouTube video | url (query) | client.youtube.getVideo({ url, language? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/youtube/videos/comments | List YouTube video comments | url (query) | client.youtube.getVideoComments({ url, cursor?, order? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/youtube/videos/comments/replies | List YouTube comment replies | none documented | client.youtube.getVideoCommentReplies({ cursor }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/youtube/videos/transcript | Get YouTube video transcript | url (query) | client.youtube.getVideoTranscript({ url, language? }) | none | data.lookupStatus: found, not_found, lookup_failed | 1 credit per successful request. | no |
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/twitter/profiles/{handle} | Get Twitter profile | handle (path) | client.twitter.getProfile({ handle }) | none | data.lookupStatus: found, private, not_found | 1 credit per successful request. | no |
GET /v1/twitter/profiles/{handle}/tweets | List Twitter profile tweets | handle (path) | client.twitter.getProfileTweets({ handle, trim? }) | none | data.lookupStatus: found, not_found An empty data.tweets array can occur with lookupStatus: "found" (no popular public tweets in this window) or lookupStatus: "not_found" (handle did not resolve). Call GET /v1/twitter/profiles/{handle} when you must distinguish private from not_found before interpreting an empty tweet list. | 1 credit per successful request. | no |
GET /v1/twitter/tweets | Get Twitter tweet | url (query) | client.twitter.getTweet({ url, trim? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/twitter/tweets/replies | List Twitter tweet replies | url (query) | client.twitter.listTweetReplies({ url, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | standard HTTP / success envelope | 2 credits per successful request. | no |
GET /v1/twitter/tweets/transcript | Get Twitter tweet transcript | url (query) | client.twitter.getTweetTranscript({ url }) | none | data.lookupStatus: found, not_found, lookup_failed For video tweets only. Responses can take longer than typical lookups. Videos longer than about two minutes cannot be transcribed. | 1 credit per successful request. | no |
GET /v1/twitter/search | Search Twitter posts | none documented | client.twitter.search({ query, section?, minRetweets?, minLikes?, minReplies?, limit?, startDate?, endDate?, language?, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | standard HTTP / success envelope | 2 credits per successful request. | no |
GET /v1/twitter/hashtags | Search Twitter by hashtag | none documented | client.twitter.searchHashtags({ hashtag, section?, limit?, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | standard HTTP / success envelope | 2 credits per successful request. | no |
GET /v1/twitter/communities | Get Twitter community | url (query) | client.twitter.getCommunity({ url }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/twitter/communities/tweets | List Twitter community tweets | url (query) | client.twitter.getCommunityTweets({ url }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
Auth
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/whoami | Whoami | none documented | client.auth.whoami() | none | standard HTTP / success envelope | see meta.creditsCharged | no |
GET /v1/balance | Get account balance | none documented | client.billing.getBalance() | none | standard HTTP / success envelope | see meta.creditsCharged | no |
System
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /health | Health check | none documented | client.health() | none | standard HTTP / success envelope | see meta.creditsCharged | no |
Telegram
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/telegram/channels/{handle} | Get Telegram channel | handle (path) | client.telegram.getChannel({ handle: "durov" }) | none | data.lookupStatus: found, not_found, restricted | 1 credit per successful request. | no |
GET /v1/telegram/channels/{handle}/posts | List Telegram channel posts | handle (path) | client.telegram.getChannelPosts({ handle: "durov", cursor? }) | cursor via cursor | data.lookupStatus: found, not_found, restricted | 1 credit per successful request. | no |
GET /v1/telegram/channels/{handle}/posts/{postId} | Get Telegram channel post | handle (path), postId (path) | client.telegram.getChannelPost({ handle: "Premiumoji", postId: "93" }) | none | data.lookupStatus: found, not_found, restricted | 1 credit per successful request. | no |
Threads
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/threads/profiles/{handle} | Get Threads profile | handle (path) | client.threads.getProfile({ handle }) | none | data.lookupStatus: found, private, not_found | 1 credit per successful request. | no |
GET /v1/threads/profiles/{handle}/posts | List Threads profile posts | handle (path) | client.threads.getProfilePosts({ handle, trim? }) | none | data.lookupStatus: found, not_found An empty data.posts array can occur with lookupStatus: "found" (no posts in this response) or lookupStatus: "not_found" (handle did not resolve). Call GET /v1/threads/profiles/{handle} when you must distinguish private from not_found before interpreting an empty post list. | 1 credit per successful request. | no |
GET /v1/threads/search | Search Threads posts | none documented | client.threads.search({ query, startDate?, endDate?, trim? }) | none | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/threads/posts | Get Threads post | url (query) | client.threads.getPost({ url, trim? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/threads/users/search | Search Threads users | none documented | client.threads.searchUsers({ query }) | none | standard HTTP / success envelope | 1 credit per successful request. | no |
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/reddit/subreddits | Get Reddit subreddit | url (query) | client.reddit.getSubreddit({ subreddit } | { url }) — subreddit names are case-sensitive | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/reddit/search | Search Reddit posts | none documented | client.reddit.search({ query, sortBy?, timeframe?, cursor?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore; sortBy: relevance, new, top | Use data.page.hasMore and data.page.nextCursor for pagination rather than inferring completion from data.totalResults alone. | 1 credit per successful request. | no |
Rumble
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/rumble/search | Search Rumble | none documented | client.rumble.search({ query, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | Use data.page.hasMore and data.page.nextCursor for pagination rather than inferring completion from data.totalResults alone. | 1 credit per successful request. | no |
GET /v1/rumble/channels/videos | List Rumble channel videos | url (query) | client.rumble.listChannelVideos({ url, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/rumble/videos | Get Rumble video | url (query) | client.rumble.getVideo({ url }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/rumble/videos/transcript | Get Rumble video transcript | url (query) | client.rumble.getVideoTranscript({ url }) | none | data.lookupStatus: found, not_found, lookup_failed | 1 credit when a transcript is found; no charge when captions are unavailable. | no |
GET /v1/rumble/videos/comments | List Rumble video comments | url (query) | client.rumble.listVideoComments({ url }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/reddit/subreddits/{subreddit}/posts | List Reddit subreddit posts | none documented | client.reddit.listSubredditPosts({ subreddit, sort?, timeframe?, cursor? }) — subreddit is case-sensitive | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/reddit/subreddits/search | Search Reddit subreddit | none documented | client.reddit.searchSubreddit({ subreddit, query?, sort?, timeframe?, cursor? }) — subreddit is case-sensitive | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | Use data.page.hasMore and data.page.nextCursor for pagination rather than inferring completion from data.totalResults alone. | 1 credit per successful request. | no |
GET /v1/reddit/posts/comments | List Reddit post comments | url (query) | client.reddit.listPostComments({ url, cursor?, trim? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GitHub
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/github/profiles/{handle} | Get GitHub profile | handle (path) | client.github.getProfile({ handle }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/github/profiles/{handle}/repositories | List GitHub profile repositories | handle (path) | client.github.listProfileRepositories({ handle, cursor?, type?, sort?, direction? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found An empty data.repositories array with lookupStatus: "found" means the profile resolved but this page returned no repositories. | 1 credit per successful request. | no |
GET /v1/github/repositories | Get GitHub repository | url (query) | client.github.getRepository({ url }) | none | data.lookupStatus: found, not_found Use this endpoint for one repository when you have a full owner/repo URL. To list every public repository for a user, use the profile repositories list endpoint instead. | 1 credit per successful request. | no |
GET /v1/github/profiles/{handle}/activity | List GitHub profile activity | handle (path) | client.github.listProfileActivity({ handle, year?, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found This endpoint returns one month of public contribution activity per request. Keep the same year on follow-up calls and pass data.page.nextCursor as cursor to page backward through the year. | 1 credit per successful request. | no |
GET /v1/github/profiles/{handle}/followers | List GitHub profile followers | handle (path) | client.github.listProfileFollowers({ handle, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found An empty data.followers array with lookupStatus: "found" means the profile resolved but this page returned no followers. Use lookupStatus to distinguish found and not_found. Call GET /v1/github/profiles/{handle} when you need full profile details. | 1 credit per successful request. | no |
GET /v1/github/profiles/{handle}/following | List GitHub profile following | handle (path) | client.github.listProfileFollowing({ handle, cursor? }) | cursor via cursor, next: data.page.nextCursor, has more: data.page.hasMore | data.lookupStatus: found, not_found An empty data.following array with lookupStatus: "found" means the profile resolved but this page returned no accounts (for example the profile follows nobody). Use lookupStatus to distinguish found and not_found. Call GET /v1/github/profiles/{handle} when you need full profile details. | 1 credit per successful request. | no |
GET /v1/github/profiles/{handle}/contributions | Get GitHub contribution graph | handle (path) | client.github.getProfileContributions({ handle, year? }) | none | data.lookupStatus: found, not_found Optional year defaults to the current calendar year when omitted. Contribution counts reflect public GitHub activity for that year. | 1 credit per successful request. | no |
GET /v1/github/trending/repositories | List trending GitHub repositories | none documented | client.github.listTrendingRepositories({ language?, since?, spokenLanguageCode? }) | none | An empty data.repositories array means GitHub returned no trending repositories for the selected filters. Use since (daily, weekly, monthly) and optional language / spokenLanguageCode to narrow results. For trending developers instead of repositories, use the trending developers endpoint. | 1 credit per successful request. | no |
GET /v1/github/trending/developers | List trending GitHub developers | none documented | client.github.listTrendingDevelopers({ language?, since? }) | none | An empty data.developers array means GitHub returned no trending developers for the selected filters. Use since (daily, weekly, monthly) and optional language to narrow results. Each developer may include popularRepository when GitHub highlights one. For trending repositories instead of developers, use the trending repositories endpoint. | 1 credit per successful request. | no |
Spotify
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/spotify/artist | Get Spotify artist | url (query) | client.spotify.getArtist({ artistId?, url? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/spotify/album | Get Spotify album | url (query) | client.spotify.getAlbum({ albumId?, url? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
GET /v1/spotify/track | Get Spotify track | url (query) | client.spotify.getTrack({ trackId?, url? }) | none | data.lookupStatus: found, not_found | 1 credit per successful request. | no |
Web
| Route | Summary | Identifiers | SDK | Pagination / ordering | Outcome / empty-result notes | Credits | Media |
|---|---|---|---|---|---|---|---|
GET /v1/web/search | Search the web | none documented | client.web.search({ query: "Social media scraping API", region: "US" }) | none | standard HTTP / success envelope | 1 credit per successful request. | no |
GET /v1/web/markdown | Generate web page markdown | url (query) | client.web.getMarkdown({ url: "https://www.socialfetch.dev/" }) | none | data.lookupStatus: found, restricted | 1 credit per successful request. | no |
GET /v1/web/ask | Ask a question about a web page | url (query) | client.web.ask({ url: "https://www.socialfetch.dev/", q: "What is this page about?" }) | none | data.lookupStatus: found, restricted | 1 credit per successful request. | no |
GET /v1/web/html | Generate web page HTML | url (query) | client.web.getHtml({ url: "https://www.socialfetch.dev/" }) | none | data.lookupStatus: found, restricted | 1 credit per successful request. | no |
GET /v1/web/crawl | Crawl web pages | url (query) | client.web.crawl({ urls: ["https://www.socialfetch.dev/"] }) | none | standard HTTP / success envelope | 1 credit per URL requested. Up to 5 URLs per request (5 credits max). | no |