Which endpoint should I use?
Side-by-side decision tables for the endpoints that look alike, with the credit price of each so you pick the one that returns what you need for the least.
Several endpoints overlap. Two of them may return the same account, one cheaply and one with extras, or the same comments as one page or as a whole thread. Picking the wrong one either costs more than it should or leaves you making a second call. Each section below takes one of those "these look the same" questions and puts the options next to each other with their prices.
Every price here comes from the live catalogue at GET https://api.insightsocial.app/v1/endpoints (free, no key needed). A few pricing rules to keep in mind while you read:
- Fixed endpoints show one number, and that is the charge for a successful call.
- Metered endpoints show a range. The top of the range is held when the call starts, and when it finishes you are charged what the call actually used, never more than the ceiling. Plan your balance around the top of the range.
- Nothing found costs nothing. Failed calls, empty results and
dry_run=1calls are never charged. API credits are non-refundable, so this is how "you only pay for data" works: an unanswered call is simply never billed. - Repeats are charged. Calling the same endpoint again with the same parameters is a new call, because the data may have changed. A response served from the shared cache costs 2 credits. Store what you need to reuse.
See Credits for the full rules and Endpoint pricing for every price in one table.
Start here
| What you are trying to do | Section |
|---|---|
| Account numbers alone, or together with its latest posts | Profile, or profile plus posts? |
| Pull Instagram data at the right price | Instagram: 10 credits or 50? |
| Page through posts or reels, with or without share counts | A plain list, or the /full list? |
| Fill a Facebook list's missing fields in the same call | Facebook: fill the rows, or fetch them? |
| Fetch only what is new since your last run | Only what is new |
| Find posts or accounts by keyword | Which search? |
| Get what was said in a video | Getting a transcript |
| Read the comments on a post | Which comment endpoint? |
| Track hiring and job postings | Hiring and job postings |
| See what a brand runs as paid advertising | Ad libraries |
Profile, or profile plus posts?
profile returns the account and nothing else. profile/full returns the same account and its latest page of posts in one call, so you skip the follow-up list request.
profile/full is a beta endpoint, but its two main parts are typed: data.profile is a profile, and each data.posts[].post is a post, the same shapes profile and the posts list return. Anything else under data keeps the source's own structure under our naming rules (snake_case keys, string ids, ISO times where the source gives a timestamp) and may change. Under schema 2 it no longer carries computed metrics such as engagement rate or posting cadence; compute those from the posts it returns.
| Your goal | Endpoint | Credits |
|---|---|---|
| Just the account | /v1/tiktok/profile, /v1/instagram/profile, /v1/twitter/profile, /v1/facebook/profile, /v1/youtube/channel | 10 |
| Just the account, LinkedIn member | /v1/linkedin/profile | 50 |
| Account + recent posts (beta) | /v1/tiktok/profile/full, /v1/instagram/profile/full, /v1/twitter/profile/full, /v1/facebook/profile/full, /v1/youtube/profile/full | 50 |
| LinkedIn company + latest 10 posts (beta) | /v1/linkedin/profile/full | 50 |
If you only need follower counts, use plain profile. When you fetch a profile and then always ask for its latest posts, profile/full replaces those two calls with one. On TikTok, for example, profile plus one page of profile/videos costs 20 credits, while profile/full is a flat 50 for the same profile and posts. Prefer the pair when cost matters; prefer profile/full when one round trip matters more.
How many posts one profile/full call reads depends on the platform's page size: 10 on TikTok, 12 on Instagram, up to 30 on YouTube, about 10 to 20 on X, 3 on Facebook and 10 on a LinkedIn company. To read further back, send pagination.next_cursor back to profile/full as cursor: each further page is another 50-credit call. Paging the platform's posts list (for example /v1/tiktok/profile/videos) is usually cheaper.
LinkedIn profile/full is a company endpoint
/v1/linkedin/profile/full takes a company page URL and replaces a /v1/linkedin/company plus /v1/linkedin/company/posts pair (100 credits) with one 50-credit call. For a person, use /v1/linkedin/profile.
The fields that get filled vary by platform. Check the platform's page under Platforms before you rely on one.
Instagram: 10 credits or 50?
Instagram endpoints come in two price bands. The 10-credit endpoints cover what a public profile page shows. The 50-credit (advanced) endpoints return what the public page does not: share counts, follower and following lists, stories, tagged posts, locations and comment lists.
| Your goal | Endpoint | Credits |
|---|---|---|
| Profile, one post | /v1/instagram/profile, /v1/instagram/post | 10 |
| A page of posts or reels | /v1/instagram/profile/posts, /v1/instagram/profile/reels | 10–130, 10–140 |
| Name and avatar from a numeric user id | /v1/instagram/basic-profile | 10 |
| A post's share count | /v1/instagram/post/stats | 50–90 |
| Followers or following | /v1/instagram/followers, /v1/instagram/following | 50–100 |
| Accounts similar to one you know | /v1/instagram/similar | 50–850 |
| Stories live right now | /v1/instagram/stories | 50 |
| Comments on a post | /v1/instagram/post/comments | 50–150 |
| Posts under a hashtag | /v1/instagram/search/hashtag | 50 |
post versus post/stats
/v1/instagram/post (10 credits) returns everything about a post, including views on video, except the share count. Only reach for /v1/instagram/post/stats (50–90) when you specifically need shares.
A plain list, or the /full list?
For Instagram posts and reels, and for Facebook reels, there is a plain list and an enriched /full list. The plain list is one fast page. The /full list attaches views, likes, comments and a per-item share count where one can be found. The /full lists are beta: they keep the source's own structure rather than the typed post shape.
| Your goal | Endpoint | Credits |
|---|---|---|
| One page of a user's reels | /v1/instagram/profile/reels | 10–140 |
| Reels with per-reel share counts | /v1/instagram/profile/reels/full | 50–250 |
| One page of a user's posts | /v1/instagram/profile/posts | 10–130 |
| Posts with per-post share counts | /v1/instagram/profile/posts/full | 50–250 |
| Facebook reels with exact views, likes, comments and shares | /v1/facebook/profile/reels/full | 50–250 |
Paging a long back catalogue when you do not need share counts is far cheaper on the plain list. Use /full when every item needs its engagement and you want it in one call.
What limit means depends on the endpoint
limit does three different jobs on this API. Read the endpoint's parameter description before you rely on one.
- Collect until N. On
/v1/instagram/profile/reels/full,/v1/instagram/profile/posts/fulland/v1/facebook/profile/reels/full(1 to 50), and/v1/threads/search(1 to 100),limittells the endpoint to keep walking pages on its own until it has that many items. Each page walked is billed, which is what moves these calls up their range. Leavelimitoff and you get one page. - Bigger single page. On
/v1/tiktok/search,limitreturns one bulk page of up to 120 videos (rounded up to a multiple of 30). On/v1/linkedin/search/postsit returns up to 200 posts in one call. - Keep the top N. On
/v1/tiktok/search/users,/v1/pinterest/search,/v1/reddit/subreddits/searchand/v1/instagram/similar,limittrims the page after the search has run. It is not a page size, and the next cursor still moves past the whole page.
Separately, twelve list endpoints take max_pages (1 to 5), which walks that many pages in one call. Each page is billed as one call, and the hold is multiplied by the page count before the call starts.
Facebook: fill the rows, or fetch them?
Four Facebook list endpoints take an optional include parameter that fills in every row on the page from that row's own detail record, in the same call. Without it, the call costs the bottom of its range. With it, you pay for the rows that were actually filled, which is why the price is a range.
| Your goal | Call | Credits |
|---|---|---|
| A page's recent posts: text, reactions, comments, publish time | /v1/facebook/profile/posts | 10 plain |
| The same posts with share counts, plus exact reel views and duration | /v1/facebook/profile/posts?include=engagement | up to 40 |
| A page's photos with author, likes, comments, shares and publish date | /v1/facebook/profile/photos?include=details | 10–90 |
| A page's own events with description, address, hosts, cover and RSVP counts | /v1/facebook/profile/events?include=details | 10–90 |
| What is on in a city, with description, address and hosts | /v1/facebook/events?include=details | 10–130 |
include=engagement is the right move when you are pulling the feed anyway. The alternative, one /v1/facebook/post call (10 credits) per permalink, costs about the same and takes a round trip per post. For reels specifically, /v1/facebook/profile/reels/full returns a page of reels with exact engagement on every one.
Only what is new
When you poll the same account on a schedule, most list endpoints can stop at what you already hold instead of returning it again.
| Parameter | What it does |
|---|---|
since | Leaves off posts published before a date (YYYY-MM-DD or ISO 8601). The page that reaches an older post ends the walk, and pagination.stopped_at is since. |
stop_at_id | Pass the id or URL of the newest post you already have. The page stops just before it, and pagination.stopped_at is known_id. |
recent_days | On Facebook and Instagram lists, keeps only posts from the last N days. |
max_age_days | On search endpoints, keeps only rows published within N days. The filter runs after each page is fetched, so every page walked is still billed. |
since and stop_at_id work on /v1/tiktok/profile/videos, /v1/instagram/profile/posts, /v1/instagram/profile/reels, /v1/twitter/user/tweets, /v1/facebook/profile/posts, /v1/youtube/channel/videos, /v1/youtube/channel/shorts and /v1/threads/user/posts. See Pagination.
Which search?
Every platform has its own keyword search. Pick the one for the platform you care about, and run several in parallel when you want more than one.
| Your goal | Endpoint | Credits |
|---|---|---|
| TikTok videos by keyword | /v1/tiktok/search | 10–370 |
| TikTok's Top tab for a keyword | /v1/tiktok/search/top | 10 |
| YouTube videos, channels, playlists and Shorts | /v1/youtube/search | 10–150 |
| YouTube videos with date, license and country filters | /v1/youtube/search/advanced | 10–110 |
| X posts, with X search operators in the query | /v1/twitter/search/tweets | 10–50 |
| A written answer about X, with the posts it cites | /v1/twitter/ai-search | 50 |
| Reddit posts, site-wide | /v1/reddit/search | 10–300 |
| Reddit posts inside one subreddit | /v1/reddit/subreddit/search | 10–260 |
| Reddit threads with their top comments and a per-subreddit roll-up | /v1/reddit/omni-search | 50–90 |
| Threads posts | /v1/threads/search | 10–340 |
| Instagram reels | /v1/instagram/search/reels | 10–650 |
| Facebook posts | /v1/facebook/search/posts | 10–50 |
| LinkedIn posts and articles | /v1/linkedin/search/posts | 10–480 |
| Pinterest pins | /v1/pinterest/search | 10–260 |
Search results are the platform's own matches. When your keyword is also a common word or someone else's brand, filter the rows on your side: check post.content.text for the terms that must appear and the ones that must not, and use post.language where the platform states one.
To find accounts rather than posts:
| Your goal | Endpoint | Credits |
|---|---|---|
| TikTok creators, with bio and region on every row | /v1/tiktok/search/users?include=profile | 10–1,310 |
| Threads accounts, with followers and bio | /v1/threads/search/users?include=profile | 10–130 |
| X accounts | /v1/twitter/search/users | 10 |
| Instagram profiles whose bio or captions match | /v1/instagram/search/profiles | 10–250 |
| Reddit communities, with activity and rules | /v1/reddit/subreddits/search?include=details | 10–260 |
| LinkedIn people | /v1/linkedin/search/people | 100–500 |
An include=profile search replaces a user search plus one profile call per row. You pay per row actually filled.
/v1/reddit/subreddits/search is usually the step before the other Reddit searches: author.id on each row is the subreddit value the rest of the platform takes. /v1/reddit/omni-search is never the cheap option, because it runs the search and expands the top threads' comments in the same call. Choose it when you want what people are saying rather than a list of links. Its threads parameter (1 to 8) is what moves the price.
Getting a transcript
YouTube has two cheap options. Every other platform has one transcript endpoint at 100 credits.
| Your goal | Endpoint | Credits |
|---|---|---|
| YouTube caption files to download and parse yourself | /v1/youtube/video/subtitles | 10 |
| YouTube transcript as timed segments with language | /v1/youtube/video/transcript | 30 |
| TikTok video | /v1/tiktok/post/transcript | 100 |
| Instagram reel or video (up to 2 minutes) | /v1/instagram/media/transcript | 100 |
| Facebook video post | /v1/facebook/post/transcript | 100 |
| X video post | /v1/twitter/tweet/transcript | 100 |
| Reddit video post | /v1/reddit/post/transcript | 100 |
| LinkedIn video post | /v1/linkedin/post/transcript | 100 |
| Facebook Ad Library video ad | /v1/facebook/adlibrary/ad/transcript | 100 |
On YouTube, take subtitles if you can parse caption files, and transcript if you want the words already split into segments. A video with no captions or no speech comes back as a 404 and is not charged. The Video transcription recipe wraps all of these in one function.
Which comment endpoint?
Each platform has a comment list, and a few have a way to look up one comment directly.
| Your goal | Endpoint | Credits |
|---|---|---|
| A page of comments on a TikTok video | /v1/tiktok/post/comments | 10–30 |
| A page of comments on a YouTube video | /v1/youtube/video/comments | 10 |
| Replies to a tweet | /v1/twitter/tweet/replies | 10 |
| Comments on a Facebook post | /v1/facebook/post/comments | 10 |
| Replies under a Threads post (one window, no cursor) | /v1/threads/post/comments | 10–100 |
| Comments on an Instagram post | /v1/instagram/post/comments | 50–150 |
| Top-level comments on a LinkedIn post | /v1/linkedin/post/comments | 50 |
| A Reddit post's whole comment tree, replies nested | /v1/reddit/post/comments | 50 |
| One thread of replies | /v1/tiktok/video/comment/replies, /v1/instagram/post/comment/replies, /v1/youtube/video/comment/replies, /v1/facebook/post/comment/replies, /v1/linkedin/post/comments/replies | 10 (LinkedIn 50) |
| Re-check one known TikTok or Instagram comment | /v1/tiktok/comment, /v1/instagram/comment | 20–60, 50–150 |
Comments come back as text with their counts, author and language where the platform states one. Classifying them (sentiment, questions, complaints) is up to you; the Sentiment analysis recipe shows one way.
/v1/reddit/post/comments costs more because it returns the whole discussion with nested replies expanded under each comment's replies, which replaces a paging loop you would otherwise write. /v1/tiktok/post/comments and /v1/instagram/post/comments take scan_pages to read several pages in one call.
TikTok and Instagram have no native "read one comment" route, so /v1/tiktok/comment and /v1/instagram/comment scan for the target and stop as soon as they find it. deep_scan=true widens the scan and is what reaches the top of each range. A comment that is not found is not charged.
Hiring and job postings
Job data lives on LinkedIn. The choice is a keyword search, one company's openings, or just the count.
| Your goal | Endpoint | Identifier | Credits |
|---|---|---|---|
| Postings by keyword | /v1/linkedin/search/jobs | query | 100 |
| Every opening at one company | /v1/linkedin/company/jobs | company_id | 100 |
| How many roles a company has open | /v1/linkedin/company/job-count | company_id | 50 |
| One posting in full | /v1/linkedin/job | id | 50 |
To track hiring across a set of competitors, poll company/job-count on a schedule and spend the 200 on company/jobs only when the count moves.
Resolve company_id once
LinkedIn company endpoints need a numeric company_id, and you cannot read it from the page URL. Get it from /v1/linkedin/company (50 credits) with the page url, then store it.
Ad libraries
Each network's ad library has a keyword door and an advertiser door. Use the keyword door when you only know a brand name. Use the advertiser door for a complete run once you have its id.
| Your goal | Endpoint | Credits |
|---|---|---|
| Meta ads matching a keyword | /v1/facebook/adlibrary/search/ads | 50 |
| Resolve a brand name to its Meta advertiser pages | /v1/facebook/adlibrary/search/companies | 50 |
| Every ad one Meta page is running | /v1/facebook/adlibrary/company/ads | 50–350 |
| One Meta ad in full | /v1/facebook/adlibrary/ad | 50 |
| What a Meta video ad says out loud | /v1/facebook/adlibrary/ad/transcript | 100 |
| LinkedIn ads by company, keyword or country | /v1/linkedin/ads/search | 50 |
| One LinkedIn ad in full | /v1/linkedin/ad | 50 |
| TikTok ads by keyword or advertiser name | /v1/tiktok/adlibrary/search | 50–170 |
| One TikTok ad in full | /v1/tiktok/adlibrary/ad | 50 |
| TikTok's leaderboard of top-performing ads for a market | /v1/tiktok/ads/top | 100–1000 |
The Ad library aggregation recipe runs the three keyword doors in parallel for one brand.
Still unsure?
Ask the catalogue. GET https://api.insightsocial.app/v1/endpoints?platform=tiktok lists every TikTok endpoint with its description, parameters and price, and needs no key. To try a call before you write code, use the Playground in your dashboard.
Metric substitutions
Which unified fields stay null on which platform, how to fill the ones a join can recover, and the one place a field carries a different metric.
Recipes
Nine end-to-end builds on the InsightSocial API, from brand monitoring to ad audits, each with its credit cost worked out before you run it.