{"success":true,"base_url":"https://api.insightsocial.app/v1","docs":"https://www.insightsocial.app/docs","auth":{"header":"x-api-key","format":"isk_live_… | isk_test_…","note":"Send the key in the x-api-key header. Authorization: Bearer is refused."},"headers":{"Idempotency-Key":"Retry safely. A replay is returned unchanged and charged 0.","Cache-Control":"Send `no-cache` to force a fresh fetch. Always charged."},"pricing":{"note":"Credits are per endpoint, never flat. A metered endpoint quotes a range; you are charged what it actually cost.","free":["empty results","idempotent replays","failed calls"]},"tools":{"mcp":"npx -y insightsocial mcp","cli":"npx -y insightsocial init","skills":"npx skills add insightsocial/skills","openapi":"https://api.insightsocial.app/v1/openapi.json","docs":"https://www.insightsocial.app/docs/mcp"},"summary":{"endpoints":305,"gettable":302,"metered":74,"platforms":25,"spec_version":"1.0.0","schema_version":"2","max_our_credits":5000},"meta_endpoints":[{"path":"/v1/credits","method":"GET","label":"Credits","description":"The calling key owner's balance and this period's usage. Free.","ourCredits":0},{"path":"/v1/endpoints","method":"GET","label":"Endpoints","description":"This catalogue, with per-endpoint prices. Free, and needs no key.","ourCredits":0},{"path":"/v1/openapi.json","method":"GET","label":"OpenAPI","description":"The OpenAPI 3.1 spec for every endpoint, for generating clients and agent tools. Free, and needs no key.","ourCredits":0}],"endpoints":[{"path":"/v1/bluesky/profile","method":"GET","platform":"bluesky","group":"Profile","label":"Profile","description":"Returns a Bluesky user's public profile: handle, display name, avatar, description, follower and follows counts, post count, created date, and verification status.\n\nUse it when you have a handle and want the profile only; use user/posts for that account's posts.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Bluesky handle (e.g. `espn.com`).","help":"Bluesky handle, e.g. espn.com.","example":"espn.com"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/bluesky/user/posts","method":"GET","platform":"bluesky","group":"User","label":"User/Posts","description":"Returns a feed of posts for a Bluesky user: text, author info, embeds, reply/repost/like/quote counts, and when each was indexed.\n\nUse it when you already have a handle or did and want that account's own posts; use search to find posts by keyword instead.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":1,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Bluesky handle.","help":"Bluesky handle.","example":"espn.com","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Bluesky `did` (Bluesky's internal user ID format, e.g. `did:plc:x7d6j54pm22ufehkes6jo4jf`).","help":"Bluesky did, Bluesky's own user ID format, e.g. did:plc:x7d6j54pm22ufehkes6jo4jf.","one_of_group":"handle|user_id"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/bluesky/post","method":"GET","platform":"bluesky","group":"Post","label":"Post","description":"Returns one Bluesky post: its record text, author info, embeds, reply count, repost count, like count, quote count, and a threaded replies array.\n\nUse it when you have a post URL; use user/posts to list everything one account has posted.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Bluesky post URL.","help":"Bluesky post URL.","example":"https://bsky.app/profile/espn.com/post/3lqdfq7fkvm2g"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/bluesky/search","method":"GET","platform":"bluesky","group":"Search","label":"Search","description":"Returns Bluesky posts matching a keyword, up to 100 per page, each with its text, author, like/comment/share counts, and when it was written.\n\nUse it to find posts by keyword across all of Bluesky; use user/posts when you already know the account.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":3,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search terms matched against post text.","help":"Search terms matched against post text.","example":"espresso"},{"name":"sort","required":false,"in":"query","type":"string","description":"`latest` (newest first, the default) or `top` (Bluesky's own top ranking, which favours popular posts over recent ones).","help":"Sort order: latest (default, newest first) or top, Bluesky's own popularity ranking.","enum":["latest","top"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only posts written at or after this time. ISO 8601 date (`2026-09-01`) or datetime with a timezone (`2026-09-01T00:00:00Z`); any other shape is rejected with a free 400.","help":"Only posts written at or after this time. ISO 8601 date or datetime with a timezone; other formats are rejected with a free 400."},{"name":"until","required":false,"in":"query","type":"string","description":"Only posts written before this time. Same format as `since`. Set it to the oldest `published_at` of your last call to fetch the next older batch; the boundary is compared to the second, so a post from that same second can repeat, and deduplicating on `post.id` removes it.","help":"Only posts written before this time, same format as since. Set it to the oldest published_at from your last call to page to older posts."},{"name":"lang","required":false,"in":"query","type":"string","description":"Only posts tagged with this language, as a code such as `en`, `ja` or `ko`.","help":"Only posts tagged with this language, as a code such as en, ja, or ko."},{"name":"author","required":false,"in":"query","type":"string","description":"Only posts by this account: a handle such as `espn.com` or a `did` such as `did:plc:...`. An account that does not exist returns an empty list.","help":"Only posts by this account, given as a handle (e.g. espn.com) or a did. A nonexistent account returns an empty list."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/douyin/search","method":"GET","platform":"douyin","group":"Search","label":"Search","description":"Returns Douyin videos matching a keyword: caption, creator, likes, comments, shares, saves, hashtags, music, cover image, and duration.\n\nUse it to find videos by keyword; use search/users to find creators instead.","credits":{"min":50,"max":1250},"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":0,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords, for example 美食 or coffee.","help":"Search keywords, for example food or coffee.","example":"美食"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Rows to return, 1 to 25. Default 10.","help":"Rows to return, 1-25 (default 10).","minimum":1,"maximum":25},{"name":"sort","required":false,"in":"query","type":"string","description":"Result ordering: relevance, most_liked, or latest. Default relevance.","help":"Result order: relevance, most_liked, or latest (default relevance).","enum":["relevance","most_liked","latest"]},{"name":"published","required":false,"in":"query","type":"string","description":"Recency window: all, day, week, or half_year. Default all.","help":"Recency window: all, day, week, or half_year (default all).","enum":["all","day","week","half_year"]},{"name":"duration","required":false,"in":"query","type":"string","description":"Length filter: all, under_1m, one_to_five_m, or over_5m. Default all.","help":"Video length filter: all, under_1m, one_to_five_m, or over_5m (default all).","enum":["all","under_1m","one_to_five_m","over_5m"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/douyin/profile","method":"GET","platform":"douyin","group":"Profile","label":"Profile","description":"Returns a Douyin creator's profile: nickname, Douyin ID, bio, avatar, follower and following counts, total likes received, video count, region, and verification.\n\nUse it to check a creator's follower count cheaply; use profile/posts for their videos.","credits":60,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":1,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Douyin sec_uid, the MS4wLjAB... string in a profile URL, or the numeric user ID.","help":"Douyin sec_uid, the MS4wLjAB... string in a profile URL, or the numeric user ID.","one_of_group":"handle|url|id"},{"name":"url","required":false,"in":"query","type":"string","description":"Full Douyin profile URL, for example https://www.douyin.com/user/MS4wLjABAAAA...","help":"Full Douyin profile URL, e.g. https://www.douyin.com/user/MS4wLjABAAAA...","example":"https://www.douyin.com/user/MS4wLjABAAAAtxsy7VmVkU3RN9oIX0vdkh_6-LlQAb0gwI-tDf-bYNg","one_of_group":"handle|url|id"},{"name":"id","required":false,"in":"query","type":"string","description":"Numeric Douyin user ID.","help":"Numeric Douyin user ID.","one_of_group":"handle|url|id"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/douyin/profile/posts","method":"GET","platform":"douyin","group":"Profile","label":"Profile/Posts","description":"Returns a Douyin creator's recent videos, newest first: caption, likes, comments, shares, saves, hashtags, music, and cover image.\n\nUse it to pull a creator's recent videos; use profile when you only need their follower count.","credits":{"min":50,"max":1250},"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":2,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Douyin sec_uid, the MS4wLjAB... string in a profile URL, or the numeric user ID.","help":"Douyin sec_uid, the MS4wLjAB... string in a profile URL, or the numeric user ID.","one_of_group":"handle|url|id"},{"name":"url","required":false,"in":"query","type":"string","description":"Full Douyin profile URL.","help":"Full Douyin profile URL.","example":"https://www.douyin.com/user/MS4wLjABAAAAtxsy7VmVkU3RN9oIX0vdkh_6-LlQAb0gwI-tDf-bYNg","one_of_group":"handle|url|id"},{"name":"id","required":false,"in":"query","type":"string","description":"Numeric Douyin user ID.","help":"Numeric Douyin user ID.","one_of_group":"handle|url|id"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Rows to return, 1 to 25. Default 10.","help":"Rows to return, 1-25 (default 10).","minimum":1,"maximum":25},{"name":"recent_days","required":false,"in":"query","type":"integer","description":"Only return videos published in the last N days. Leave unset for the newest regardless of age.","help":"Only return videos published in the last N days. Leave unset for the newest regardless of age.","minimum":1,"maximum":3650},{"name":"exclude_pinned","required":false,"in":"query","type":"boolean","description":"Set true to skip videos pinned to the top of the profile, which can be old.","help":"Set true to skip videos pinned to the top of the profile, which can be old."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/douyin/post","method":"GET","platform":"douyin","group":"Post","label":"Post","description":"Returns one Douyin video: caption, creator, likes, comments, shares, saves, hashtags, music, duration, dimensions, cover image, and tagged place when set.\n\nUse it when you have a video URL or aweme ID and need the full record; search returns only a summary row.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Douyin video URL, for example https://www.douyin.com/video/7681266289940544369, or the bare numeric aweme ID.","help":"Douyin video URL, e.g. https://www.douyin.com/video/7681266289940544369, or the bare numeric aweme ID.","example":"https://www.douyin.com/video/7681266289940544369"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/douyin/post/comments","method":"GET","platform":"douyin","group":"Post","label":"Post/Comments","description":"Returns top-level comments on a Douyin video: text, commenter, like count, reply count, IP region, and whether the creator liked it.\n\nUse it to read a video's top-level comments; use comment/replies for the thread under one of them.","credits":{"min":20,"max":1000},"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Douyin video URL or the bare numeric aweme ID.","help":"Douyin video URL or the bare numeric aweme ID.","example":"https://www.douyin.com/video/7681266289940544369"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Comments to return, 1 to 100. Default 20.","help":"Comments to return, 1-100 (default 20).","minimum":1,"maximum":100},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/douyin/comment/replies","method":"GET","platform":"douyin","group":"Comment","label":"Comment/Replies","description":"Returns the reply thread under one Douyin comment: text, replier, like count, IP region, and verification, each tagged with the parent comment id.\n\nUse it after post/comments, passing a comment id whose reply count is above zero.","credits":{"min":50,"max":2500},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Douyin video URL or the bare numeric aweme ID the comment sits under.","help":"Douyin video URL or the bare numeric aweme ID the comment sits under.","example":"https://www.douyin.com/video/7681266289940544369"},{"name":"comment_id","required":true,"in":"query","type":"string","description":"The comment to expand, taken from the id field of a GET /v1/douyin/post/comments row. Only comments with a non-zero engagement.replies have a thread.","help":"Comment ID to expand, from the id field of a post/comments row. Only comments with replies above zero have a thread.","example":"7682735175344833317"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Replies to return, 1 to 50. Default 10.","help":"Replies to return, 1-50 (default 10).","minimum":1,"maximum":50},{"name":"cursor","required":false,"in":"query","type":"string","description":"Continuation token from a previous response's pagination block. Omit for the first page.","help":"Continuation token from the previous response's pagination block. Omit for the first page."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/douyin/search/users","method":"GET","platform":"douyin","group":"Search","label":"Search/Users","description":"Returns Douyin creators matching a keyword: nickname, Douyin ID, bio, follower count, total likes received, avatar, profile URL, and verification label.\n\nUse it to shortlist creators by keyword, follower band, or account type; use search to find videos instead.","credits":{"min":50,"max":1250},"tier":"advanced","paginates":true,"cache_ttl_seconds":3600,"order":6,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords, for example 美食 or a brand name.","help":"Search keywords, for example a topic or a brand name.","example":"美食"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Rows to return, 1 to 25. Default 10.","help":"Rows to return, 1-25 (default 10).","minimum":1,"maximum":25},{"name":"cursor","required":false,"in":"query","type":"string","description":"Continuation token from a previous response's pagination block. Omit for the first page.","help":"Continuation token from the previous response's pagination block. Omit for the first page."},{"name":"followers","required":false,"in":"query","type":"string","description":"Follower band: all, under_1k, 1k_to_10k, 10k_to_100k, 100k_to_1m, or over_1m. Default all.","help":"Follower band: all, under_1k, 1k_to_10k, 10k_to_100k, 100k_to_1m, or over_1m (default all).","enum":["all","under_1k","1k_to_10k","10k_to_100k","100k_to_1m","over_1m"]},{"name":"user_type","required":false,"in":"query","type":"string","description":"Account type: all, regular_user, enterprise_verified, or individual_verified. Default all.","help":"Account type: all, regular_user, enterprise_verified, or individual_verified (default all).","enum":["all","regular_user","enterprise_verified","individual_verified"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/douyin/trending","method":"GET","platform":"douyin","group":"Trending","label":"Trending","description":"Returns the live Douyin hot-search board: roughly 50 trending topics with rank, hot value, view count, video count, and the time each topic broke.\n\nUse it to see what is trending across Douyin right now; there is no keyword filter, the whole board comes back in one call.","credits":250,"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":7,"params":[{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/profile","method":"GET","platform":"facebook","group":"Profile","label":"Profile","description":"Returns a Facebook page's public profile: page id, display name, profile image, bio, follower count, and page-like count.\n\nUse it when you have a page URL and want a quick snapshot before pulling that page's posts, photos, or reels.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Facebook page or profile","help":"Full URL of the Facebook page or profile.","example":"https://www.facebook.com/Meta"},{"name":"get_business_hours","required":false,"in":"query","type":"string","description":"Get the business's hours","help":"Include the business's opening hours in the response."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/profile/posts","method":"GET","platform":"facebook","group":"Profile","label":"Profile/Posts","description":"Returns recent posts from a Facebook page or profile, each with the post text, like and comment counts, the per-reaction breakdown, media, and publish time. Share counts are null on a plain call.\n\nUse it to pull a page's recent content by url or pageId. The optional include=engagement fills each row's share count, and a reel's exact views and duration, in the same call.","credits":{"min":10,"max":40},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the Facebook page or profile to fetch posts for","help":"Full URL of the Facebook page or profile to fetch posts for.","example":"https://www.facebook.com/Meta","one_of_group":"url|pageId"},{"name":"pageId","required":false,"in":"query","type":"string","description":"Facebook profile page id","help":"Facebook profile or page ID.","one_of_group":"url|pageId"},{"name":"since","required":false,"in":"query","type":"string","description":"Only posts published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older posts are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Pinned posts sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.","help":"Only include posts published on or after this date: YYYY-MM-DD or a full ISO 8601 timestamp. Pinned posts are always included regardless of date.","example":"2026-09-01"},{"name":"stop_at_id","required":false,"in":"query","type":"string","description":"The id (`post.id`) or URL (`post.url`) of the newest post you already hold. The page stops just before it: that post and everything after it are left off, `next_cursor` is not returned, and `pagination.stopped_at` is `known_id`. A pinned post never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. `pagination.stopped_at` is `end` when the list ran out first and `null` while there is more to walk.","help":"Post ID or URL of the newest post you already have. The page stops just before it, so you only get new posts. Pinned posts never count as the stop point."},{"name":"cursor","required":false,"in":"query","type":"string","description":"To paginate through the posts","help":"Cursor from the previous response, to get the next page of posts."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement` (one token only) to fill `post.engagement.shares` on every row, and `post.engagement.views` and `post.content.duration_seconds` on reels, in this one call. A row that links to an event rather than a post is not looked up. Without it the call is unchanged.","help":"Set to engagement to also include share counts (and, for reels, view count and duration) on every row in this call.","enum":["engagement"]},{"name":"recent_days","required":false,"in":"query","type":"integer","description":"Keep only posts published in the last N days (1 to 3650) and stop pagination once a page reaches older posts. Does not change the price of a page.","help":"Keep only posts published in the last N days, 1-3650.","minimum":1,"maximum":3650},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/post","method":"GET","platform":"facebook","group":"Post","label":"Post","description":"Returns one Facebook post in full: the post text, like, comment and share counts, a reactions breakdown, media attachments, and author info.\n\nUse it when you have a single post URL and need more than profile/posts gives, such as the reactions breakdown.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Facebook post","help":"Full URL of the Facebook post.","example":"https://www.facebook.com/Meta/posts/pfbid0kPiRpqdc4HcL5ZMP6ANbkTWvjKYTs1hGKdZwHbYjTo4SNX8hM2UvjQmHBjq4r3cvl"},{"name":"get_comments","required":false,"in":"query","type":"boolean","description":"Accepted for backwards compatibility and currently a NO-OP: this endpoint returns the same body with or without it.","help":"No effect; accepted for compatibility."},{"name":"get_transcript","required":false,"in":"query","type":"boolean","description":"Accepted for backwards compatibility and currently a NO-OP: this endpoint returns the same body with or without it. Use `/v1/facebook/post/transcript` for a video transcript.","help":"No effect; accepted for compatibility. For a video transcript, use the post transcript endpoint instead."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/post/comments","method":"GET","platform":"facebook","group":"Post","label":"Post/Comments","description":"Returns comments on a Facebook post, each with the commenter's name, comment text, like count, reply count, and creation time.\n\nUse it to read a post's discussion; it also returns the feedback_id and expansion_token that post/comment/replies needs.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the Facebook post to fetch comments for","help":"Full URL of the Facebook post to fetch comments for.","example":"https://www.facebook.com/Meta/videos/a-slightly-life-changing-story/1459847961114516/","one_of_group":"url|feedback_id"},{"name":"feedback_id","required":false,"in":"query","type":"string","description":"Using feedback_id (instead of url) will *really* speed up the request. You can get the feedback_id when you make a request to /v1/facebook/post.","help":"feedback_id from a prior call to the post endpoint. Using it instead of url speeds up the request significantly.","one_of_group":"url|feedback_id"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get more comments. Get 'cursor' from previous response.","help":"Cursor from the previous response, to get more comments."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/facebook/group/posts","method":"GET","platform":"facebook","group":"Group","label":"Group/Posts","description":"Returns posts from a Facebook group, 3 to 4 per page, each with the post text, reaction count, comment count, the per-reaction breakdown, and author info.\n\nUse it for group content, since profile/posts covers pages only. Facebook serves a group 3 to 4 posts per page, so a long history is many pages. Each page is billed as one call: quote a long walk with dry_run first. Send next_cursor back as cursor for older posts; each post's url works as the input to post and post/comments. Share counts are not on this surface; read one with post.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the Facebook group","help":"Full URL of the Facebook group.","example":"https://www.facebook.com/groups/2204685680","one_of_group":"url|group_id"},{"name":"group_id","required":false,"in":"query","type":"string","description":"The ID of the group","help":"Numeric Facebook group ID.","one_of_group":"url|group_id"},{"name":"sort_by","required":false,"in":"query","type":"string","description":"How to sort the posts. CHRONOLOGICAL_LISTINGS reads the group's listings feed and can stall on some groups (a group with no listings feed does not answer); use the default sort, or CHRONOLOGICAL for posts in date order.","help":"Sort order for posts: TOP_POSTS, RECENT_ACTIVITY, CHRONOLOGICAL, or CHRONOLOGICAL_LISTINGS (can stall on some groups).","enum":["TOP_POSTS","RECENT_ACTIVITY","CHRONOLOGICAL","CHRONOLOGICAL_LISTINGS"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get the next page of posts. Take it from `pagination.next_cursor` on the previous response.","help":"Cursor from the previous response, to get the next page of posts."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/group","method":"GET","platform":"facebook","group":"Group","label":"Group","description":"Returns a Facebook group's public record: name, description, member count, privacy, visibility, and creation date.\n\nUse it to identify a group by URL or group_id before calling group/posts for the recent posts.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the Facebook group.","help":"Full URL of the Facebook group.","example":"https://www.facebook.com/groups/2204685680","one_of_group":"url|group_id"},{"name":"group_id","required":false,"in":"query","type":"string","description":"Numeric Facebook group id.","help":"Numeric Facebook group ID.","one_of_group":"url|group_id"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/post/transcript","method":"GET","platform":"facebook","group":"Post","label":"Post/Transcript","description":"Returns the spoken words of a Facebook video post as a transcript, using Facebook's auto-generated captions.\n\nUse it when you need what was said in a video; post returns the caption text and engagement but not the speech.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":6,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Facebook video post","help":"Full URL of the Facebook video post.","example":"https://www.facebook.com/Meta/videos/a-slightly-life-changing-story/1459847961114516/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/profile/photos","method":"GET","platform":"facebook","group":"Profile","label":"Profile/Photos","description":"Returns a page or profile's photos, each with a photo id, permalink, full-size image URL, thumbnail, and accessibility caption when available.\n\nUse it for a page's photo gallery. The plain row carries no author, engagement or publish time, so add the optional include=details to fill them from each photo's own post in the same call.","credits":{"min":10,"max":90},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":7,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Facebook page or profile","help":"Full URL of the Facebook page or profile.","example":"https://www.facebook.com/Meta"},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `details` (one token only) to fill `post.author.display_name`, `post.author.avatar_url`, `author.id`, `post.engagement.likes`, `.comments` and `.shares`, and `post.published_at` on every photo in this one call. A photo inside a multi-photo post carries its own counts, not the post's. Without it the call is unchanged.","help":"Set to details to also include the author, engagement counts, and published date for every photo in this call.","enum":["details"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/profile/reels","method":"GET","platform":"facebook","group":"Profile","label":"Profile/Reels","description":"Returns a page or profile's reels, each with a reel id, description, thumbnail, permalink, publish time, and a rounded public view count.\n\nUse it for a cheap reel listing; when you need exact views plus likes, comments, and shares, use profile/reels/full instead.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":8,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Facebook page or profile","help":"Full URL of the Facebook page or profile.","example":"https://www.facebook.com/Meta"},{"name":"recent_days","required":false,"in":"query","type":"integer","description":"Keep only reels published in the last N days (1 to 3650) and stop pagination once a page reaches older reels. Does not change the price of a page.","help":"Keep only reels published in the last N days, 1-3650.","minimum":1,"maximum":3650},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/adlibrary/ad","method":"GET","platform":"facebook","group":"Adlibrary","label":"Adlibrary/Ad","description":"Returns one ad from the Facebook Ad Library: creative, CTA and link, run dates, display format, and the advertiser's page URL, likes and categories.\n\nUse it when you have an ad id or URL. Spend and reach are political-ads-only, and Facebook publishes no per-ad impression count.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":9,"params":[{"name":"id","required":false,"in":"query","type":"string","description":"Facebook Ad Library ad ID. Ad ids rotate as campaigns end, so take a current one from `/v1/facebook/adlibrary/company/ads` or `/v1/facebook/adlibrary/search/ads` rather than reusing an old one.","help":"Facebook Ad Library ad ID. IDs rotate as campaigns end, so pull a current one from the company or search ads endpoints.","example":"1702938977100376","one_of_group":"id|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Facebook Ad Library URL for the ad (`https://www.facebook.com/ads/library?id=...`). A page URL is rejected with a 400.","help":"Facebook Ad Library ad URL (https://www.facebook.com/ads/library?id=...). A page URL is rejected with a 400.","one_of_group":"id|url"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response","help":"Return a trimmed-down version of the response with fewer fields."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/adlibrary/company/ads","method":"GET","platform":"facebook","group":"Adlibrary","label":"Adlibrary/Company/Ads","description":"Returns the ads one company or page is running in the Facebook Ad Library, each with its creative, status, spend, and targeting info.\n\nUse it when you know the advertiser by pageId or company name; to find ads by keyword across advertisers, use adlibrary/search/ads.","credits":{"min":50,"max":350},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":10,"params":[{"name":"pageId","required":false,"in":"query","type":"string","description":"Facebook page ID of the advertiser","help":"Facebook page ID of the advertiser.","one_of_group":"pageId|companyName"},{"name":"companyName","required":false,"in":"query","type":"string","description":"The name of the company. Can either use this or pageId","help":"Advertiser's company name (e.g. Lululemon). Use this or pageId, not both.","example":"Lululemon","one_of_group":"pageId|companyName"},{"name":"country","required":false,"in":"query","type":"string","description":"This can only be one country. It has to be the 2 letter code for the country. It defaults to ALL.","help":"Two-letter country code to filter ads by. Defaults to all countries."},{"name":"status","required":false,"in":"query","type":"string","description":"Status of the ad. Defaults to ACTIVE.","help":"Ad status to filter by: ALL, ACTIVE, or INACTIVE. Defaults to ACTIVE.","enum":["ALL","ACTIVE","INACTIVE"]},{"name":"media_type","required":false,"in":"query","type":"string","description":"Media type of the ad. Defaults to ALL. Meme refers to ads with image and text. Not sure why they call it meme.","help":"Media type to filter by: ALL, IMAGE, VIDEO, MEME (image with text), IMAGE_AND_MEME, or NONE. Defaults to ALL.","enum":["ALL","IMAGE","VIDEO","MEME","IMAGE_AND_MEME","NONE"]},{"name":"language","required":false,"in":"query","type":"string","description":"Language to filter ads on. Needs to be 2 letter language code, ie EN, ES, FR, etc","help":"Two-letter language code to filter ads by (e.g. EN, ES, FR)."},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Sort by impressions (high to low), or Most Recent (relevancy_monthly_grouped). Defaults to impressions.","help":"Sort order: total_impressions (highest first) or relevancy_monthly_grouped (most recent). Defaults to impressions.","enum":["total_impressions","relevancy_monthly_grouped"]},{"name":"start_date","required":false,"in":"query","type":"string","description":"Start date to search for. Format: YYYY-MM-DD","help":"Start date to search from, format YYYY-MM-DD."},{"name":"end_date","required":false,"in":"query","type":"string","description":"End date to search for. Format: YYYY-MM-DD","help":"End date to search to, format YYYY-MM-DD."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to paginate through results","help":"Cursor from the previous response, to get the next page."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response","help":"Return a trimmed-down version of the response with fewer fields."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `audience` (one token only) to fill, on every ad that ran in the EU, `post.ext.ad.eu_total_reach`, `post.ext.ad.eu_reach_breakdown` (reach per EU country by age band and gender), `post.ext.ad.targets_eu`, `target_ages`, `target_gender` and `target_locations`. Without it the call is unchanged.","help":"Set to audience to add EU reach and age, gender and location targeting to ads that ran in the EU. Costs more per ad.","enum":["audience"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/adlibrary/search/ads","method":"GET","platform":"facebook","group":"Adlibrary","label":"Adlibrary/Search/Ads","description":"Returns Facebook Ad Library ads matching a keyword, each with its creative text, images, sponsor info, and running status.\n\nUse it to find ads across all advertisers by keyword; if you already know the advertiser, adlibrary/company/ads is more direct.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":3600,"order":11,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find ads in the Facebook Ad Library","help":"Search keyword or phrase to find ads in the Ad Library (e.g. artificial intelligence).","example":"artificial intelligence"},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Sort by impressions (high to low), or Most Recent (relevancy_monthly_grouped). Defaults to impressions.","help":"Sort order: total_impressions (highest first) or relevancy_monthly_grouped (most recent). Defaults to impressions.","enum":["total_impressions","relevancy_monthly_grouped"]},{"name":"search_type","required":false,"in":"query","type":"string","description":"If you want to search by exact phrase or not","help":"Match type: keyword_unordered for any word order, or keyword_exact_phrase for the exact phrase.","enum":["keyword_unordered","keyword_exact_phrase"]},{"name":"ad_type","required":false,"in":"query","type":"string","description":"Search for all ads or only political and issue ads","help":"Ad category to search: all ads, or only political and issue ads.","enum":["all","political_and_issue_ads"]},{"name":"country","required":false,"in":"query","type":"string","description":"This can only be one country. It has to be the 2 letter code for the country. It defaults to ALL.","help":"Two-letter country code to filter ads by. Defaults to all countries."},{"name":"status","required":false,"in":"query","type":"string","description":"Status of the ad. Defaults to ACTIVE.","help":"Ad status to filter by: ALL, ACTIVE, or INACTIVE. Defaults to ACTIVE.","enum":["ALL","ACTIVE","INACTIVE"]},{"name":"media_type","required":false,"in":"query","type":"string","description":"Media type of the ad. Defaults to ALL. Meme just means the ad has text and an image. No clue why they call it meme.","help":"Media type to filter by: ALL, IMAGE, VIDEO, MEME (image with text), IMAGE_AND_MEME, or NONE. Defaults to ALL.","enum":["ALL","IMAGE","VIDEO","MEME","IMAGE_AND_MEME","NONE"]},{"name":"start_date","required":false,"in":"query","type":"string","description":"Impressions start date. Needs to be in YYYY-MM-DD format.","help":"Only include ads with impressions on or after this date, format YYYY-MM-DD."},{"name":"end_date","required":false,"in":"query","type":"string","description":"Impressions end date. Needs to be in YYYY-MM-DD format.","help":"Only include ads with impressions on or before this date, format YYYY-MM-DD."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to paginate through results","help":"Cursor from the previous response, to get the next page."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response","help":"Return a trimmed-down version of the response with fewer fields."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/adlibrary/search/companies","method":"GET","platform":"facebook","group":"Adlibrary","label":"Adlibrary/Search/Companies","description":"Returns advertiser pages in the Facebook Ad Library matching a name, each with its page id, name, handle, verification badge and follower count.\n\nUse it to find an advertiser's pageId first, then pass that pageId to adlibrary/company/ads, which is also where you count their ads.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":12,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find companies in the Facebook Ad Library","help":"Search keyword or phrase to find companies in the Ad Library (e.g. Nike).","example":"Nike"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/profile/events","method":"GET","platform":"facebook","group":"Profile","label":"Profile/Events","description":"Returns a Facebook page's upcoming and past events, each with a title, link, the start time, the venue, the city, the rendered time line, and the cancelled, past and online flags.\n\nUse it for one page's own events; events covers a city. The start time sits on published_at and is often in the future. Optional include=details adds the description, hosts, cover and RSVP counts.","credits":{"min":10,"max":90},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":13,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the public Facebook page.","help":"Full URL of the public Facebook page.","example":"https://www.facebook.com/brickyardoldtown"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor returned by the previous response for pagination.","help":"Cursor from the previous response, to get the next page."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `details` (one token only) to fill, on every event in this one call, `post.ext.event.description`, `address`, `latitude`, `longitude`, `hosts`, `host_context_text`, `category`, `privacy`, `attendance_count`, `interested_count` and `going_count`, the cover image on `post.content.thumbnail_url`, and the RSVP counts on `post.engagement.views` (interested) and `.likes` (going). Without it the call is unchanged.","help":"Set to details to also include each event's description, coordinates, hosts, category, privacy, attendance, and interested/going RSVP counts in this call.","enum":["details"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/post/comment/replies","method":"GET","platform":"facebook","group":"Post","label":"Post/Comment/Replies","description":"Returns the replies under a single Facebook comment, each with the author name, reply text, like count, and creation time.\n\nUse it after post/comments: pass that response's feedback_id and expansion_token, which are not the comment id.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":14,"params":[{"name":"feedback_id","required":true,"in":"query","type":"string","description":"`feedback_id` from `/v1/facebook/post/comments` for the parent comment (this is NOT the comment ID).","help":"feedback_id value from the comments endpoint's response for the parent comment (not the comment's own ID)."},{"name":"expansion_token","required":true,"in":"query","type":"string","description":"`expansion_token` from `/v1/facebook/post/comments` for the parent comment.","help":"expansion_token value from the comments endpoint's response for the parent comment."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor returned by the previous response for pagination.","help":"Cursor from the previous response, to get the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/facebook/marketplace/location/search","method":"GET","platform":"facebook","group":"Marketplace","label":"Marketplace/Location/Search","description":"Returns Facebook Marketplace locations and cities matching a search term, each with its lat and lng coordinates.\n\nUse it first to turn a place name into coordinates, then pass those to marketplace/search.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":15,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Location search query (city or area name).","help":"Location to search, e.g. a city or area name (e.g. Los Angeles).","example":"Los Angeles"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/marketplace/search","method":"GET","platform":"facebook","group":"Marketplace","label":"Marketplace/Search","description":"Returns Facebook Marketplace listings near a lat/lng, each with title, price, location, photo, delivery types, and sold or live flags.\n\nUse it to find listings in an area; get lat and lng from marketplace/location/search, and de-duplicate by listing id since ordering can shift.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":16,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword (e.g., `bike`, `couch`).","help":"Search keyword (e.g. bike, couch).","example":"bike"},{"name":"lat","required":true,"in":"query","type":"string","description":"Latitude of the search location.","help":"Latitude of the search location (e.g. 40.7128).","example":"40.7128"},{"name":"lng","required":true,"in":"query","type":"string","description":"Longitude of the search location.","help":"Longitude of the search location (e.g. -74.0060).","example":"-74.0060"},{"name":"radius_km","required":false,"in":"query","type":"integer","description":"Search radius in kilometers.","help":"Search radius in kilometers."},{"name":"min_price","required":false,"in":"query","type":"integer","description":"Minimum listing price.","help":"Minimum listing price."},{"name":"max_price","required":false,"in":"query","type":"integer","description":"Maximum listing price.","help":"Maximum listing price."},{"name":"count","required":false,"in":"query","type":"integer","description":"Number of listings to return per page.","help":"Number of listings to return per page."},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Sort order for results.","help":"Sort order: suggested, distance_ascend, creation_time_descend, price_ascend, or price_descend.","enum":["suggested","distance_ascend","creation_time_descend","price_ascend","price_descend"]},{"name":"delivery_method","required":false,"in":"query","type":"string","description":"Delivery filter: local pickup only, shipping only, or all.","help":"Delivery filter: all, local_pickup, or shipping.","enum":["all","local_pickup","shipping"]},{"name":"condition","required":false,"in":"query","type":"string","description":"Filter listings by item condition.","help":"Item condition filter: new, used_like_new, used_good, or used_fair.","enum":["new","used_like_new","used_good","used_fair"]},{"name":"date_listed","required":false,"in":"query","type":"string","description":"Filter by listing recency (relative window or numeric day count).","help":"Listing recency filter: all, 1, 7, or 30 (days), or last_24_hours, last_7_days, last_30_days.","enum":["all","1","7","30","last_24_hours","last_7_days","last_30_days"]},{"name":"availability","required":false,"in":"query","type":"string","description":"Filter by listing status: `available`, `sold`, or `all`.","help":"Listing status filter: available, sold, or all.","enum":["available","sold","all"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Opaque pagination cursor returned by the previous response: forward as-is.","help":"Cursor from the previous response, to get the next page. Forward it as-is."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/marketplace/item","method":"GET","platform":"facebook","group":"Marketplace","label":"Marketplace/Item","description":"Returns one Facebook Marketplace listing: title, description, price, location, condition, photos, seller, and availability flags.\n\nUse it after marketplace/search when you need one listing in full, by numeric id or Marketplace URL.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":17,"params":[{"name":"id","required":false,"in":"query","type":"string","description":"Facebook Marketplace item ID (numeric).","help":"Facebook Marketplace item ID (numeric).","one_of_group":"id|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the Marketplace item.","help":"Full URL of the Facebook Marketplace item.","example":"https://www.facebook.com/marketplace/item/1656586118821988/","one_of_group":"id|url"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/events/search","method":"GET","platform":"facebook","group":"Events","label":"Events/Search","description":"Returns public Facebook events matching a keyword, each with name, date sentence, venue, cover photo, interested and going counts, and online and past flags.\n\nUse it to find events by topic anywhere; filter on is_past yourself, since the directory also returns events that have already happened.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":18,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Event name or keyword to search for.","help":"Event name or keyword to search for (e.g. dogs).","example":"dogs"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor returned by the previous response for pagination.","help":"Cursor from the previous response, to get the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/events","method":"GET","platform":"facebook","group":"Events","label":"Events","description":"Returns the events listed on a Facebook city or region events page, each with a title, link, cover image, the start time, the venue, and the going and interested counts.\n\nUse it to see what is on in a place, optionally narrowed by a time filter; use profile/events for one page's own events. The optional include=details adds the description, address and hosts.","credits":{"min":10,"max":130},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":19,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the city's Facebook Events page.","help":"Full URL of the city's Facebook Events page.","example":"https://www.facebook.com/events/explore/saint-petersburg-florida/111326725552547"},{"name":"time","required":false,"in":"query","type":"string","description":"Relative time window. Defaults to all time when omitted.","help":"Time window to filter events: today, this_week, or next_week. Defaults to all time.","enum":["today","this_week","next_week"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor returned by the previous response for pagination.","help":"Cursor from the previous response, to get the next page."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `details` (one token only) to fill, on every event in this one call, `post.ext.event.description`, `address`, `city`, `latitude`, `longitude`, `hosts`, `host_context_text`, `category`, `privacy`, `is_canceled` and `attendance_count`, and the host credit on `post.author.display_name`. Without it the call is unchanged.","help":"Set to details to also include each event's description, address, coordinates, hosts, category, privacy, cancellation status, and attendance count in this call.","enum":["details"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/event/details","method":"GET","platform":"facebook","group":"Event","label":"Event/Details","description":"Returns one Facebook event in full: title, description, start and end time, location, host, cover image, and RSVP counts when shown.\n\nUse it after events, events/search, or profile/events when a listing row is not enough, by event id or URL.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":20,"params":[{"name":"id","required":false,"in":"query","type":"string","description":"Facebook event ID (numeric).","help":"Facebook event ID (numeric).","one_of_group":"id|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the event.","help":"Full URL of the Facebook event.","example":"https://www.facebook.com/events/3819476484850108/","one_of_group":"id|url"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/adlibrary/ad/transcript","method":"GET","platform":"facebook","group":"Adlibrary","label":"Adlibrary/Ad/Transcript","description":"Returns the spoken words of a Facebook Ad Library video ad, from Facebook's captions when available or transcribed from the video itself.\n\nUse it when you need what an ad says out loud; adlibrary/ad returns the creative and spend but not the speech.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":21,"params":[{"name":"id","required":false,"in":"query","type":"string","description":"Facebook Ad Library ad ID. Ad ids rotate as campaigns end, so take a current one from `/v1/facebook/adlibrary/company/ads` rather than reusing an old one.","help":"Facebook Ad Library ad ID. IDs rotate as campaigns end, so pull a current one from the company ads endpoint.","one_of_group":"id|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Facebook Ad Library URL for the ad. A page URL is rejected with a 400.","help":"Facebook Ad Library ad URL. A page URL is rejected with a 400.","one_of_group":"id|url"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/profile/full","method":"GET","platform":"facebook","group":"Profile","label":"Profile/Full","description":"Use it instead of calling profile and profile/posts yourself; the profile still comes back even if the posts part fails.","credits":50,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":22,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full Facebook profile or page URL. One of the identity params is required.","help":"Full URL of the Facebook profile or page. Required unless another identity param is given.","example":"https://www.facebook.com/mrbeast"},{"name":"posts","required":false,"in":"query","type":"integer","description":"How many of the fetched recent posts to return and compute the metrics over (1-100, default 25).","help":"How many recent posts to fetch and compute metrics over, 1-100 (default 25). Larger values may span pages — pass posts_cursor back as cursor for the rest.","example":"25"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pass a prior response's posts_cursor to read the next page of posts.","help":"Cursor from a prior response's posts_cursor, to fetch the next page of posts."},{"name":"include","required":false,"in":"query","type":"string","description":"","help":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/profile/reels/full","method":"GET","platform":"facebook","group":"Profile","label":"Profile/Reels/Full","description":"Returns a page's reels with exact per-reel engagement merged in: views, likes, comments, and shares, plus each reel's id, thumbnail, and link.\n\nUse it instead of profile/reels when the numbers matter, since that list carries only a rounded view count and no likes or comments.","credits":{"min":50,"max":250},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":23,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Facebook page or profile","help":"Full URL of the Facebook page or profile.","example":"https://www.facebook.com/Meta"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from a prior response's next_cursor to page deeper.","help":"Cursor from a prior response's next_cursor, to page deeper."},{"name":"limit","required":false,"in":"query","type":"integer","description":"Return up to this many reels in one call (1-50). The endpoint pages the underlying list server-side until it has collected this many (or runs out), and bills per page read. Omit for a single page.","help":"How many reels to return in one call, 1-50. May take longer, since results are collected across multiple pages behind the scenes."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/search/posts","method":"GET","platform":"facebook","group":"Search","label":"Search/Posts","description":"Returns public Facebook posts matching a keyword, each with text, permalink, publish time, like count, comment count, and author.\n\nUse it when you have a phrase, not a page URL. recent_posts=true ranks by recency; start_date and end_date bound the window.","credits":{"min":10,"max":50},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":24,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keyword or phrase to search for.","help":"Keyword or phrase to search for (e.g. NASA).","example":"NASA"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response.","help":"Cursor from the previous response."},{"name":"start_date","required":false,"in":"query","type":"string","description":"Include posts on or after this date (YYYY-MM-DD).","help":"Only include posts on or after this date, format YYYY-MM-DD."},{"name":"end_date","required":false,"in":"query","type":"string","description":"Include posts on or before this date (YYYY-MM-DD).","help":"Only include posts on or before this date, format YYYY-MM-DD."},{"name":"recent_posts","required":false,"in":"query","type":"boolean","description":"When true, rank by recency instead of relevance.","help":"Rank results by most recent instead of relevance."},{"name":"location_uid","required":false,"in":"query","type":"string","description":"Facebook location id to scope the search.","help":"Facebook location ID to scope the search to a place."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5}],"available":true},{"path":"/v1/facebook/search/pages","method":"GET","platform":"facebook","group":"Search","label":"Search/Pages","description":"Returns Facebook pages matching a keyword, each with page id, display name, permalink, avatar, and verified flag.\n\nUse it to find pages by name; follower counts are not on this card, so take author.url to profile for the full page.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":25,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keyword or phrase to search for.","help":"Keyword or phrase to search for (e.g. NASA).","example":"NASA"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response.","help":"Cursor from the previous response."},{"name":"location_uid","required":false,"in":"query","type":"string","description":"Facebook location id to scope the search.","help":"Facebook location ID to scope the search to a place."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/search/people","method":"GET","platform":"facebook","group":"Search","label":"Search/People","description":"Returns Facebook people matching a keyword, each with profile id, display name, permalink, avatar, and verified flag.\n\nUse it to find people by name. The id is often a pfbid token, not a numeric user id, and follower counts are not on this card.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":26,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Name or phrase to search for.","help":"Name or phrase to search for (e.g. NASA).","example":"NASA"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response.","help":"Cursor from the previous response."},{"name":"location_uid","required":false,"in":"query","type":"string","description":"Facebook location id to scope the search to a city.","help":"Facebook location ID to scope the search to a city."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/search/videos","method":"GET","platform":"facebook","group":"Search","label":"Search/Videos","description":"Returns public Facebook videos matching a keyword, each with video id, caption, permalink, thumbnail, and author.\n\nUse it to find videos by phrase. View counts on this card are a display string and are not parsed into engagement.views.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":27,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keyword or phrase to search for.","help":"Keyword or phrase to search for (e.g. NASA).","example":"NASA"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response.","help":"Cursor from the previous response."},{"name":"start_date","required":false,"in":"query","type":"string","description":"Include videos on or after this date (YYYY-MM-DD).","help":"Only include videos on or after this date, format YYYY-MM-DD."},{"name":"end_date","required":false,"in":"query","type":"string","description":"Include videos on or before this date (YYYY-MM-DD).","help":"Only include videos on or before this date, format YYYY-MM-DD."},{"name":"recent_videos","required":false,"in":"query","type":"boolean","description":"When true, rank by recency instead of relevance.","help":"Rank results by most recent instead of relevance."},{"name":"location_uid","required":false,"in":"query","type":"string","description":"Facebook location id to scope the search.","help":"Facebook location ID to scope the search to a place."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/facebook/search/groups","method":"GET","platform":"facebook","group":"Search","label":"Search/Groups","description":"Returns public Facebook groups matching your keywords, one row per group, with the group's name, id and URL in the same shape the group endpoints take.\n\nUse it when you need to find the groups to read before pulling their posts. Add include=details for member counts, descriptions and privacy.","credits":{"min":10,"max":110},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":28,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keywords describing the groups to find, for example `vintage cars`. Keywords only: the search is already limited to public Facebook groups, so a `site:` operator is refused before billing.","help":"Keywords describing the groups to find (e.g. vintage cars). Search is limited to public groups; site: operators aren't allowed.","example":"vintage cars"},{"name":"page","required":false,"in":"query","type":"integer","description":"Page number, starting at 1. Forwarding `pagination.next_cursor` as `cursor` does the same.","help":"Page number, starting at 1.","minimum":1},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `details` (one token only) to fill, on every group in this one call, `author.followers` (members), `author.bio` (the description), `author.joined_at`, `author.ext.group.privacy_label`, `visibility_label`, `activity` and `id` (the numeric group id), and the name where it was null. Without it the call is unchanged.","help":"Set to details to also include each group's member count, description, join date, privacy, and activity level in this call.","enum":["details"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/instagram/profile","method":"GET","platform":"instagram","group":"Profile","label":"Profile","description":"Returns an Instagram account's public profile: bio, exact integer follower count on author.followers, following count, picture URL, verification, and author.ext.public_email from the bio.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Instagram username without the @ symbol","help":"Instagram username, without the @ symbol.","example":"instagram"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true to get a trimmed response","help":"Return a smaller, lighter response with fewer fields."},{"name":"contact_email","required":false,"in":"query","type":"string","description":"Optional. When 1, also returns author.ext.contact_email: when the bio lists two or more email addresses, the one the creator gives for contacting them personally, copied verbatim from the bio. Null when there is one address or none, when every address belongs to a manager, agency or brand, or when the choice was not confident. author.ext.public_email is unchanged. No extra credits.","help":"Set to 1 to also try to pick out the creator's personal contact email when the bio lists multiple addresses. No extra cost.","enum":["1"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/profile/about","method":"GET","platform":"instagram","group":"Profile","label":"Profile/About","description":"Returns Instagram's \"About this account\" details for a public account (country, month joined, published contact) plus its follower count and lifetime post count.\n\nUse it when you need an account's total post count, or to tell where a creator is based, for example to include or exclude a region.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":1,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Instagram username without the @ symbol","help":"Instagram username, without the @ symbol.","example":"instagram"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/profile/posts","method":"GET","platform":"instagram","group":"Profile","label":"Profile/Posts","description":"Returns a user's recent posts with caption, like and comment counts, media URL, media type, and timestamp; share counts are not included. Collab posts list every co-author under ext.coauthors.\n\nUse it for a plain feed pull; profile/posts/full adds per-post share counts. On a collab post the author is whoever created it, so read ext.coauthors for everyone on it.","credits":{"min":10,"max":130},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Instagram username without the @ symbol","help":"Instagram username, without the @ symbol.","example":"instagram"},{"name":"since","required":false,"in":"query","type":"string","description":"Only posts published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older posts are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Pinned posts sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.","help":"Only include posts published on or after this date: YYYY-MM-DD or a full ISO 8601 timestamp. Pinned posts are always included regardless of date.","example":"2026-09-01"},{"name":"stop_at_id","required":false,"in":"query","type":"string","description":"The id (`post.id`) or URL (`post.url`) of the newest post you already hold. The page stops just before it: that post and everything after it are left off, `next_cursor` is not returned, and `pagination.stopped_at` is `known_id`. A pinned post never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. `pagination.stopped_at` is `end` when the list ran out first and `null` while there is more to walk.","help":"Post ID or URL of the newest post you already have. The page stops just before it, so you only get new posts. Pinned posts never count as the stop point."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true to request the lighter record. That record is the narrow width described above, so the page is normally served from the second source with every field. A trimmed page served as it is omits `post.ext.coauthors` and leaves `post.flags.pinned` null. The price is the same either way.","help":"Return a lighter record. Omits coauthors and the pinned flag; the price is the same."},{"name":"exclude_pinned","required":false,"in":"query","type":"boolean","description":"Set to true to leave out the posts the owner pinned to the top of the profile. A row whose pin state is unknown, such as a narrow or trimmed row, is kept.","help":"Set to true to leave out posts pinned to the top of the profile."},{"name":"recent_days","required":false,"in":"query","type":"integer","description":"Keep only posts published in the last N days (1 to 3650). Older posts are removed from the page, pinned ones included, and once a page reaches posts older than the window `next_cursor` is not returned, so a walk back to a date window stops on its own. The page still costs what a page costs.","help":"Only include posts from the last N days (1-3650). Paging stops automatically once results fall outside the window.","minimum":1,"maximum":3650},{"name":"include","required":false,"in":"query","type":"string","description":"Photos and carousels are never looked up.","help":"Set to audio to also fetch each video/reel's audio track info. Adds a few seconds.","enum":["audio"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/instagram/post","method":"GET","platform":"instagram","group":"Post","label":"Post","description":"Returns one post's details: caption, view count on videos and reels, like and comment counts, media URLs, media type, the author, and any tagged users.\n\nUse it for the standard single post lookup, views included on video; use post/stats only when you also need the share count.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Instagram post","help":"Full URL of the Instagram post.","example":"https://www.instagram.com/p/DcCH2ZygIiP/"},{"name":"region","required":false,"in":"query","type":"string","description":"2 letter country code to set the proxy in","help":"Two-letter country code (e.g. US, GB) to fetch the post as seen from that country."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true to get a trimmed response","help":"Return a smaller, lighter response with fewer fields."},{"name":"download_media","required":false,"in":"query","type":"boolean","description":"Set to true to also download the video/images and get back durable hosted media URLs under `data.post.ext.download_media_urls` (`[{ post_id, cdn_url, type, cached }]`). Use these for archiving; the raw `media_urls` are short-lived signed CDN links that expire. Adds a few seconds of latency while the media is fetched.","help":"Also save the video/images and return long-lived media links instead of short-lived CDN ones. Adds a few seconds; unavailable on age-restricted posts."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/post/comments","method":"GET","platform":"instagram","group":"Post","label":"Post/Comments","description":"Returns a post's comments, each with its text, author, like count, reply count, and time, ranked by popularity by default or newest first.\n\nUse it to read the comment section of one post, paging deeper with the cursor it returns; pass sort=recent for newest first.","credits":{"min":50,"max":150},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"URL of the Instagram post (a /p/, /reel/, /reels/, or /tv/ link).","help":"URL of the Instagram post (/p/, /reel/, /reels/, or /tv/ link).","example":"https://www.instagram.com/p/DXidPIVDU6M/"},{"name":"sort","required":false,"in":"query","type":"string","description":"Ordering: `top` (default) ranks by Instagram's popularity order (most-liked first); `recent` returns newest-first. Use `recent` when you are paging through a whole thread: Instagram ranks only the most-liked head, so a `top` walk starts repeating comments once you page past it.","help":"Comment order: top (default, most-liked first) or recent (newest first). Use recent when paging a whole thread, since top only ranks the most-liked head.","enum":["top","recent"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor. Use the `next_cursor` from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"safe_url","required":false,"in":"query","type":"boolean","description":"When true, returns URL-safe profile picture links suitable for embedding.","help":"Return URL-safe profile picture links suitable for embedding."},{"name":"scan_pages","required":false,"in":"query","type":"integer","description":"Optional, 1 to 3, default 1. With 2 or 3, the call reads that many pages, drops comments repeated across pages, and returns them all sorted by likes (sort=top) or newest first (sort=recent). Use it when the first page of a top-sorted thread is low-like comments.","help":"Pages to read and merge, 1-3 (default 1). Use 2 or 3 when the first page's top comments have low likes; duplicates across pages are removed.","minimum":1,"maximum":3},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/instagram/comment","method":"GET","platform":"instagram","group":"Comment","label":"Comment","description":"Returns one comment's current text, like count, reply count, author, and timestamp, plus the post's total comment count for context.\n\nUse it when you already know which comment you want, so you do not have to page through post/comments to find it again.","credits":{"min":50,"max":150},"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"comment_url","required":false,"in":"query","type":"string","description":"An Instagram comment permalink: `https://www.instagram.com/p/{shortcode}/c/{commentId}/` (or a reply permalink `.../c/{parent}/r/{reply}/`, best-effort). Mutually exclusive with `post_url`+`comment_id`.","help":"Full comment permalink (e.g. https://www.instagram.com/p/{shortcode}/c/{commentId}/), or a reply link. Use this or post_url with comment_id, not both.","example":"https://www.instagram.com/p/CnpPou9hWqq/c/18007013966365752/","one_of_group":"comment_url|post_url"},{"name":"post_url","required":false,"in":"query","type":"string","description":"The post URL (a `/p/`, `/reel/`, `/reels/`, or `/tv/` link). Combine with `comment_id`, or with `author_username`/`text_contains` for a search.","help":"URL of the post (/p/, /reel/, /reels/, or /tv/ link). Combine with comment_id, or with author_username/text_contains to search.","one_of_group":"comment_url|post_url"},{"name":"comment_id","required":false,"in":"query","type":"string","description":"The target comment's numeric id (`pk`). Requires `post_url`.","help":"Numeric ID of the target comment. Requires post_url."},{"name":"author_username","required":false,"in":"query","type":"string","description":"Return up to `max` comments authored by this username (no comment id needed). Mutually exclusive with `text_contains` and any comment id.","help":"Username to filter comments by, up to the max count. Don't combine with text_contains or a comment ID."},{"name":"text_contains","required":false,"in":"query","type":"string","description":"Return up to `max` comments whose text contains this snippet (case-insensitive). Mutually exclusive with `author_username` and any comment id.","help":"Text snippet to match in comments (case-insensitive), up to the max count. Don't combine with author_username or a comment ID."},{"name":"deep_scan","required":false,"in":"query","type":"boolean","description":"Widen the scan budget for deeply-buried comments (raises the per-chain page ceiling and deadline).","help":"Search more comment pages for hard-to-find comments; slower but more thorough."},{"name":"position_hint","required":false,"in":"query","type":"string","description":"Opaque token from a prior lookup's `lookup.position_hint`. Passing it back replays just the last-known sort chain first, making a re-check of an already-found comment cheap.","help":"Token from a previous lookup's response, to quickly re-check that same comment."},{"name":"max","required":false,"in":"query","type":"integer","description":"For `author_username`/`text_contains` search: max matches to return (1-20, default 5).","help":"Max matching comments to return for a username/text search, 1-20 (default 5)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/basic-profile","method":"GET","platform":"instagram","group":"Basic profile","label":"Basic Profile","description":"Returns a minimal Instagram profile looked up by numeric user id: username, full name, and profile picture.\n\nUse it when all you have is a numeric user id and only need the name and avatar; use profile for bio, follower counts, and verification.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":6,"params":[{"name":"userId","required":true,"in":"query","type":"string","description":"Instagram numeric user ID","help":"Instagram numeric user ID.","example":"314216"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/profile/reels","method":"GET","platform":"instagram","group":"Profile","label":"Profile/Reels","description":"Returns a user's reels with view, like and comment counts and a thumbnail; share counts are not included here. Collab reels list every co-author under ext.coauthors.\n\nUse it for reels only rather than the whole post feed; use profile/reels/full when you also need per-reel share counts.","credits":{"min":10,"max":140},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":7,"params":[{"name":"user_id","required":false,"in":"query","type":"string","description":"Instagram user id. Use this for faster response times.","help":"Instagram user ID. Faster than using a username.","one_of_group":"user_id|handle"},{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username without the @ symbol","help":"Instagram username, without the @ symbol.","example":"mrbeast","one_of_group":"user_id|handle"},{"name":"since","required":false,"in":"query","type":"string","description":"Only reels published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older reels are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Pinned reels sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.","help":"Only include reels published on or after this date (YYYY-MM-DD or ISO 8601). Pinned reels are always included regardless of date.","example":"2026-09-01"},{"name":"stop_at_id","required":false,"in":"query","type":"string","description":"The id (`post.id`) or URL (`post.url`) of the newest reel you already hold. The page stops just before it: that reel and everything after it are left off, `next_cursor` is not returned, and `pagination.stopped_at` is `known_id`. A pinned reel never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. `pagination.stopped_at` is `end` when the list ran out first and `null` while there is more to walk.","help":"ID or URL of the newest reel you already have. Paging stops just before it, excluding it and everything after; pinned reels are never the stop point."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true to request the lighter record: a smaller, faster page that keeps the engagement, the author, the caption, the timestamp and the reel URL. What it drops is `post.content.media_urls` (the video file), `post.content.duration_seconds`, `post.ext.coauthors` and `post.flags.pinned`. The cover image is returned as `post.content.thumbnail_url` either way. Leave it unset when you need the video URL or the duration.","help":"Return a lighter response without the video URL, duration, coauthors, or pinned flag. Leave unset if you need the video URL or duration."},{"name":"exclude_pinned","required":false,"in":"query","type":"boolean","description":"Set to true to leave out the posts the owner pinned to the top of the profile. A row whose pin state is unknown, which is every row with trim=true, is kept.","help":"Leave out posts pinned to the top of the profile. Rows with an unknown pin state (e.g. when trim is on) are always kept."},{"name":"recent_days","required":false,"in":"query","type":"integer","description":"Keep only posts published in the last N days (1 to 3650). Older posts are removed from the page, pinned ones included, and once a page reaches posts older than the window `next_cursor` is not returned, so a walk back to a date window stops on its own. The page still costs what a page costs.","help":"Only include posts from the last N days (1-3650). Paging stops automatically once results fall outside the window.","minimum":1,"maximum":3650},{"name":"include","required":false,"in":"query","type":"string","description":"`stats` returns the full stat line on every reel: `engagement.shares`, `engagement.saves` and `post.ext.repost_count` beside views, likes, comments, the remix counter, `post.ext.music_id` for original sounds and licensed music alike, and `post.ext.audio_cluster_id`, Instagram's audio cluster for the reel. It is served by a second source, so a cursor from a request without it cannot continue a walk with it; start from page 1. Both tokens can be combined (`include=audio,stats`).","help":"Set to stats to also fetch shares, saves, repost count, music ID and audio cluster for every reel. Start from page 1, not an existing cursor."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/instagram/highlights","method":"GET","platform":"instagram","group":"Highlights","label":"Highlights","description":"Returns a user's saved story highlight collections, each with its title, cover image, and the number of items inside.\n\nUse it to list the highlight collections on a profile, then pass one of the ids to highlight/detail to open it.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":8,"params":[{"name":"user_id","required":false,"in":"query","type":"string","description":"Instagram user id. Use for faster response times.","help":"Instagram user ID. Faster than using a username.","one_of_group":"user_id|handle"},{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username without the @ symbol","help":"Instagram username, without the @ symbol.","example":"instagram","one_of_group":"user_id|handle"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/highlight/detail","method":"GET","platform":"instagram","group":"Highlight","label":"Highlight/Detail","description":"Returns the individual stories saved inside one highlight, with their media URLs, timestamps, and interaction counts.\n\nUse it after highlights: pass the id it returned to see the contents of a single collection.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":9,"params":[{"name":"id","required":true,"in":"query","type":"string","description":"Instagram highlight ID: the numeric id, with or without the `highlight:` prefix. Get it from `/v1/instagram/highlights`.","help":"Numeric highlight ID, with or without the highlight: prefix. Get it from the user highlights endpoint.","example":"18067016518767507"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/search/reels","method":"GET","platform":"instagram","group":"Search","label":"Search/Reels","description":"Returns reels matching a keyword, each with its view count, like count, and author; share and save counts are not included on this endpoint.\n\nUse it for keyword based reel discovery; search/hashtag is the better choice when you have a specific tag rather than a phrase. Pass a result URL to post/stats for a reel's share count.","credits":{"min":10,"max":650},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":10,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find Instagram reels","help":"Search keyword or phrase to find Instagram reels.","example":"workout routine"},{"name":"date_posted","required":false,"in":"query","type":"string","description":"Date posted","help":"Only include reels posted within this time range: last-week, last-month, or last-year.","enum":["last-week","last-month","last-year"]},{"name":"page","required":false,"in":"query","type":"integer","description":"The page number to return.","help":"Page number of results to return."},{"name":"region","required":false,"in":"query","type":"string","description":"Two-letter market code (ES, MX, DE, BR, KR, FR) to localise the results. Instagram does not rank search by country, so the market's own name is appended to your query (`fitness` with `ES` searches `fitness españa`), unless the query already names the market or is already written in the market's own script (Hangul for KR), which Instagram localises by itself. It favours creators from the market but does not promise that every creator is from it; send `country` for that. For a topic about a place, such as eSIMs or travel, a phrasing locals use works better (`esim móvil` rather than `esim`). Same price as a plain call. Only these markets are supported; any other code is refused with the list, at no charge. A typo is a free 400.","help":"Two-letter market code (ES, MX, DE, BR, KR, FR) to tilt results toward that market. Same price as a plain call.","enum":["ES","MX","DE","BR","KR","FR"]},{"name":"include","required":false,"in":"query","type":"string","description":"Send `creator` to add each reel's creator card, read from the creator's About this account panel: `post.ext.author_country`, `author_followers`, `author_following`, `author_posts_count`, `author_public_email` and `author_public_phone`, plus the creator's name, avatar and verified flag where the row lacks them. `author_country` is the country the creator declares there, not where the reel was filmed; it is null when Instagram does not publish one, and nothing is guessed. A typo is a free 400.","help":"Set to creator to add each reel creator's country, follower counts, public email and phone. Billed per creator looked up.","enum":["creator"]},{"name":"country","required":false,"in":"query","type":"string","description":"Two-letter market code (ES, MX, DE, BR, KR, FR) to keep only reels whose creator is based in that market. When no row matches, the page is `items: []` with the warning `country_no_match`, and the lookups are still billed. A page left empty only because the creator lookups failed costs nothing. Works with `max_pages`. A typo is a free 400.","help":"Two-letter market code (ES, MX, DE, BR, KR, FR) to keep only reels whose creator is based there. Adds the creator card.","enum":["ES","MX","DE","BR","KR","FR"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/instagram/media/transcript","method":"GET","platform":"instagram","group":"Media","label":"Media/Transcript","description":"Returns the spoken words in an Instagram video or reel of up to 2 minutes as text. A video with no speech returns 404 with reason no_speech, free of charge.\n\nUse it when you need what was said in a video rather than its metrics; pass the reel or video URL. Photo posts and videos over 2 minutes cannot be transcribed.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":11,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Instagram video or reel (a `/reel/`, `/p/` or `/tv/` link to a video post). Photo posts have no audio to transcribe.","help":"Full URL of the Instagram video or reel. Photo posts have no audio to transcribe.","example":"https://www.instagram.com/reel/DHsD6HGqJhp/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/media/screen-text","method":"GET","platform":"instagram","group":"Media","label":"Media/Screen Text","description":"Returns the text shown on an Instagram post's images, read by AI: the photo, each carousel slide up to 10, or a reel's cover frame, with results per slide.\n\nUse it for text designed into a post, like carousel headlines; the caption lives on post and spoken words on media/transcript. Text shown later in a reel is not read.","credits":{"min":50,"max":50},"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":12,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Instagram post, reel or video (a `/p/`, `/reel/`, `/reels/` or `/tv/` link)","help":"Full URL of the Instagram post, reel, or video (/p/, /reel/, /reels/, or /tv/ link).","example":"https://www.instagram.com/p/DdEqEl5Dl-S/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/audio/reels","method":"GET","platform":"instagram","group":"Audio","label":"Audio/Reels","description":"Returns reels that use one specific audio track, each with its engagement counts and the account that posted it.\n\nUse it after search/music: pass the audio_id to see who is posting with that sound.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":14,"params":[{"name":"audio_id","required":true,"in":"query","type":"string","description":"Instagram audio ID: the numeric id from an instagram.com/reels/audio/{audio_id}/ URL","help":"Instagram audio ID — the numeric id from an instagram.com/reels/audio/{id}/ URL.","example":"1392969992841787"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor. Use the `next_cursor` from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/search/hashtag","method":"GET","platform":"instagram","group":"Search","label":"Search/Hashtag","description":"Returns public posts carrying a hashtag, each with shortcode, URL, caption, media URLs, engagement counts, and the author; share and save counts are not included.\n\nUse it to pull a hashtag feed; set type to top, recent, or clips to pick the ranking, and page deeper with the cursor it returns. Pass a result URL to post/stats for a share count.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":3600,"order":15,"params":[{"name":"hashtag","required":true,"in":"query","type":"string","description":"The hashtag to search for. The leading # is optional.","help":"Hashtag to search for. The leading # is optional.","example":"makeup"},{"name":"type","required":false,"in":"query","type":"string","description":"Ranking of the returned posts: `top` (default), `recent`, or `clips` (reels only). Only `recent` pages: `top` and `clips` are one ranked page each and return `has_more: false`.","help":"Ranking of returned posts: top (default), recent, or clips (reels only). Only recent can be paged further.","enum":["top","recent","clips"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor for `type=recent` only. Use the `next_cursor` from the previous response and send the same `type` again. `top` and `clips` return no cursor.","help":"Cursor from the previous response, for type=recent only. Send the same type along with it."},{"name":"safe_url","required":false,"in":"query","type":"boolean","description":"When true, returns URL-safe media links suitable for embedding.","help":"Return URL-safe media/image links suitable for embedding."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/search/profiles","method":"GET","platform":"instagram","group":"Search","label":"Search/Profiles","description":"Returns public profiles matching a keyword, each with username, display name, bio, follower and following counts, post count, and profile URL.\n\nUse it to find accounts by topic, keeping in mind it searches Google's index of Instagram rather than Instagram's own account search.","credits":{"min":10,"max":250},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":16,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Bio or caption keyword/phrase to search for.","help":"Bio or caption keyword or phrase to search for.","example":"yoga"},{"name":"cursor","required":false,"in":"query","type":"string","description":"The cursor returned by the previous response. In this version it is the next Google results page number.","help":"Cursor from the previous response: the next results page number."},{"name":"include","required":false,"in":"query","type":"string","description":"A typo is a free 400.","help":"Set to about to also fetch each profile's About page info.","enum":["about"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Cap the rows served, and with `include=about` the credits held. 1 to 12. Default 8 when the token is present so the hold is 17, not 25.","help":"Cap the number of rows returned, 1-12. Defaults to 8 when include=about is set.","minimum":1,"maximum":12},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/reels/trending","method":"GET","platform":"instagram","group":"Reels","label":"Reels/Trending","description":"Returns reels from Instagram's public trending page, each with shortcode, URL, caption, media URLs, engagement counts where shown, and the account.\n\nUse it to sample global trends; it takes no region. Call again to see more. For one region, page location/posts after search/location.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":17,"params":[{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/followers","method":"GET","platform":"instagram","group":"Followers","label":"Followers","description":"Returns the accounts that follow a user, each with username, display name, avatar URL, verification status, and profile URL.\n\nUse it to walk an account's follower list, passing either handle or user_id and paging deeper with the cursor it returns.","credits":{"min":50,"max":100},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":18,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username without the @ symbol.","help":"Instagram username, without the @ symbol.","example":"mrbeast","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Instagram numeric user ID. Use this for faster responses.","help":"Instagram numeric user ID. Faster than using a username.","one_of_group":"handle|user_id"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor. Use the `next_cursor` from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"coverage","required":false,"in":"query","type":"string","description":"Send `full` to walk a merged list: accounts are added from several reads of the list and no account appears twice inside a page, until the rows reach the profile's count in `data.total`. On the pages one source covered on its own a handful of accounts can repeat across consecutive pages; wherever that source cannot cover the list the merged walk runs instead, and it never returns an account it has already given you. Requires `handle`. A page usually takes about 8 seconds and can take up to about 45, and a `503` is retried with the same cursor. A cursor from this mode only continues this mode.","help":"Set to full to walk a merged, deduplicated list up to the profile's total follower/following count. Requires handle; pages can take up to ~45 seconds.","enum":["full"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/following","method":"GET","platform":"instagram","group":"Following","label":"Following","description":"Returns the accounts a user follows, each with username, display name, avatar URL, verification status, and profile URL.\n\nUse it for the other side of the graph from followers: the accounts this user chose to follow.","credits":{"min":50,"max":100},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":19,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username without the @ symbol.","help":"Instagram username, without the @ symbol.","example":"mrbeast","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Instagram numeric user ID. Use this for faster responses.","help":"Instagram numeric user ID. Faster than using a username.","one_of_group":"handle|user_id"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor. Use the `next_cursor` from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"coverage","required":false,"in":"query","type":"string","description":"Send `full` to walk a merged list: accounts are added from several reads of the list and no account appears twice inside a page, until the rows reach the profile's count in `data.total`. On the pages one source covered on its own a handful of accounts can repeat across consecutive pages; wherever that source cannot cover the list the merged walk runs instead, and it never returns an account it has already given you. Requires `handle`. A page usually takes about 8 seconds and can take up to about 45, and a `503` is retried with the same cursor. A cursor from this mode only continues this mode.","help":"Set to full to walk a merged, deduplicated list up to the profile's total follower/following count. Requires handle; pages can take up to ~45 seconds.","enum":["full"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/similar","method":"GET","platform":"instagram","group":"Similar","label":"Similar","description":"Returns the accounts Instagram suggests as similar to a given user, each with username, display name, avatar URL, verification status, and URL.\n\nUse it to find accounts comparable to one you already know; it returns a single fixed list and cannot be paged.","credits":{"min":50,"max":850},"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":20,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username without the @ symbol.","help":"Instagram username, without the @ symbol.","example":"mrbeast","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Instagram numeric user ID. Use this for faster responses.","help":"Instagram numeric user ID. Faster than using a username.","one_of_group":"handle|user_id"},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `profile` (one token only) to fill `author.followers`, `author.following` and `author.bio` on every row in this one call, plus `author.posts_count` where the lookup has an exact total. The hydrated list is its top 20 accounts unless you pass `limit` (1 to 80).","help":"Set to profile to also fetch each account's followers, following, bio, and post count where available. Returns the top 20 unless limit is set.","enum":["profile"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N accounts of the list (1 to 80). Without `include=profile` the full list is returned unless you cap it.","help":"Return only the top N accounts, 1-80. Without include=profile, the full list is returned unless capped here.","minimum":1,"maximum":80},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/post/likers","method":"GET","platform":"instagram","group":"Post","label":"Post/Likers","description":"Returns up to about 2,000 of the accounts that liked a post, each with username, display name, avatar, and verification status, plus the full like count, in one call with no further pages.\n\nUse it to see who liked a post. A post with a few hundred likes comes back whole; past that, expect about 1,000 to 2,000 likers however many likes it has (999 of 5,967 and 1,999 of 1,309,613 in our tests), and fewer on an older post (737 of 1,390,071).","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":21,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"URL of the Instagram post (a /p/ or /reel/ link).","help":"URL of the Instagram post (/p/ or /reel/ link).","example":"https://www.instagram.com/p/CnpPou9hWqq/"},{"name":"safe_url","required":false,"in":"query","type":"boolean","description":"When true, returns URL-safe profile picture links suitable for embedding.","help":"Return URL-safe profile picture links suitable for embedding."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/post/stats","method":"GET","platform":"instagram","group":"Post","label":"Post/Stats","description":"Returns one post's engagement: likes, comments, and, on video posts only, the play count and the share count shown by the paper plane icon. Collab posts also list co-authors under ext.coauthors.\n\nUse it when you need the share count for a single post, or the co-author list of one collab post; views also come on post itself, and photo posts return both numbers as null.","credits":{"min":50,"max":90},"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":22,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"URL of the Instagram post (a /p/, /reel/, or /tv/ link).","help":"URL of the Instagram post (/p/, /reel/, or /tv/ link).","example":"https://www.instagram.com/p/CnpPou9hWqq/"},{"name":"safe_url","required":false,"in":"query","type":"boolean","description":"When true, returns URL-safe media links suitable for embedding.","help":"Return URL-safe media/image links suitable for embedding."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `saves` (one token only) to ask a third source for a reel's save count (`post.engagement.saves`) and repost count (`post.ext.repost_count`) when the plain call returned without them. Photos and carousels are never looked up, because Instagram publishes no save count on them.","help":"Set to saves to also fetch a reel's save and repost counts when missing from the standard response. Not available for photos or carousels.","enum":["saves"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/tagged","method":"GET","platform":"instagram","group":"Tagged","label":"Tagged","description":"Returns posts that tag a given user, each with its shortcode, URL, caption, media URLs, engagement counts, and the account that posted it.\n\nUse it to see what other people posted about an account; profile/posts returns only what the account posted itself.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":23,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username without the @ symbol.","help":"Instagram username, without the @ symbol.","example":"mrbeast","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Instagram numeric user ID. Use this for faster responses.","help":"Instagram numeric user ID. Faster than using a username.","one_of_group":"handle|user_id"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor. Use the `next_cursor` from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"safe_url","required":false,"in":"query","type":"boolean","description":"When true, returns URL-safe media links suitable for embedding.","help":"Return URL-safe media/image links suitable for embedding."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/location/posts","method":"GET","platform":"instagram","group":"Location","label":"Location/Posts","description":"Returns posts tagged at a place, newest first, about 60 a page, each with shortcode, URL, caption, media URLs, engagement counts, and the author.\n\nUse it after search/location for region-scoped posts. Page back in time with the cursor; for a time window, stop once a whole page is older than its start.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":24,"params":[{"name":"location_id","required":true,"in":"query","type":"string","description":"Instagram location id. Use location.pk from /v1/instagram/search/location.","help":"Instagram location ID: location.pk from /v1/instagram/search/location.","example":"331004901"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor. Use the `next_cursor` from the previous response to fetch the next, older page.","help":"Cursor from the previous response, to get the next, older page."},{"name":"safe_url","required":false,"in":"query","type":"boolean","description":"When true, returns URL-safe media links suitable for embedding.","help":"Return URL-safe media/image links suitable for embedding."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/engagement","method":"GET","platform":"instagram","group":"Engagement","label":"Engagement","description":"Use it when you want the engagement math done for you, including likes and comments per hour on each post, rather than raw posts to total yourself.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":25,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Instagram username without the @ symbol.","help":"Instagram username, without the @ symbol.","example":"mrbeast"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/search/location","method":"GET","platform":"instagram","group":"Search","label":"Search/Location","description":"Returns places matching a keyword, each with its location id, name, and coordinates, plus a display title and subtitle.\n\nUse it to turn a place name into a location id, then pass that id to location/posts to see what was posted there.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":26,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find Instagram locations.","help":"Search keyword or phrase to find Instagram locations.","example":"Paris"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/search","method":"GET","platform":"instagram","group":"Search","label":"Search","description":"Returns mixed Instagram search matches for a query: accounts, hashtags, and places in one payload.\n\nUse it when you need the same mixed results Instagram's search box shows; search/profiles, search/hashtag, and search/location split those types.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":27,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword as typed in Instagram's search box.","help":"Search keyword, as typed in Instagram's search box.","example":"nike"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/search/popular","method":"GET","platform":"instagram","group":"Search","label":"Search/Popular","description":"Returns popular Instagram posts matching a keyword, each with caption, play count, permalink, thumbnail, and the owner's username.\n\nUse it to sample what is popular for a topic; search/reels is the choice when you want a keyword reel feed instead.","credits":{"min":10,"max":130},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":28,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keyword or topic to find popular Instagram posts.","help":"Keyword or topic to find popular Instagram posts.","example":"basketball"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement` (one token only) to fill `post.engagement.likes`, `.comments`, `.shares`, `.views`, `post.published_at` and `post.content.duration_seconds` on every row in this one call.","help":"Set to engagement to also fill in likes, comments, shares, views, publish date, and duration for every row.","enum":["engagement"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N rows of the page (1 to 12) after the search has run. It is not a page size: `next_cursor` still advances past the full page, so rows beyond N on this page are not returned by the next page.","help":"Return only the top N rows of the page, 1-12. Paging still advances past the full page, so remaining rows here are skipped, not carried forward.","minimum":1,"maximum":12},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/post/comment/replies","method":"GET","platform":"instagram","group":"Post","label":"Post/Comment/Replies","description":"Returns replies under one Instagram comment, each with text, like count, nested reply count, author, and timestamp.\n\nUse it after post/comments: pass the post URL and the parent comment_id to expand one thread.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":29,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"URL of the Instagram post that holds the parent comment.","help":"URL of the post that holds the parent comment.","example":"https://www.instagram.com/reel/C8rKmYvsrck"},{"name":"comment_id","required":true,"in":"query","type":"string","description":"Id of the parent comment whose replies to list.","help":"ID of the parent comment whose replies to list.","example":"18038110327814211"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/instagram/username-suggestions","method":"GET","platform":"instagram","group":"Username suggestions","label":"Username Suggestions","description":"Returns suggested available Instagram usernames built from a keyword you supply.\n\nUse it when picking a new handle; it invents name ideas and does not look up existing accounts, which is what search/profiles does.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":30,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keyword to seed the username suggestions.","help":"Keyword to seed username suggestions.","example":"mrbeast"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/search/music","method":"GET","platform":"instagram","group":"Search","label":"Search/Music","description":"Returns audio tracks matching a keyword, each with artist, title, audio and cover artwork URLs, duration, and usage details.\n\nUse it to find a specific sound by name.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":3600,"order":31,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find Instagram audio tracks.","help":"Search keyword or phrase to find Instagram audio tracks.","example":"beyonce"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor. Use the `next_cursor` from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/stories","method":"GET","platform":"instagram","group":"Stories","label":"Stories","description":"Returns the stories a user has live right now, each with its id, image or video URLs, thumbnail, duration, capture time, and the author.\n\nUse it to check an account's current story tray; an account with nothing live returns an empty list rather than an error.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":32,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username without the @ symbol.","help":"Instagram username, without the @ symbol.","example":"natgeo","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Instagram numeric user ID. Use this for faster responses.","help":"Instagram numeric user ID. Faster than using a username.","one_of_group":"handle|user_id"},{"name":"safe_url","required":false,"in":"query","type":"boolean","description":"When true, returns URL-safe media links suitable for embedding.","help":"Return URL-safe media/image links suitable for embedding."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/story/download","method":"GET","platform":"instagram","group":"Story","label":"Story/Download","description":"Returns the full resolution image or video URLs and metadata for one specific story.\n\nUse it after stories: pass the author's user_id plus the story_id it returned to pull that one story's media.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":33,"params":[{"name":"user_id","required":true,"in":"query","type":"string","description":"Instagram numeric user ID of the story's author.","help":"Instagram numeric user ID of the story's author."},{"name":"story_id","required":true,"in":"query","type":"string","description":"ID of the individual story to download.","help":"ID of the individual story to download."},{"name":"safe_url","required":false,"in":"query","type":"boolean","description":"When true, returns URL-safe media links suitable for embedding.","help":"Return URL-safe media/image links suitable for embedding."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/profile/full","method":"GET","platform":"instagram","group":"Profile","label":"Profile/Full","description":"Use it instead of calling profile and profile/posts separately; the profile still comes back if posts cannot be fetched, with post metrics null.","credits":50,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":35,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Instagram username or handle, with or without a leading @. One of the identity params is required.","help":"Instagram username, with or without a leading @. Required unless another identity param is given.","example":"mrbeast"},{"name":"posts","required":false,"in":"query","type":"integer","description":"How many of the fetched recent posts to return and compute the metrics over (1-100, default 25).","help":"Recent posts to fetch and compute metrics over, 1-100 (default 25). Instagram pages in batches of 12; pass posts_cursor back as cursor for more.","example":"25"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pass a prior response's posts_cursor to read the next page of posts.","help":"Cursor from a prior response's posts_cursor, to fetch the next page of posts."},{"name":"include","required":false,"in":"query","type":"string","description":"","help":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/profile/reels/full","method":"GET","platform":"instagram","group":"Profile","label":"Profile/Reels/Full","description":"Returns a user's reels with views, likes, comments, and a per-reel share count where the second source exposes one, plus a coverage figure.\n\nUse it when share counts matter across a creator's reels; profile/reels is the lighter choice when views, likes, and comments are enough.","credits":{"min":50,"max":250},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":36,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username (with or without a leading @). Required unless user_id is given.","help":"Instagram username, with or without a leading @. Required unless user_id is given.","example":"sid.and.listen","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Numeric Instagram user id. Alternative to handle: the account's username is looked up from the id first, so a user_id call returns the same items, share counts and price as a handle call. An id that matches no account returns 404 and is not charged.","help":"Numeric Instagram user ID. Alternative to handle, with the same results and price.","one_of_group":"handle|user_id"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Opaque cursor from a prior response's next_cursor to page deeper.","help":"Cursor from the previous response, to get the next page."},{"name":"limit","required":false,"in":"query","type":"integer","description":"Return up to this many items in one call (1-50). The endpoint pages the underlying source server-side until it has collected this many (or runs out), and bills per page read. Omit for a single page.","help":"Items to return in one call, 1-50. May fetch (and bill for) multiple pages to reach this count."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/instagram/profile/posts/full","method":"GET","platform":"instagram","group":"Profile","label":"Profile/Posts/Full","description":"Returns a user's recent posts with likes, comments, views, and a per-post share count where the second source exposes one, plus a coverage figure.\n\nUse it when share counts matter across a whole feed; profile/posts is the lighter choice when likes and comments are enough.","credits":{"min":50,"max":250},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":37,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Instagram username (with or without a leading @). Required unless user_id is given.","help":"Instagram username, with or without a leading @. Required unless user_id is given.","example":"sid.and.listen","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Numeric Instagram user id. Alternative to handle: the account's username is looked up from the id first, so a user_id call returns the same items, share counts and price as a handle call. An id that matches no account returns 404 and is not charged.","help":"Numeric Instagram user ID. Alternative to handle, with the same results and price.","one_of_group":"handle|user_id"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Opaque cursor from a prior response's next_cursor to page deeper.","help":"Cursor from the previous response, to get the next page."},{"name":"limit","required":false,"in":"query","type":"integer","description":"Return up to this many items in one call (1-50). The endpoint pages the underlying source server-side until it has collected this many (or runs out), and bills per page read. Omit for a single page.","help":"Items to return in one call, 1-50. May fetch (and bill for) multiple pages to reach this count."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/kick/clip","method":"GET","platform":"kick","group":"Clip","label":"Clip","description":"Returns one Kick clip's title, view count, duration, category, creator name, channel name, thumbnail URL, and creation timestamp.\n\nUse it when you have a Kick clip URL and need its stats and metadata.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":0,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Kick clip","help":"Full URL of the Kick clip.","example":"https://kick.com/xqc/clips/clip_abc123"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/kwai/profile","method":"GET","platform":"kwai","group":"Profile","label":"Profile","description":"Returns a Kwai user's public profile: username, bio, avatar, verification status, and follower, following, like, and post counts.\n\nUse it for a quick profile snapshot; use user/posts for that account's posts.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Kwai profile handle (without the @)","help":"Kwai profile handle, without the @ symbol.","example":"KwaiBrasilOficial","one_of_group":"handle|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Kwai profile URL","help":"Kwai profile URL.","one_of_group":"handle|url"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/kwai/user/posts","method":"GET","platform":"kwai","group":"User","label":"User/Posts","description":"Returns a paginated list of a Kwai user's posts: captions, media URLs, covers, engagement counts, and author info.\n\nUse it to list an account's posts; use profile when you only need the account's own counts.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Kwai profile handle (without the @)","help":"Kwai profile handle, without the @ symbol.","example":"KwaiBrasilOficial","one_of_group":"handle|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Kwai profile URL","help":"Kwai profile URL.","one_of_group":"handle|url"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response for the next page","help":"Cursor from the previous response, to get the next page."},{"name":"count","required":false,"in":"query","type":"integer","description":"Number of posts to return (max 50)","help":"Number of posts to return, up to 50."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/kwai/post","method":"GET","platform":"kwai","group":"Post","label":"Post","description":"Returns one Kwai post: caption, video and cover URLs, view/like/comment/share counts, author info, and music metadata.\n\nUse it when you have a single post URL; use user/posts to list everything an account has posted.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the Kwai post","help":"Full URL of the Kwai post.","example":"https://www.kwai.com/@KwaiBrasilOficial/photo/5193363430624671876"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile","method":"GET","platform":"linkedin","group":"Profile","label":"Profile","description":"Returns a LinkedIn member's public profile: full name, headline, location, follower and connection counts, profile picture, and profile URL.\n\nUse it as the starting point for any person lookup, then call the profile sub-endpoints for their experiences, skills, or posts.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile page","help":"Full URL of the LinkedIn profile page.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company","method":"GET","platform":"linkedin","group":"Company","label":"Company","description":"Returns a LinkedIn company page: company name, description, follower count, headquarters location, website, and logo.\n\nUse it to look up a company by its page URL, and to get the numeric company_id that the other company endpoints need.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn company page","help":"Full URL of the LinkedIn company page.","example":"https://www.linkedin.com/company/microsoft/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/by-domain","method":"GET","platform":"linkedin","group":"Company","label":"Company/By Domain","description":"Returns the LinkedIn company page that owns a website domain: name, description, follower count, headquarters, website, logo, and numeric company id.\n\nUse it when you have a company website rather than a LinkedIn page URL. company looks up the same record from a page URL.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"domain","required":true,"in":"query","type":"string","description":"Company website domain, with or without a scheme. `microsoft.com` and `https://www.microsoft.com/` resolve the same page.","help":"Company website domain, with or without https://, e.g. microsoft.com.","example":"microsoft.com"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/similar","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Similar","description":"Returns members LinkedIn groups with a given profile, each with handle, headline, profile URL, and picture.\n\nUse it after profile to find nearby people; search/people filters by title, company, or location instead.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile to find similar members for.","help":"Full URL of the LinkedIn profile to find similar members for.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/search/companies","method":"GET","platform":"linkedin","group":"Search","label":"Search/Companies","description":"Returns LinkedIn company pages matching a keyword, each with name, tagline, page URL, and logo.\n\nUse it to find companies by name and optional size, industry, location, or open-jobs filters, then pass a result to company.","credits":100,"tier":"premium","paginates":true,"cache_ttl_seconds":3600,"order":4,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Company name or keyword.","help":"Company name or keyword.","example":"microsoft"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"company_size","required":false,"in":"query","type":"string","description":"Headcount bucket. One of `1-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`.","help":"Company headcount range, e.g. 1-10, 11-50, up to 10001+.","enum":["1-10","11-50","51-200","201-500","501-1000","1001-5000","5001-10000","10001+"]},{"name":"has_jobs","required":false,"in":"query","type":"boolean","description":"When true, return only companies that currently have open jobs.","help":"When true, return only companies that currently have open jobs."},{"name":"industry_ids","required":false,"in":"query","type":"string","description":"Comma-separated industry ids from /v1/linkedin/search/industry.","help":"Comma-separated industry IDs, from the /linkedin/search/industry endpoint."},{"name":"geocode","required":false,"in":"query","type":"string","description":"Comma-separated location ids from /v1/linkedin/search/location.","help":"Comma-separated location IDs from the location search endpoint."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/posted-jobs","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Posted Jobs","description":"Returns the jobs a LinkedIn member has posted, each with job id, title, hiring company, location, and posting date.\n\nUse it when you have a person's profile URL and want the roles they listed, not every opening at their employer.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":5,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile whose posted jobs to list.","help":"Full URL of the LinkedIn profile whose posted jobs to list.","example":"https://www.linkedin.com/in/jipeng-han/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/job/hiring-team","method":"GET","platform":"linkedin","group":"Job","label":"Job/Hiring Team","description":"Returns the members LinkedIn shows as the hiring team on a job, each with handle, headline, profile URL, and picture.\n\nUse it after search/jobs or company/jobs, passing a job id or the job URL.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":6,"params":[{"name":"id","required":false,"in":"query","type":"string","description":"LinkedIn job ID (from /v1/linkedin/search/jobs or /v1/linkedin/company/jobs).","help":"LinkedIn job ID, from the job search or company jobs endpoint.","example":"4463963538","one_of_group":"id|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the LinkedIn job posting.","help":"Full URL of the LinkedIn job posting.","one_of_group":"id|url"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/articles","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Articles","description":"Returns Pulse articles a LinkedIn member published, each with text, author, engagement, and date.\n\nUse it for long-form writing. profile/posts is the short-form feed; article fetches one Pulse URL.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":7,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile whose articles to list.","help":"Full URL of the LinkedIn profile whose articles to list.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/article","method":"GET","platform":"linkedin","group":"Article","label":"Article","description":"Returns one LinkedIn Pulse article: its text, author, like and comment counts, and publish time.\n\nUse it when you have a /pulse/ URL. Comments and reactions are article/comments and article/reactions.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":8,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn Pulse article.","help":"Full URL of the LinkedIn Pulse article.","example":"https://www.linkedin.com/pulse/hidden-costs-unreliable-electricity-bill-gates/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/article/comments","method":"GET","platform":"linkedin","group":"Article","label":"Article/Comments","description":"Returns comments on a LinkedIn Pulse article, with commenter identity, text, and timestamp.\n\nUse it after article or profile/articles, passing the article URL.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":9,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn Pulse article.","help":"Full URL of the LinkedIn Pulse article.","example":"https://www.linkedin.com/pulse/2024-corporate-climate-pivot-bill-gates-u89mc/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/article/reactions","method":"GET","platform":"linkedin","group":"Article","label":"Article/Reactions","description":"Returns members who reacted to a LinkedIn Pulse article, each with handle, name, picture, and reaction type.\n\nUse it after article, passing the same Pulse URL.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":10,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn Pulse article.","help":"Full URL of the LinkedIn Pulse article.","example":"https://www.linkedin.com/pulse/2024-corporate-climate-pivot-bill-gates-u89mc/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/activity","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Activity","description":"Returns when a LinkedIn member last showed public activity.\n\nUse it to see recency, not the feed itself. profile/posts returns the posts.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":12,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/adamselipsky/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/also-viewed","method":"GET","platform":"linkedin","group":"Company","label":"Company/Also Viewed","description":"Returns company pages LinkedIn shows as people also viewed, each with name, page URL, and logo.\n\nUse it after company to find nearby pages; pass the numeric company_id from company, or the company page URL.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":13,"params":[{"name":"company_id","required":false,"in":"query","type":"string","description":"Numeric LinkedIn company id, for example 1441 for Google. It is `author.id` on `/v1/linkedin/company`. Send this or `url`.","help":"Numeric LinkedIn company ID, e.g. 1441 for Google. Use this or url.","example":"1441","one_of_group":"company_id|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the LinkedIn company page, for example https://www.linkedin.com/company/google/. Send this or `company_id`.","help":"Full URL of the LinkedIn company page, e.g. https://www.linkedin.com/company/google/. Use this or company_id.","one_of_group":"company_id|url"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/employees-count","method":"GET","platform":"linkedin","group":"Company","label":"Company/Employees Count","description":"Returns how many LinkedIn members list a company as employer, optionally broken down by location.\n\nUse it for a headcount by city or country; company.ext.employee_count is the headline total.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":14,"params":[{"name":"company_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric company ID (from /v1/linkedin/company).","help":"Numeric LinkedIn company ID, from the company lookup endpoint.","example":"1441"},{"name":"geocode","required":false,"in":"query","type":"string","description":"Comma-separated location ids from /v1/linkedin/search/location.","help":"Comma-separated location IDs from the location search endpoint."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/interests/schools","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Interests/Schools","description":"Returns the school pages a LinkedIn member follows, each with name and page URL.\n\nUse it after profile. search/schools turns a university name into a school id.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":15,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/interests/newsletters","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Interests/Newsletters","description":"Returns the newsletters a LinkedIn member follows, each with name and page URL.\n\nUse it after profile to see which newsletters they follow.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":16,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/interests/top-voices","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Interests/Top Voices","description":"Returns the Top Voice profiles a LinkedIn member follows, each with name and profile URL.\n\nUse it after profile to see which Top Voices they follow.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":17,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/position-skills","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Position Skills","description":"Returns a member's positions with the skills listed on each role.\n\nUse it when you need skills per job. profile/experiences is the role list; profile/skills is the flat list.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":18,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/tedgaubert/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/top-position","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Top Position","description":"Returns the company page of the member's current top position: company id, name, website, headcount, industries and locations, not the job title.\n\nUse it to find where a member works now. company returns the same company in the canonical schema; profile/experiences has titles and dates.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":19,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/adamselipsky/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/search/people/by-url","method":"GET","platform":"linkedin","group":"Search","label":"Search/People/By Url","description":"Returns LinkedIn members from a people-search results URL, each with handle, headline, and profile URL.\n\nUse it when you already have a LinkedIn people-search URL. Keyword search is search/people.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":3600,"order":20,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"LinkedIn people-search results URL.","help":"Full URL of a LinkedIn people-search results page.","example":"https://www.linkedin.com/search/results/people/?keywords=kyc"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/all","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/All","description":"Returns a member's entire public profile in one call: `author` with both counts, and `background` with About, experience, education, skills, recommendations, Featured and interests.\n\nUse it for a one-call profile audit, in place of stacking profile, profile/complete, profile/stats, the five interests lanes and profile/similar.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":21,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/williamhgates/","one_of_group":"url|urls"},{"name":"urls","required":false,"in":"query","type":"string","description":"Up to 10 full LinkedIn profile URLs in one call, comma separated. The response becomes `{items, total}` instead of a single profile. A list where nothing resolves is a free 404.","help":"Comma-separated list of up to 10 full LinkedIn profile URLs to fetch in one call.","example":"https://www.linkedin.com/in/williamhgates,https://www.linkedin.com/in/jeffweiner08","one_of_group":"url|urls"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/complete","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Complete","description":"Returns a member's full background: `author` in the /profile shape, and `background` with About, experiences, educations, skills and recommendations in the profile/* item shapes.\n\nUse it for background checks and enrichment, where one premium call replaces profile, profile/experiences, profile/educations, profile/skills and profile/recommendations.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":86400,"order":22,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/ryanroslansky/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/with-posts","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/With Posts","description":"Returns a member's profile with follower and connection counts in `author`, recent `posts` in the profile/posts item shape, and experiences, educations and skills under `background`.\n\nUse it for one call covering the counts, recent posts and career history. Use profile/complete when you need recommendations.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":86400,"order":23,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile.","help":"Full URL of the LinkedIn profile.","example":"https://www.linkedin.com/in/adamselipsky/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/post/with-comments","method":"GET","platform":"linkedin","group":"Post","label":"Post/With Comments","description":"Returns one LinkedIn post packed with its comments in a single payload.\n\nUse it to fetch a post and its thread together. Prefer post plus post/comments when you want each on its own schema.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":24,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Activity URL of the LinkedIn post.","help":"Full URL of the LinkedIn post (the activity link).","example":"https://www.linkedin.com/feed/update/urn:li:activity:7501466755261820928"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/post","method":"GET","platform":"linkedin","group":"Post","label":"Post","description":"Returns one LinkedIn post: its text, author name and picture, like, comment and share counts, attached media, and the publish time.\n\nUse it when you have a post URL and want the post itself, not its comments, reactions, or reposts.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":25,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn post. It has to carry the post's ACTIVITY id, either `https://www.linkedin.com/feed/update/urn:li:activity:<id>` or `https://www.linkedin.com/posts/<slug>-activity-<id>-<code>`. Every endpoint that lists posts publishes the activity form as `post.url`, so copy that field rather than rebuilding the URL from `post.id`, which is not always the activity id.","help":"Full URL of the LinkedIn post, using its activity ID (e.g. .../feed/update/urn:li:activity:<id>). Copy the url field from a listing response.","example":"https://www.linkedin.com/feed/update/urn:li:activity:7501466755261820928"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/search/people","method":"GET","platform":"linkedin","group":"Search","label":"Search/People","description":"Returns LinkedIn members matching a name or filters, each with handle, headline, location, follower count, profile URL, and member id.\n\nUse it to build a prospect list by job title, company, school, or location; use company/people to list one employer's staff.","credits":{"min":100,"max":500},"tier":"premium","paginates":true,"cache_ttl_seconds":3600,"order":26,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Name or display-name keyword to search for (e.g. 'Bill Gates').","help":"Name or display-name keyword to search for (e.g. 'Bill Gates').","example":"Bill Gates"},{"name":"page","required":false,"in":"query","type":"integer","description":"Page number for pagination (default 1).","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"first_name","required":false,"in":"query","type":"string","description":"Filter by first name.","help":"Filter by first name."},{"name":"last_name","required":false,"in":"query","type":"string","description":"Filter by last name.","help":"Filter by last name."},{"name":"title","required":false,"in":"query","type":"string","description":"Filter by job title or headline.","help":"Filter by job title or headline."},{"name":"current_company","required":false,"in":"query","type":"string","description":"Filter by current company, using a numeric company id from /v1/linkedin/company (`author.id`). Comma-separated for multiple.","help":"Filter by current company, using numeric company IDs from /linkedin/company. Comma-separated for multiple.","example":"1035"},{"name":"past_company","required":false,"in":"query","type":"string","description":"Filter by a previously-worked company, using a numeric company id from /v1/linkedin/company (`author.id`).","help":"Filter by a previously-worked company, using the numeric company ID from /linkedin/company.","example":"1035"},{"name":"school","required":false,"in":"query","type":"string","description":"Filter by school, using a school id from /v1/linkedin/search/schools (`id`).","help":"Filter by school, using the school ID from the /linkedin/search/schools endpoint.","example":"1792"},{"name":"industry","required":false,"in":"query","type":"string","description":"Filter by industry, using an industry id from /v1/linkedin/search/industry (`industry_id`).","help":"Filter by industry, using the industry ID from the /linkedin/search/industry endpoint.","example":"4"},{"name":"geocode_location","required":false,"in":"query","type":"string","description":"Filter by location, using a geocode id from /v1/linkedin/search/location (`geocode`).","help":"Filter by location, using the geocode ID from the /linkedin/search/location endpoint.","example":"103644278"},{"name":"profile_language","required":false,"in":"query","type":"string","description":"Filter by profile language (ISO 2-letter code, e.g. 'en').","help":"Filter by profile language (ISO 2-letter code, e.g. 'en')."},{"name":"service_category","required":false,"in":"query","type":"string","description":"Filter by service category, using a numeric service-category id. No endpoint resolves these, so pass one you already hold.","help":"Filter by service category, using a numeric service-category ID you already have; no endpoint looks these up.","example":"1"},{"name":"follower_of","required":false,"in":"query","type":"string","description":"Return people who follow a specific member, using the member's URN from /v1/linkedin/profile (`author.ext.urn`). This one is a URN and not a numeric id.","help":"Return people who follow a specific member, using that member's LinkedIn URN from /linkedin/profile (not a numeric ID).","example":"ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc"},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `profile` (one token only) to join every row to the member's profile lookup in this one call: `author.followers` becomes the exact count and `followers_approximate` reads false on every row the lookup filled, `author.following` is filled with the member's connection count, and the location, joined date, country, website, cover image and profile flags land where the row lacks them.","help":"Set to profile to also join each row to the member's full profile: exact follower/following counts, location, joined date, country, and website.","enum":["profile"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N rows of this page (1 to 10). The page cursor still advances past the full page of 10, so the rows past your limit are skipped, not carried to the next page.","help":"Return only the top N rows of this page, 1-10. Paging still advances past the full page of 10, so remaining rows are skipped, not carried forward.","minimum":1,"maximum":10},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/people","method":"GET","platform":"linkedin","group":"Company","label":"Company/People","description":"Returns the members who list a company as their employer, each with handle, headline, location, profile picture, and follower count.\n\nUse it when you already have a company_id and want its staff; use search/people to filter across all of LinkedIn instead.","credits":{"min":100,"max":500},"tier":"premium","paginates":true,"cache_ttl_seconds":21600,"order":27,"params":[{"name":"company_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric company ID (from /v1/linkedin/company).","help":"Numeric LinkedIn company ID, from the company lookup endpoint.","example":"1035"},{"name":"page","required":false,"in":"query","type":"integer","description":"Page number for pagination (default 1).","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `profile` (one token only) to join every row to the member's profile lookup in this one call: `author.followers` becomes the exact count and `followers_approximate` reads false on every row the lookup filled, `author.following` is filled with the member's connection count, and the location, joined date, country, website, cover image and profile flags land where the row lacks them.","help":"Set to profile to also join each row to the member's full profile: exact follower/following counts, location, joined date, country, and website.","enum":["profile"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N rows of this page (1 to 10). The page cursor still advances past the full page of 10, so the rows past your limit are skipped, not carried to the next page.","help":"Return only the top N rows of this page, 1-10. Paging still advances past the full page of 10, so remaining rows are skipped, not carried forward.","minimum":1,"maximum":10},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/post/comments","method":"GET","platform":"linkedin","group":"Post","label":"Post/Comments","description":"Returns the comments on a LinkedIn post: commenter name, comment text, reaction counts, reply count, pinned and edited flags, and timestamps.\n\nUse it for the top-level comments on a post, then pass a comment's id to post/comments/replies to open one thread.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":28,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn post. It has to carry the post's ACTIVITY id, either `https://www.linkedin.com/feed/update/urn:li:activity:<id>` or `https://www.linkedin.com/posts/<slug>-activity-<id>-<code>`. Every endpoint that lists posts publishes the activity form as `post.url`, so copy that field rather than rebuilding the URL from `post.id`, which is not always the activity id.","help":"Full URL of the LinkedIn post, using its activity ID (e.g. .../feed/update/urn:li:activity:<id>). Copy the url field from a listing response.","example":"https://www.linkedin.com/feed/update/urn:li:activity:7244804629786419202"},{"name":"page","required":false,"in":"query","type":"integer","description":"Page number for pagination (default 1).","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"post_type","required":false,"in":"query","type":"string","description":"Post type: 'activity' (default) or 'ugc'.","help":"LinkedIn post type: activity (default) or ugc.","enum":["activity","ugc"]},{"name":"sort_order","required":false,"in":"query","type":"string","description":"Comment ordering: 'relevance' or 'recent'.","help":"Comment order: relevance or recent.","enum":["recent","relevance"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/posts","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Posts","description":"Returns the posts a LinkedIn member published, each with text, author name, like, comment and share counts, media, and publish time.\n\nUse it for what a person posted themselves; profile/reactions covers posts they only reacted to, profile/comments their comments.","credits":{"min":50,"max":2000},"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":29,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"limit","required":false,"in":"query","type":"integer","description":"How many posts to return in the one call, 1 to 100. Defaults to the platform's 20. 100 is the platform's hard ceiling. Ask for the depth you need up front - there is no second page to fetch.","help":"How many posts to return, 1–100 (default 20). There is no second page, so ask for the depth you need.","minimum":1,"maximum":100},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/reactions","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Reactions","description":"Returns the posts a LinkedIn member reacted to, each with the post text, its original author, like, comment and share counts, and date.\n\nUse it to see what a person engages with rather than what they publish, which profile/posts returns.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":30,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/post/reposts","method":"GET","platform":"linkedin","group":"Post","label":"Post/Reposts","description":"Returns the reposts of a LinkedIn post, each with the resharer's name, any added commentary, engagement counts, and publish time.\n\nUse it to see who amplified a post; post/reactions lists who reacted and post/comments lists who replied.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":31,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn post. It has to carry the post's ACTIVITY id, either `https://www.linkedin.com/feed/update/urn:li:activity:<id>` or `https://www.linkedin.com/posts/<slug>-activity-<id>-<code>`. Every endpoint that lists posts publishes the activity form as `post.url`, so copy that field rather than rebuilding the URL from `post.id`, which is not always the activity id.","help":"Full URL of the LinkedIn post, using its activity ID (e.g. .../feed/update/urn:li:activity:<id>). Copy the url field from a listing response.","example":"https://www.linkedin.com/feed/update/urn:li:activity:7501466755261820928"},{"name":"cursor","required":false,"in":"query","type":"string","description":"LinkedIn cursor.","help":"Cursor from the previous response, to get the next page."},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/group/posts","method":"GET","platform":"linkedin","group":"Group","label":"Group/Posts","description":"Returns the posts inside a LinkedIn group, each with text, author name, like, comment and share counts, media, and publish time.\n\nUse it to read a group's discussion feed; call group first if you also need the group's own details.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":32,"params":[{"name":"group_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric group ID.","help":"LinkedIn numeric group ID.","example":"62438"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/affiliated-pages","method":"GET","platform":"linkedin","group":"Company","label":"Company/Affiliated Pages","description":"Returns a company's affiliated and showcase pages, each with page name, LinkedIn URL, speciality, follower count, and logo.\n\nUse it to map a parent brand to its regional and product pages before pulling posts or jobs for each one.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":33,"params":[{"name":"company_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric company ID (from /v1/linkedin/company).","help":"Numeric LinkedIn company ID, from the company lookup endpoint.","example":"1035"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/post/comments/replies","method":"GET","platform":"linkedin","group":"Post","label":"Post/Comments/Replies","description":"Returns the replies under one LinkedIn comment, each with the replier's name, reply text, reaction and reply counts, and timestamps.\n\nUse it after post/comments: pass that comment's comment_id together with the post url to expand a single thread.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":34,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn post. It has to carry the post's ACTIVITY id, either `https://www.linkedin.com/feed/update/urn:li:activity:<id>` or `https://www.linkedin.com/posts/<slug>-activity-<id>-<code>`. Every endpoint that lists posts publishes the activity form as `post.url`, so copy that field rather than rebuilding the URL from `post.id`, which is not always the activity id.","help":"Full URL of the LinkedIn post, using its activity ID (e.g. .../feed/update/urn:li:activity:<id>). Copy the url field from a listing response.","example":"https://www.linkedin.com/feed/update/urn:li:activity:7501466755261820928"},{"name":"comment_id","required":true,"in":"query","type":"string","description":"The parent comment's `comment.id` from /v1/linkedin/post/comments, or its `comment.ext.urn` (urn:li:comment:(ugcPost:<post>,<comment>)).","help":"The parent comment's ID or URN, from the post comments endpoint.","example":"7501480403283886080"},{"name":"cursor","required":false,"in":"query","type":"string","description":"LinkedIn cursor.","help":"Cursor from the previous response, to get the next page."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/experiences","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Experiences","description":"Returns a LinkedIn member's work history, with each role's job title, company, employment dates, location, and description.\n\nUse it for the full career list, which the main profile endpoint condenses down to the current company only.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":35,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/educations","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Educations","description":"Returns a LinkedIn member's education history, with each entry's school, degree, field of study, and the years attended.\n\nUse it for schooling detail; profile/experiences covers jobs, and search/schools turns a school name into a filter id.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":36,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/skills","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Skills","description":"Returns the skills listed on a LinkedIn member's profile, with each skill's name and the endorsements shown against it.\n\nUse it to score a person against a skill requirement, separately from the roles returned by profile/experiences.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":37,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/honors","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Honors","description":"Returns the honors and awards on a LinkedIn member's profile, with each award's title, issuer, date, and description.\n\nUse it for awards only: certifications live in profile/certifications and published work in profile/publications.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":38,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/certifications","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Certifications","description":"Returns the licenses and certifications on a LinkedIn member's profile, with each one's name, issuer, and issue or expiry dates.\n\nUse it to check formal credentials, as opposed to self-listed skills in profile/skills or degrees in profile/educations.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":39,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/publications","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Publications","description":"Returns the publications on a LinkedIn member's profile, with each one's title, publisher, publication date, description, and link.\n\nUse it for articles, papers, and books a person published, not for their LinkedIn posts, which profile/posts returns.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":40,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/volunteers","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Volunteers","description":"Returns the volunteer experience on a LinkedIn member's profile, with each entry's role, organisation, cause, and dates.\n\nUse it for unpaid and community roles, which the paid work history in profile/experiences does not cover.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":41,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/recommendations","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Recommendations","description":"Returns the recommendations on a LinkedIn member's profile, with the recommender's name and headline, the recommendation text, and date.\n\nUse it for written references, and set type to received or given to choose which side of the relationship you want.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":42,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/satyanadella/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"type","required":false,"in":"query","type":"string","description":"Filter by kind. See the allowed values.","help":"Filter by reaction type: all, like, praise, empathy, appreciation, or interest.","enum":["received","given"]},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/interests/companies","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Interests/Companies","description":"Returns the companies a LinkedIn member follows, with each company's name, LinkedIn URL, follower count, and logo.\n\nUse it to infer a person's interests and vendor affinities; profile/interests/groups covers the groups they follow.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":43,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/interests/groups","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Interests/Groups","description":"Returns the LinkedIn groups a member follows, with each group's name, URL, and the size of its membership.\n\nUse it to find the communities a person belongs to, then pass a group_id to group or group/posts to go deeper.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":44,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/images","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Images","description":"Returns the image posts on a LinkedIn member's profile, with each post's text, image links, engagement counts, and publish time.\n\nUse it when you only want photo posts; profile/posts returns every format and profile/videos returns the videos.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":45,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/videos","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Videos","description":"Returns the video posts on a LinkedIn member's profile, with each post's text, video and thumbnail links, engagement counts, and date.\n\nUse it to collect a person's videos, then pass a video post's URL to post/transcript to read what was said.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":46,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/comments","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Comments","description":"Returns the comments a LinkedIn member left on other people's posts, with the comment text, the post it sits under, and the timestamp.\n\nUse it to track someone's activity in other conversations; post/comments returns the comments on one specific post.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":47,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/post/reactions","method":"GET","platform":"linkedin","group":"Post","label":"Post/Reactions","description":"Returns the people who reacted to a LinkedIn post, each with their name, headline, profile URL, and the reaction they left.\n\nUse it to see who liked or praised a post, optionally filtered by type; post/comments covers the people who wrote a comment.","credits":{"min":100,"max":500},"tier":"premium","paginates":true,"cache_ttl_seconds":21600,"order":48,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn post. It has to carry the post's ACTIVITY id, either `https://www.linkedin.com/feed/update/urn:li:activity:<id>` or `https://www.linkedin.com/posts/<slug>-activity-<id>-<code>`. Every endpoint that lists posts publishes the activity form as `post.url`, so copy that field rather than rebuilding the URL from `post.id`, which is not always the activity id.","help":"Full URL of the LinkedIn post, using its activity ID (e.g. .../feed/update/urn:li:activity:<id>). Copy the url field from a listing response.","example":"https://www.linkedin.com/feed/update/urn:li:activity:7501466755261820928"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"type","required":false,"in":"query","type":"string","description":"Filter by kind. See the allowed values.","help":"Filter by reaction type: all, like, praise, empathy, appreciation, or interest.","enum":["all","like","praise","empathy","appreciation","interest"]},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `profile` (one token only) to join every row to the member's profile lookup in this one call: `author.followers` becomes the exact count and `followers_approximate` reads false on every row the lookup filled, `author.following` is filled with the member's connection count, and the location, joined date, country, website, cover image and profile flags land where the row lacks them.","help":"Set to profile to also join each row to the member's full profile: exact follower/following counts, location, joined date, country, and website.","enum":["profile"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N rows of this page (1 to 10). The page cursor still advances past the full page of 10, so the rows past your limit are skipped, not carried to the next page.","help":"Return only the top N rows of this page, 1-10. Paging still advances past the full page of 10, so remaining rows are skipped, not carried forward.","minimum":1,"maximum":10},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/jobs","method":"GET","platform":"linkedin","group":"Company","label":"Company/Jobs","description":"Returns the jobs a company has posted, each with job id, title, location, hiring company details, posting date, and Easy Apply flag.\n\nUse it for one employer's openings; search/jobs looks across all companies and job returns one posting's full text.","credits":100,"tier":"premium","paginates":true,"cache_ttl_seconds":21600,"order":49,"params":[{"name":"company_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric company ID (from /v1/linkedin/company).","help":"Numeric LinkedIn company ID, from the company lookup endpoint.","example":"1035"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"date_posted","required":false,"in":"query","type":"string","description":"How recently the job was listed. One of `anytime`, `past_24_hours`, `past_week`, `past_month`. Note the job lanes use `past_24_hours` while /v1/linkedin/search/posts uses `past_24h`; they are different vocabularies and are not interchangeable.","help":"How recently the job was posted: anytime, past_24_hours, past_week, or past_month.","enum":["anytime","past_24_hours","past_week","past_month"]},{"name":"experience_level","required":false,"in":"query","type":"string","description":"Required seniority for the role.","help":"Required seniority for the role: internship, entry_level, associate, mid_senior, director, or executive.","enum":["internship","entry_level","associate","mid_senior","director","executive"]},{"name":"job_type","required":false,"in":"query","type":"string","description":"Contract type for the role.","help":"Contract type: full_time, part_time, contract, temporary, volunteer, internship, or other.","enum":["full_time","part_time","contract","temporary","volunteer","internship","other"]},{"name":"remote","required":false,"in":"query","type":"string","description":"Workplace type: onsite, remote, or hybrid.","help":"Workplace type: onsite, remote, or hybrid.","enum":["onsite","remote","hybrid"]},{"name":"easy_apply","required":false,"in":"query","type":"boolean","description":"When true, return only jobs that support LinkedIn Easy Apply.","help":"Only return jobs that support LinkedIn Easy Apply."},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Result ordering.","help":"Result order: recent or relevant.","enum":["recent","relevant"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/search/jobs","method":"GET","platform":"linkedin","group":"Search","label":"Search/Jobs","description":"Returns LinkedIn job postings matching a keyword, each with job id, title, hiring company, location, posting date, and Easy Apply flag.\n\nUse it to search openings across employers with filters like remote, job type, and experience level, then pass an id to job.","credits":100,"tier":"premium","paginates":true,"cache_ttl_seconds":3600,"order":50,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword.","help":"Search keyword.","example":"marketing"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"date_posted","required":false,"in":"query","type":"string","description":"How recently the job was listed. One of `anytime`, `past_24_hours`, `past_week`, `past_month`. Note the job lanes use `past_24_hours` while /v1/linkedin/search/posts uses `past_24h`; they are different vocabularies and are not interchangeable.","help":"How recently the job was posted: anytime, past_24_hours, past_week, or past_month.","enum":["anytime","past_24_hours","past_week","past_month"]},{"name":"experience_level","required":false,"in":"query","type":"string","description":"Required seniority for the role.","help":"Required seniority for the role: internship, entry_level, associate, mid_senior, director, or executive.","enum":["internship","entry_level","associate","mid_senior","director","executive"]},{"name":"job_type","required":false,"in":"query","type":"string","description":"Contract type for the role.","help":"Contract type: full_time, part_time, contract, temporary, volunteer, internship, or other.","enum":["full_time","part_time","contract","temporary","volunteer","internship","other"]},{"name":"remote","required":false,"in":"query","type":"string","description":"Workplace type: onsite, remote, or hybrid.","help":"Workplace type: onsite, remote, or hybrid.","enum":["onsite","remote","hybrid"]},{"name":"easy_apply","required":false,"in":"query","type":"boolean","description":"When true, return only jobs that support LinkedIn Easy Apply.","help":"Only return jobs that support LinkedIn Easy Apply."},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Result ordering.","help":"Result order: recent or relevant.","enum":["recent","relevant"]},{"name":"company","required":false,"in":"query","type":"string","description":"Filter by company, using a numeric company id from /v1/linkedin/company (`author.id`).","help":"Filter by company, using the numeric company ID from the /linkedin/company endpoint.","example":"1035"},{"name":"geocode","required":false,"in":"query","type":"string","description":"Filter by location, using a geocode id from /v1/linkedin/search/location.","help":"Filter by location, using a geocode ID from the /linkedin/search/location endpoint.","example":"103644278"},{"name":"industry_ids","required":false,"in":"query","type":"string","description":"Comma-separated industry ids from /v1/linkedin/search/industry.","help":"Comma-separated industry IDs, from the /linkedin/search/industry endpoint.","example":"4"},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/search/location","method":"GET","platform":"linkedin","group":"Search","label":"Search/Location","description":"Returns LinkedIn locations matching a place name, each with the location's display name and the geocode id LinkedIn filters on.\n\nUse it first to turn a city or country name into the id that search/people and search/jobs expect for location filters.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":51,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword.","help":"Search keyword.","example":"London"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/search/schools","method":"GET","platform":"linkedin","group":"Search","label":"Search/Schools","description":"Returns LinkedIn school pages matching a name, each with the school's name, page URL, and the id used in search filters.\n\nUse it to turn a university name into the school id that search/people accepts as a filter.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":52,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword.","help":"Search keyword.","example":"Stanford"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number. Defaults to 1.","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/search/industry","method":"GET","platform":"linkedin","group":"Search","label":"Search/Industry","description":"Returns LinkedIn industries matching a keyword, each with the industry name and the id LinkedIn uses to identify it.\n\nUse it to turn an industry name into the id that search/people and search/jobs need for their industry filters.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":53,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword.","help":"Search keyword.","example":"Software"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/about","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/About","description":"Returns the month a LinkedIn member joined and how recently contact details and the profile photo were updated, plus identity verification when LinkedIn shows it for that member.\n\nUse it to judge how current a profile is. Verification is included only for members whose verification panel can be read. Values come back as relative text, not exact dates.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":54,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"urn","required":false,"in":"query","type":"string","description":"The member's opaque LinkedIn URN, as returned in `author.ext.urn` by /v1/linkedin/profile. Optional, and a pure optimisation: pass it ALONGSIDE `url` (which stays required) and this call skips the internal handle lookup, so it answers faster. Verified on the deployed API 05/09/2026.","help":"The profile's LinkedIn URN, from a previous /linkedin/profile response. Optional; speeds up the lookup when passed alongside url."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/contact","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Contact","description":"Returns the contact details a LinkedIn member exposes publicly: websites, phone numbers, address, WeChat, and Twitter, alongside their name and profile urn.\n\nUse it when you need a way to reach a person; most fields come back empty unless the member filled them in, and no email address is returned.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":55,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/stats","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Stats","description":"Returns a LinkedIn member's audience size: their follower count and their connection count.\n\nUse it when all you need is reach numbers and you do not want to pull the whole profile.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":56,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn profile, company, or post.","help":"Full URL of the LinkedIn profile, company, or post.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/job-count","method":"GET","platform":"linkedin","group":"Company","label":"Company/Job Count","description":"Returns the number of jobs a LinkedIn company currently has open.\n\nUse it to track hiring volume over time without paging through the full list in company/jobs.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":57,"params":[{"name":"company_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric company ID (from /v1/linkedin/company).","help":"Numeric LinkedIn company ID, from the company lookup endpoint.","example":"1035"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/insights","method":"GET","platform":"linkedin","group":"Company","label":"Company/Insights","description":"Returns headcount breakdowns of a LinkedIn company's members as name and count pairs, covering locations, schools, job functions, skills, service categories, and fields of study.\n\nUse it for a workforce profile of an employer without paging through staff; company/people lists the individual members.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":58,"params":[{"name":"company_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric company ID (from /v1/linkedin/company).","help":"Numeric LinkedIn company ID, from the company lookup endpoint.","example":"1035"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/group","method":"GET","platform":"linkedin","group":"Group","label":"Group","description":"Returns a LinkedIn group's profile: name, description, member count, posting rules, industries, owners, logo and cover images, and its public and active flags.\n\nUse it to size up a group and read its rules before pulling its feed with group/posts.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":59,"params":[{"name":"group_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric group ID.","help":"LinkedIn numeric group ID.","example":"62438"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/job","method":"GET","platform":"linkedin","group":"Job","label":"Job","description":"Returns one LinkedIn job posting in full: title, hiring company, location, posting date, the job description text, and the Easy Apply flag.\n\nUse it after search/jobs or company/jobs, passing a job id from those lists to read the complete description.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":60,"params":[{"name":"id","required":true,"in":"query","type":"string","description":"LinkedIn job ID.","help":"LinkedIn job ID.","example":"4462185352"},{"name":"include_skills","required":false,"in":"query","type":"boolean","description":"When true, include the job's required skills in `job.ext.skills`.","help":"Also include the job's required skills."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/company/posts","method":"GET","platform":"linkedin","group":"Company","label":"Company/Posts","description":"Returns the recent posts from a LinkedIn company page, each with text, author name, like, comment and share counts, media, and date.\n\nUse it for what a brand publishes; profile/posts covers an individual member and group/posts covers a group feed.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":61,"params":[{"name":"company_id","required":true,"in":"query","type":"string","description":"LinkedIn numeric company ID (from /v1/linkedin/company).","help":"Numeric LinkedIn company ID, from the company lookup endpoint.","example":"1035"},{"name":"page","required":false,"in":"query","type":"integer","description":"Page number for pagination (default 1).","help":"Page number to return, starting at 1 (default 1).","minimum":1},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Post ordering: 'top' or 'recent'.","help":"Post order: top or recent.","enum":["top","recent"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/ad","method":"GET","platform":"linkedin","group":"Ad","label":"Ad","description":"Returns one LinkedIn ad from the Ad Library: the ad copy, creative images, the advertiser's name and logo, total impressions, and start date.\n\nUse it after ads/search, passing an ad's Ad Library URL to read that single ad in full.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":62,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn ad","help":"Full URL of the LinkedIn ad.","example":"https://www.linkedin.com/ad-library/detail/1515437353"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/ads/search","method":"GET","platform":"linkedin","group":"Ads","label":"Ads/Search","description":"Returns ads from the LinkedIn Ad Library matching a company, keyword, country, or date range, with each ad's copy and the advertiser behind it.\n\nUse it to find what a competitor is running, then pass a result's ad URL to ad for the complete record.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":3600,"order":63,"params":[{"name":"company","required":false,"in":"query","type":"string","description":"The company name to search for. 'Microsoft' for example","help":"Company name to search for, e.g. Microsoft.","example":"microsoft","one_of_group":"company|keyword|companyId"},{"name":"keyword","required":false,"in":"query","type":"string","description":"The keyword to search for","help":"Keyword to search for.","one_of_group":"company|keyword|companyId"},{"name":"companyId","required":false,"in":"query","type":"string","description":"The company id to search for","help":"Company ID to search for.","one_of_group":"company|keyword|companyId"},{"name":"countries","required":false,"in":"query","type":"string","description":"Comma separated list of countries. Example: US,CA,MX","help":"Comma-separated two-letter country codes, e.g. US,CA,MX."},{"name":"startDate","required":false,"in":"query","type":"string","description":"Start date to search for. Format: YYYY-MM-DD","help":"Start date to search from, format YYYY-MM-DD."},{"name":"endDate","required":false,"in":"query","type":"string","description":"End date to search for. Format: YYYY-MM-DD","help":"End date to search to, format YYYY-MM-DD."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/posts/archive","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Posts/Archive","description":"Returns a LinkedIn member's deep post archive, read from their own feed rather than a search index, with the exact publish timestamp, media and the full engagement breakdown including share counts.\n\nIt is metered per post returned, so ask for the limit you need.","credits":{"min":50,"max":5000},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":64,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"The member's LinkedIn profile URL, for example https://www.linkedin.com/in/williamhgates/.","help":"Full URL of the LinkedIn profile, e.g. https://www.linkedin.com/in/williamhgates/.","example":"https://www.linkedin.com/in/williamhgates/"},{"name":"limit","required":false,"in":"query","type":"integer","description":"How many posts to return, 1 to 100 (default 20). Pass 100 to walk the full archive: only a full page returns a `next_cursor`.","help":"How many posts to return, 1–100 (default 20). Use 100 to page through the full archive faster.","minimum":1,"maximum":100,"example":"100"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/search/posts","method":"GET","platform":"linkedin","group":"Search","label":"Search/Posts","description":"Returns public LinkedIn posts and Pulse articles matching a keyword, with each result's text, author, media, like and comment counts, and date.\n\nUse it for broad keyword monitoring; it reads public search results, so treat coverage as best effort rather than complete.","credits":{"min":10,"max":480},"tier":"advanced","paginates":true,"cache_ttl_seconds":3600,"order":65,"params":[{"name":"query","required":false,"in":"query","type":"string","description":"Keyword or phrase to search for. Optional when `from_member` or `from_company` is set: omit it to get that subject's posts unfiltered, and note that supplying a real content word narrows the results to posts matching it.","help":"Keyword or phrase to search for. Optional when from_member or from_company is set — omit it to get that person or company's posts unfiltered.","example":"ai agents","one_of_group":"query|from_member|from_company"},{"name":"from_member","required":false,"in":"query","type":"string","description":"Filter to posts from one member, by their LinkedIn member urn — the bare `ACoAA…` value published as `author.ext.urn` by /v1/linkedin/profile. A profile URL, a public slug (`williamhgates`) or a `urn:li:fsd_profile:`-prefixed value is rejected, because the source cannot use any of them. Pass this on its own, with no `query`, to walk one member's back catalogue.","help":"Filter to posts from one member, using their LinkedIn URN (the bare ACoAA… value from /linkedin/profile) — not a profile URL or username.","one_of_group":"query|from_member|from_company"},{"name":"from_company","required":false,"in":"query","type":"string","description":"Filter to posts from a company, by numeric LinkedIn company id (for example `1035`). A company slug or URL is rejected; read the id from `author.id` on /v1/linkedin/company.","help":"Filter to posts from a company, using its numeric LinkedIn company ID (e.g. 1035) from /linkedin/company — not a slug or URL.","one_of_group":"query|from_member|from_company"},{"name":"page","required":false,"in":"query","type":"integer","description":"1-based page number of Google results. Defaults to 1.","help":"Page number of results, starting at 1 (default 1).","minimum":1},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Result ordering: `relevance` (default) or `date_posted`. On a subject-only call (`from_member` or `from_company` with no `query`) the results are ordered by date and `relevance` is rejected, because there is no query for them to be relevant to.","help":"Result order: relevance (default) or date_posted. With from_member or from_company and no query, results are date-ordered and relevance is rejected.","enum":["date_posted","relevance"]},{"name":"date_posted","required":false,"in":"query","type":"string","description":"Date filter based on Google-indexed results. One of `past_24h`, `past_week`, `past_month` (underscores, not hyphens). Note the JOB lanes use `past_24_hours` for the same concept; the two vocabularies are not interchangeable.","help":"Restrict to recent posts: past_24h, past_week, or past_month (underscores, not hyphens).","enum":["past_24h","past_week","past_month"],"example":"past_week"},{"name":"content_type","required":false,"in":"query","type":"string","description":"Narrow to one kind of post.","help":"Narrow to one kind of post, e.g. videos, photos, or jobs.","enum":["videos","photos","jobs","live_videos","documents","collaborative_articles"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Return up to this many posts in one call, 1 to 200. Repeating the identical call inside the 2-minute cache window is free. Requires `query`. Cannot be combined with `page` or `cursor`: the result always starts at the top and `pagination.next_cursor` is null. `pagination.has_more` says whether more posts were available when the call stopped, and `walk.stopped` says why it stopped (`limit`, `exhausted`, `deadline` or `sources_unavailable`).","help":"How many posts to return in one call, 1–200. Requires query, and cannot be combined with page or cursor.","minimum":1,"maximum":200},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/linkedin/post/transcript","method":"GET","platform":"linkedin","group":"Post","label":"Post/Transcript","description":"Returns the spoken text of a video in a LinkedIn post. A post with no transcript answers 404 with reason no_captions, and a repost is read from the original post it shares.\n\nUse it to read or search what was said in a LinkedIn video; you are only charged when a transcript actually comes back.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":66,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the LinkedIn post to transcribe.","help":"Full URL of the LinkedIn post to transcribe.","example":"https://www.linkedin.com/posts/gemini-35-flash-is-a-step-forward-for-google-ugcPost-7465082215316525056-MHBd/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/linkedin/profile/full","method":"GET","platform":"linkedin","group":"Profile","label":"Profile/Full","description":"Use it for a one-call company snapshot instead of calling company and company/posts and doing the engagement maths yourself.","credits":50,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":67,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full LinkedIn company profile or page URL. One of the identity params is required.","help":"Full LinkedIn company or page URL. One of the identity parameters is required.","example":"https://www.linkedin.com/company/microsoft"},{"name":"posts","required":false,"in":"query","type":"integer","description":"How many of the fetched recent posts to return and compute the metrics over (1-100, default 25).","help":"How many recent posts to include and compute metrics over, 1–100 (default 25). LinkedIn company pages return 10 per call; use posts_cursor to fetch more.","example":"25"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pass a prior response's posts_cursor to read the next page of posts.","help":"Cursor from a prior response's posts_cursor, to fetch the next page of posts."},{"name":"include","required":false,"in":"query","type":"string","description":"","help":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/nextdoor/business","method":"GET","platform":"nextdoor","group":"Business","label":"Business","description":"Returns one local business listed on Nextdoor: name, phone, email, website, street address, categories and how many neighbours recommend it.\n\nUse it when you have a business page URL; to find businesses by city and trade use search.","credits":30,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"slug","required":true,"in":"query","type":"string","description":"The last segment of the business page URL, nextdoor.com/pages/<slug>/.","example":"radiant-plumbing-air-conditioning-austin-tx"},{"name":"market","required":false,"in":"query","type":"string","description":"us (nextdoor.com, default), gb (nextdoor.co.uk) or ca (ca.nextdoor.com).","enum":["us","gb","ca"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/nextdoor/search","method":"GET","platform":"nextdoor","group":"Search","label":"Search","description":"Returns local businesses on Nextdoor for a city and trade, each with name, address, categories and, where listed, phone, email and website.\n\nUse it to build a local lead list; for one business you already know use business.","credits":{"min":30,"max":170},"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":2,"params":[{"name":"city","required":true,"in":"query","type":"string","description":"City slug: the city and its state or region joined by two hyphens, lowercase, e.g. austin--tx or york--england.","example":"austin--tx"},{"name":"query","required":true,"in":"query","type":"string","description":"The trade to look for, e.g. plumber, bakery, electrician.","example":"plumber"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Businesses to return, 1 to 20. Default 20. Billed per business returned.","minimum":1,"maximum":20},{"name":"market","required":false,"in":"query","type":"string","description":"us (nextdoor.com, default), gb (nextdoor.co.uk) or ca (ca.nextdoor.com).","enum":["us","gb","ca"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/pinterest/search","method":"GET","platform":"pinterest","group":"Search","label":"Search","description":"Returns Pinterest pins matching a keyword, each with its text, original image, pinner and pin date; include=engagement adds save, reaction, comment and share counts.\n\nUse it to discover pins on a topic; add include=engagement for each pin's saves, or call pin when you already have one pin URL.","credits":{"min":10,"max":260},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":0,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keyword or phrase to search Pinterest pins for.","help":"Keyword or phrase to search Pinterest pins for.","example":"home decor ideas"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get the next page. Take it from `pagination.next_cursor` on the previous response.","help":"Cursor from the previous response, to get the next page."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response","help":"Return a trimmed-down version of the response with fewer fields."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement` (one token only) to fill `post.engagement.saves`, `.likes` (reactions), `.comments` and `.shares` on every row in this one call.","help":"Set to engagement to include save, like, comment, and share counts for each result.","enum":["engagement"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N rows of the page (1 to 25) after the search has run. It is not a page size: `next_cursor` still advances past the full page, so rows beyond N on this page are not returned by the next page.","help":"How many results to return from the top of the page, 1–25. Not a page size — the cursor still advances past the full page.","minimum":1,"maximum":25},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/pinterest/pin","method":"GET","platform":"pinterest","group":"Pin","label":"Pin","description":"Returns one Pinterest pin: its text, original image, pinner, pin date, and its save, reaction, comment and share counts.\n\nUse it when you have a pin URL and want everything about that single pin rather than a list.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Pinterest pin","help":"Full URL of the Pinterest pin.","example":"https://www.pinterest.com/pin/211174978421744/"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response","help":"Return a trimmed-down version of the response with fewer fields."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/pinterest/url-stats","method":"GET","platform":"pinterest","group":"Url stats","label":"Url Stats","description":"Returns how many times each of up to 10 external URLs has been saved to Pinterest through the Save Button.\n\nUse it to measure a page's pull on Pinterest, passing URLs exactly as used, since http vs https and a trailing slash count as different URLs.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"urls","required":true,"in":"query","type":"string","description":"Comma-separated list of 1-10 absolute http(s):// URLs, passed to Pinterest verbatim. Variants (https vs http, with/without trailing slash, with/without query string) are counted as different URLs.","help":"Comma-separated list of 1–10 full URLs (with http:// or https://) to get Pinterest save counts for. Trailing slashes and query strings count as different URLs.","example":"https://www.allrecipes.com/recipe/10813/best-chocolate-chip-cookies/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/pinterest/board","method":"GET","platform":"pinterest","group":"Board","label":"Board","description":"Returns the pins on a Pinterest board with text, image URL, author, and save, comment and share counts; include=engagement adds each pin's date and reaction count.\n\nUse it when you have a board URL: about 15 pins a page, cursor for the rest, include=engagement for pin dates. user/boards finds the boards.","credits":{"min":10,"max":160},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Pinterest board","help":"Full URL of the Pinterest board.","example":"https://www.pinterest.com/lizmrodgers/moms-night/"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response","help":"Return a trimmed-down version of the response with fewer fields."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get the next page of pins. Take it from `pagination.next_cursor` on the previous response.","help":"Cursor from the previous response, to get the next page of pins."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement` (one token only) to fill `post.published_at` and `post.engagement.likes` (plus any save, comment or share count the board row lacked) on every row in this one call.","help":"Set to engagement to include publish date and like, save, comment, and share counts for each pin.","enum":["engagement"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N pins of the page (1 to 15). It is not a page size: `next_cursor` still advances past the full page, so pins beyond N on this page are not returned by the next page.","help":"How many pins to return from the top of the page, 1–15. Not a page size — the cursor still advances past the full page.","minimum":1,"maximum":15},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/pinterest/user/boards","method":"GET","platform":"pinterest","group":"User","label":"User/Boards","description":"Returns the boards a Pinterest user has created, each with its title, description, pin count, and cover image.\n\nUse it to list someone's boards from their handle, then pass a board URL to board to get that board's pins.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":4,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"The username of the user to get boards for. (e.g. broadstbullycom from https://www.pinterest.com/broadstbullycom/)","help":"Pinterest username to list boards for, e.g. broadstbullycom.","example":"pinterest"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response","help":"Return a trimmed-down version of the response with fewer fields."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/pinterest/trends","method":"GET","platform":"pinterest","group":"Trends","label":"Trends","description":"Returns the Pinterest Trends list for one country: ranked search terms with a relative search index, for growing, seasonal, monthly or yearly tables.\n\nUse it when you want what a market is searching for on Pinterest right now, with no keyword to start from.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"country","required":false,"in":"query","type":"string","description":"ISO country code, in any case: AR, AU, BR, CA, CO, DE, EG, ES, FR, GB, ID, IE, IN, IT, KR, MX, MY, NZ, PH, SA, TH, TR, US. Pinterest publishes no list for other countries, and one of them is a free 400. IE reads Pinterest's GB+IE list and AU and NZ read AU+NZ; GB alone has its own list. Defaults to US.","help":"Two-letter country code for the trends list (default US). Only Pinterest's supported countries are accepted.","enum":["AR","AU","BR","CA","CO","DE","EG","ES","FR","GB","ID","IE","IN","IT","KR","MX","MY","NZ","PH","SA","TH","TR","US"],"example":"DE"},{"name":"type","required":false,"in":"query","type":"string","description":"Which Pinterest Trends table: growing (the default), seasonal, top_monthly or top_yearly.","help":"Which Pinterest Trends table to read: growing (default), seasonal, top_monthly, or top_yearly.","enum":["growing","seasonal","top_monthly","top_yearly"],"example":"growing"},{"name":"limit","required":false,"in":"query","type":"integer","description":"How many terms to return, from the top, 1 to 50. Defaults to 25. The price is the same at any depth.","help":"How many trending terms to return, 1–50 (default 25).","minimum":1,"maximum":50,"example":"5"},{"name":"include","required":false,"in":"query","type":"string","description":"Keep only terms containing one of these keywords, comma-separated (up to 10, e.g. nails,wedding).","help":"Keep only terms containing one of these keywords, comma-separated (up to 10, e.g. nails,wedding)."},{"name":"exclude","required":false,"in":"query","type":"string","description":"Drop terms containing any of these keywords, comma-separated (up to 10, e.g. fall).","help":"Drop terms containing any of these keywords, comma-separated (up to 10, e.g. fall)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/quora/search","method":"GET","platform":"quora","group":"Search","label":"Search","description":"Returns Quora questions matching a keyword: title, URL, answer count, follower count, and publish time.\n\nUse it to find questions on a topic; use answers to read written answers on the same topic.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":0,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords, for example learn programming.","help":"Search keywords, for example learn programming.","example":"learn programming"},{"name":"time","required":false,"in":"query","type":"string","description":"Recency window: all, hour, day, week, month, or year. Default all.","help":"Recency window: all, hour, day, week, month, or year (default all).","enum":["all","hour","day","week","month","year"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Maximum rows to return, 1 to 10. Default 10.","help":"Maximum rows to return, 1-10 (default 10).","minimum":1,"maximum":10},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/quora/post","method":"GET","platform":"quora","group":"Post","label":"Post","description":"Returns one Quora question: title, body text, and published date. Quora questions rarely carry a separate body beyond the title.\n\nUse it when you have a question URL; use answers to find written answers on that topic by keyword.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Quora question, for example https://www.quora.com/What-is-the-best-alternative-to-SendGrid-Email-API.","help":"Full URL of the Quora question, e.g. https://www.quora.com/What-is-the-best-alternative-to-SendGrid-Email-API.","example":"https://www.quora.com/What-is-the-best-alternative-to-SendGrid-Email-API"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/quora/answers","method":"GET","platform":"quora","group":"Answers","label":"Answers","description":"Returns Quora answers matching a keyword: the answer text, author name and credential, upvotes, views, and the parent question title.\n\nUse it when you want written answers on a topic; use search for the questions themselves.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords, for example learn programming.","help":"Search keywords, for example learn programming.","example":"learn programming"},{"name":"time","required":false,"in":"query","type":"string","description":"Recency window: all, hour, day, week, month, or year. Default all.","help":"Recency window: all, hour, day, week, month, or year (default all).","enum":["all","hour","day","week","month","year"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Maximum rows to return, 1 to 10. Default 10.","help":"Maximum rows to return, 1-10 (default 10).","minimum":1,"maximum":10},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/quora/posts","method":"GET","platform":"quora","group":"Posts","label":"Posts","description":"Returns posts from Quora Spaces matching a keyword: URL, author, upvotes, comments, and publish time. Body text is often absent on this surface.\n\nUse it for Quora Space posts rather than Q&A content; use answers for written answers to questions.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords.","help":"Search keywords.","example":"learn programming"},{"name":"time","required":false,"in":"query","type":"string","description":"Recency window: all, hour, day, week, month, or year. Default all.","help":"Recency window: all, hour, day, week, month, or year (default all).","enum":["all","hour","day","week","month","year"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Maximum rows to return, 1 to 10. Default 10.","help":"Maximum rows to return, 1-10 (default 10).","minimum":1,"maximum":10},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/quora/profiles","method":"GET","platform":"quora","group":"Profiles","label":"Profiles","description":"Returns Quora profiles matching a keyword: display name, profile URL, credential, follower count, and avatar.\n\nUse it to find a person by name; use answers or posts to read what they have written.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":4,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords, for example a topic or a person's name.","help":"Search keywords, for example a topic or a person's name.","example":"learn programming"},{"name":"time","required":false,"in":"query","type":"string","description":"Recency window: all, hour, day, week, month, or year. Default all.","help":"Recency window: all, hour, day, week, month, or year (default all).","enum":["all","hour","day","week","month","year"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Maximum rows to return, 1 to 10. Default 10.","help":"Maximum rows to return, 1-10 (default 10).","minimum":1,"maximum":10},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/quora/spaces","method":"GET","platform":"quora","group":"Spaces","label":"Spaces","description":"Returns Quora Spaces matching a keyword: name, URL, description, member count, and icon.\n\nUse it to find Quora Spaces, topic communities, by name; use posts for what has been posted inside one.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords.","help":"Search keywords.","example":"learn programming"},{"name":"time","required":false,"in":"query","type":"string","description":"Recency window: all, hour, day, week, month, or year. Default all.","help":"Recency window: all, hour, day, week, month, or year (default all).","enum":["all","hour","day","week","month","year"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Maximum rows to return, 1 to 10. Default 10.","help":"Maximum rows to return, 1-10 (default 10).","minimum":1,"maximum":10},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/quora/topics","method":"GET","platform":"quora","group":"Topics","label":"Topics","description":"Returns Quora topics matching a keyword: name, URL, follower count, and topic photo.\n\nUse it to find a topic page by name; use search to find the questions tagged under it.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":6,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords.","help":"Search keywords.","example":"learn programming"},{"name":"time","required":false,"in":"query","type":"string","description":"Recency window: all, hour, day, week, month, or year. Default all.","help":"Recency window: all, hour, day, week, month, or year (default all).","enum":["all","hour","day","week","month","year"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Maximum rows to return, 1 to 10. Default 10.","help":"Maximum rows to return, 1-10 (default 10).","minimum":1,"maximum":10},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/subreddit","method":"GET","platform":"reddit","group":"Subreddit","label":"Subreddit","description":"Returns posts from a subreddit, each with title, body, score, comment count, author, permalink, and creation timestamp.\n\nUse it to read a community's feed, noting timeframe works only with sort=top, which is auto-selected when you omit sort; subreddit/search filters that same community by keyword.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":0,"params":[{"name":"subreddit","required":true,"in":"query","type":"string","description":"Subreddit name without the r/ prefix","help":"Subreddit name, without the r/ prefix.","example":"technology"},{"name":"timeframe","required":false,"in":"query","type":"string","description":"Timeframe to get posts from. Applied with sort=top (auto-selected when you omit sort).","help":"Time window for posts, used with sort=top (the default sort when omitted).","enum":["all","day","week","month","year"]},{"name":"sort","required":false,"in":"query","type":"string","description":"Sort order","help":"Sort order: best, hot, new, top, or rising.","enum":["best","hot","new","top","rising"]},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response. This also skips the enrichment pass, so `author.avatar_url`, `content.media_urls`, `flags.spoiler`, `post.url` and the `ext.*` fields are omitted along with the rest of the trimmed leaves.","help":"When true, returns a smaller response without avatars, media URLs, spoiler flags, and other extra fields."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/reddit/subreddit/details","method":"GET","platform":"reddit","group":"Subreddit","label":"Subreddit/Details","description":"Returns a subreddit's own details: subscriber count, active user count, description, creation date, rules, and icon URL.\n\nUse it to size up a community before pulling its posts; the name is case-sensitive here, so spell it exactly as Reddit does.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"subreddit","required":false,"in":"query","type":"string","description":"Subreddit name without the r/ prefix. Case-sensitive: use the subreddit's canonical casing (e.g. `AskReddit`).","help":"Subreddit name, without the r/ prefix. Case-sensitive: use its exact casing (e.g. AskReddit).","example":"AskReddit","one_of_group":"subreddit|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Subreddit URL","help":"Subreddit URL.","one_of_group":"subreddit|url"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/search","method":"GET","platform":"reddit","group":"Search","label":"Search","description":"Returns posts matching a keyword from across Reddit, each with title, score, comment count, subreddit, permalink, and the body at ext.selftext.\n\nUse it to search all of Reddit at once. Bodies arrive free here, so include_body=true is rarely needed and refunds what it does not spend. subreddit/search searches inside one community.","credits":{"min":10,"max":300},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":2,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search words or a phrase. Words match any, not all: vision pro also returns posts that mention only one of them. Wrap a phrase in double quotes to match it exactly (query=\"vision pro\"). Reddit operators such as subreddit:name work too.","help":"Search words, matching any of them. Wrap a phrase in double quotes to match it exactly.","example":"\"claude code\""},{"name":"sort","required":false,"in":"query","type":"string","description":"Sort by","help":"Sort order for results: relevance, new, top, or comment_count.","enum":["relevance","new","top","comment_count"]},{"name":"timeframe","required":false,"in":"query","type":"string","description":"Only return posts from this window. Applied on sort=relevance, sort=top and sort=comment_count. It has no effect with sort=new, which is already ordered newest-first and returns recent posts regardless.","help":"Time window for results, used with sort=relevance, top, or comment_count. Ignored when sort=new.","enum":["all","day","week","month","year"]},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response. On this endpoint it also skips the second source that widens the page, so a trimmed page is both thinner and usually shorter. Measured 09/09/2026: default 29 rows, `trim=true` 25 rows. It does not drop `author.avatar_url` or `ext.*` — those leaves stay when the first source already carried them. Use it to skip the widening pass, not to strip fields.","help":"When true, returns a smaller, faster response with fewer results."},{"name":"include_body","required":false,"in":"query","type":"boolean","description":"Set to true to include each post's body (selftext) on the search page. Rarely needed now: bodies arrive on the rows themselves. Link posts have no body, so they are looked up and not charged for.","help":"When true, includes each post's full text (selftext) in the search results."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/reddit/post","method":"GET","platform":"reddit","group":"Post","label":"Post","description":"Returns one post from its URL including the body text, plus score, comment count, share count, author, author avatar, thumbnail, and creation timestamp.\n\nUse it when you have a post URL and want that one post's body. Search rows carry their own bodies now, so you rarely need to fan out per post. post/comments returns the discussion.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Reddit post","help":"Full URL of the Reddit post.","example":"https://www.reddit.com/r/NoteTaking/comments/1o9s55r/i_tried_all_popular_ai_notetaking_apps_so_you/"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/post/comments","method":"GET","platform":"reddit","group":"Post","label":"Post/Comments","description":"Returns the full comment tree for a post, each comment with author, body, score, direct-reply count, nesting depth, timestamp, and its nested replies.\n\nUse it when you want the whole discussion rather than only top-level comments. Read data.truncated: true means the thread is incomplete, so keep paging while a cursor comes back.","credits":50,"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Reddit post to fetch comments for","help":"Full URL of the Reddit post to fetch comments for.","example":"https://www.reddit.com/r/NoteTaking/comments/1o9s55r/i_tried_all_popular_ai_notetaking_apps_so_you/"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get more comments, or replies.","help":"Cursor from the previous response, to get more comments or replies."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted, but not honoured on this endpoint: the source that serves it does not offer a trimmed shape, so the response is the same either way. Kept because removing an accepted parameter would break existing calls.","help":"No effect; accepted for compatibility."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/reddit/subreddit/search","method":"GET","platform":"reddit","group":"Subreddit","label":"Subreddit/Search","description":"Returns posts matching a query inside one subreddit, each with title, score, comment count, and permalink. This source sends no post body, so ext.selftext is null without include_body.\n\nUse it to search one community. Bodies cost extra here, so prefer search with query=subreddit:name plus your terms: bodies for one credit, though it returns a different set of rows.","credits":{"min":10,"max":260},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":5,"params":[{"name":"subreddit","required":true,"in":"query","type":"string","description":"Subreddit name (e.g. 'Fitness', not 'r/Fitness' or a full URL)","help":"Subreddit name (e.g. 'Fitness', not 'r/Fitness' or a full URL).","example":"technology"},{"name":"query","required":false,"in":"query","type":"string","description":"Search query to find matching content","help":"Search query to find matching content."},{"name":"sort","required":false,"in":"query","type":"string","description":"Sort order. For posts/media: relevance, hot, top, new, comments. For comments: relevance, top, new","help":"Sort order: relevance, hot, top, new, or comments (the comments endpoint supports only relevance, top, new).","enum":["relevance","hot","top","new","comments"]},{"name":"timeframe","required":false,"in":"query","type":"string","description":"Only return posts from this window. Applied on sort=relevance, sort=top and sort=comments. It has no effect with sort=new, which is already ordered newest-first and returns recent posts regardless.","help":"Time window for results, used with sort=relevance, top, or comments. Ignored when sort=new.","enum":["all","year","month","week","day","hour"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get more results. Get 'cursor' from previous response.","help":"Cursor from the previous response, to get the next page."},{"name":"include_body","required":false,"in":"query","type":"boolean","description":"Set to true to include each post's body (selftext) on the search page. Link posts have no body, so they are looked up and not charged for.","help":"When true, includes each post's full text (selftext) in the search results."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/profile","method":"GET","platform":"reddit","group":"Profile","label":"Profile","description":"Returns one Reddit account: total karma, the post/comment/award karma split, cake day, bio, avatar, banner, trophy count and profile title.\n\nUse it to size or vet an account before reading its posts. author.followers is null on purpose: Reddit publishes no public follower count, so karma is the reach signal.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":6,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Reddit username without the u/ prefix. Case-insensitive.","help":"Reddit username, without the u/ prefix. Case-insensitive.","example":"spez"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/profile/posts","method":"GET","platform":"reddit","group":"Profile","label":"Profile/Posts","description":"Returns the posts one account has submitted, newest first, with the body at ext.selftext, score, comment count, upvote ratio, flair, media and ext.subreddit.\n\nUse it to read one person's submissions across communities. An account with no posts and one that does not exist both return an empty list, so call profile to tell them apart.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":7,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Reddit username without the u/ prefix. Case-insensitive.","help":"Reddit username, without the u/ prefix. Case-insensitive.","example":"spez"},{"name":"sort","required":false,"in":"query","type":"string","description":"Sort order for the account's submissions. `top` defaults to the all-time window; pass `timeframe` to narrow it.","help":"Sort order for the account's posts: hot, new, or top. With top, pass timeframe to narrow the window (default all-time).","enum":["hot","new","top"]},{"name":"timeframe","required":false,"in":"query","type":"string","description":"Only return posts from this window. Applied on `sort=top`. Omitted `sort=top` is treated as `timeframe=all` so the documented call is not an empty page.","help":"Time window for posts, used only with sort=top (default all-time).","enum":["all","year","month","week","day","hour"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get more results. Get 'cursor' from the previous response.","help":"Cursor from the previous response, to get more results."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/profile/comments","method":"GET","platform":"reddit","group":"Profile","label":"Profile/Comments","description":"Returns an account's own comment history, newest first, each with the text, score, permalink, parent_id, the post it sits under and ext.subreddit.\n\nUse it when you need a real comment history rather than a sample.","credits":{"min":20,"max":2000},"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":8,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Reddit username without the u/ prefix. Case-insensitive.","help":"Reddit username, without the u/ prefix. Case-insensitive.","example":"spez"},{"name":"limit","required":false,"in":"query","type":"integer","description":"How many comments to return, 1-100, default 25. This is a depth control, not a page size: a higher limit reaches further back into the account's history at the same speed.","help":"How many comments to return, 1–100 (default 25). Higher values reach further back into the account's history.","minimum":1,"maximum":100},{"name":"before","required":false,"in":"query","type":"string","description":"Only return comments older than this date (YYYY-MM-DD). Use it to walk a long history in windows instead of raising limit.","help":"Only return comments older than this date (YYYY-MM-DD). Use to walk a long history in windows instead of raising limit."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/search/comments","method":"GET","platform":"reddit","group":"Search","label":"Search/Comments","description":"Returns comments matching a phrase from Reddit's comment index, each with its parent post inline: ext.post_title, ext.subreddit, ext.post_score and ext.post_url.\n\nUse it when the phrase lives in a reply rather than a title, and for author:username or subreddit:name sweeps. parent_id is null: the platform does not report thread position.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":9,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search phrase. Reddit's operators work here: `author:username` for one account's comments, `subreddit:name terms` to scope to a community, and quotes for an exact phrase.","help":"Search phrase. Supports Reddit operators: author:username, subreddit:name, and quotes for an exact phrase.","example":"best project management software"},{"name":"sort","required":false,"in":"query","type":"string","description":"Sort order for the comment hits.","help":"Sort order for the comment results: relevance, top, or new.","enum":["relevance","top","new"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get more results. Get 'cursor' from the previous response.","help":"Cursor from the previous response, to get more results."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/subreddits/search","method":"GET","platform":"reddit","group":"Subreddits","label":"Subreddits/Search","description":"Returns up to 25 communities matching a topic, each with the name at author.id, subscriber count, description and icon. include=details adds the creation date, weekly activity, rules and language.\n\nUse it to find which communities discuss a subject. Send include=details instead of one subreddit/details call per community, plus 1 per row filled, 26 at most.","credits":{"min":10,"max":260},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":10,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Topic or keyword to find communities for.","help":"Topic or keyword to find communities for.","example":"machine learning"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get more results. Get 'cursor' from the previous response.","help":"Cursor from the previous response, to get more results."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `details` (one token only) to fill `author.joined_at`, `author.ext.weekly_active_users`, `author.ext.weekly_contributions`, `author.ext.rules_text` and `author.ext.language` on every row in this one call (a row the details lookup's main source cannot answer gets only the creation date and the language, and is still billed).","help":"Set to details to include each community's creation date, activity stats, rules, and language.","enum":["details"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N communities of the page (1 to 25). It is not a page size: the cursor still advances past the whole page, so rows beyond N are not returned by the next page.","help":"How many communities to return from the top of the page, 1–25. Not a page size — the cursor still advances past the full page.","minimum":1,"maximum":25},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/search/media","method":"GET","platform":"reddit","group":"Search","label":"Search/Media","description":"Returns up to 25 Reddit posts that carry an image, video or gallery, with the media at content.media_urls plus title, score, comment count and subreddit.\n\nUse it for visual posts on a topic without filtering a mixed page yourself. subreddit:name terms scopes it to one community; timeframe has no effect on sort=new.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":11,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search phrase. Reddit's operators work here: `subreddit:name terms` scopes the sweep to one community, and quotes force an exact phrase.","help":"Search phrase. Supports subreddit:name to scope to one community, and quotes for an exact phrase.","example":"mechanical keyboard build"},{"name":"sort","required":false,"in":"query","type":"string","description":"Sort by","help":"Sort order for results: relevance, new, top, or comment_count.","enum":["relevance","new","top","comment_count"]},{"name":"timeframe","required":false,"in":"query","type":"string","description":"Only return posts from this window. Applied on sort=relevance, sort=top and sort=comment_count. It has no effect with sort=new, which is already ordered newest-first.","help":"Time window for results, used with sort=relevance, top, or comment_count. Ignored when sort=new.","enum":["all","day","week","month","year"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get more results. Get 'cursor' from the previous response.","help":"Cursor from the previous response, to get more results."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/post/transcript","method":"GET","platform":"reddit","group":"Post","label":"Post/Transcript","description":"Returns the transcript of a Reddit video post, both the raw caption file and a plain-text version, when Reddit publishes captions for it.\n\nUse it for video posts; when Reddit exposes no captions the transcript comes back empty and flagged rather than as an error.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":12,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Reddit post URL or direct v.redd.it video URL.","help":"Reddit post URL or direct v.redd.it video URL.","example":"https://www.reddit.com/r/youseeingthisshit/comments/1oiu9xm/football_nostalgiasaints_punter_head_coach_cant/"},{"name":"language","required":false,"in":"query","type":"string","description":"2-letter language code. Defaults to `en`.","help":"Two-letter language code for the transcript (default en)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/reddit/omni-search","method":"GET","platform":"reddit","group":"Omni search","label":"Omni Search","description":"Returns threads from across Reddit for one keyword with their top comments inline at top_comments, plus a roll-up of which subreddits are talking, their weekly active users and tone.\n\nUse it for a customer-listening sweep in one call rather than running search then post/comments per thread; it is slow and relevance is loose.","credits":{"min":50,"max":90},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":13,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keyword or phrase to sweep across Reddit.","help":"Keyword or phrase to sweep across Reddit.","example":"best mechanical keyboard"},{"name":"threads","required":false,"in":"query","type":"integer","description":"How many top threads to expand comments for (1-8, default 8).","help":"How many top threads to expand comments for, 1–8 (default 8).","example":"5"},{"name":"sort","required":false,"in":"query","type":"string","description":"Search sort order (relevance | new | top | comment_count).","help":"Search sort order: relevance, new, top, or comment_count.","enum":["relevance","new","top","comment_count"]},{"name":"timeframe","required":false,"in":"query","type":"string","description":"Time window for the search (all | day | week | month | year).","help":"Time window for the search: all, day, week, month, or year.","enum":["all","day","week","month","year"]},{"name":"subreddit","required":false,"in":"query","type":"string","description":"Scope the sweep to one subreddit (bare name, no r/ prefix).","help":"Scope the sweep to one subreddit (bare name, no r/ prefix)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Opaque cursor from a prior response's next_cursor to page deeper.","help":"Cursor from the previous response, to get the next page."},{"name":"include","required":false,"in":"query","type":"string","description":"CSV subset of subreddits,comments (default both). The comments block is returned as `threads[].top_comments`.","help":"Comma-separated subset to include: subreddits, comments, or both (default both)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/rumble/search","method":"GET","platform":"rumble","group":"Search","label":"Search","description":"Returns Rumble videos and shorts matching a keyword: title, URL, thumbnail, channel, published date, and view count.\n\nUse it to find videos by keyword; use channel/videos when you already know the channel.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":0,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search query.","help":"Search query.","example":"funny cats"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response: the next page number (e.g. `2`).","help":"Cursor from the previous response: the next page number, e.g. 2."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/rumble/channel/videos","method":"GET","platform":"rumble","group":"Channel","label":"Channel/Videos","description":"Returns a Rumble channel's metadata and a page of its videos and shorts.\n\nUse it when you have a channel handle or URL and want its videos; use search to find videos across Rumble by keyword.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Rumble channel handle.","help":"Rumble channel handle.","example":"CuteCats223","one_of_group":"handle|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Rumble channel URL.","help":"Rumble channel URL.","one_of_group":"handle|url"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response: the next page number (e.g. `2`).","help":"Cursor from the previous response: the next page number, e.g. 2."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/rumble/video","method":"GET","platform":"rumble","group":"Video","label":"Video","description":"Returns one Rumble video's title, description, thumbnail, channel, publish date, view count, likes, dislikes, captions, and media metadata.\n\nUse it when you have a single video URL and need its full details; use video/comments for the discussion, or video/transcript for the spoken words.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Rumble video URL.","help":"Rumble video URL.","example":"https://rumble.com/v79xhhm-discovery-example.html"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/rumble/video/transcript","method":"GET","platform":"rumble","group":"Video","label":"Video/Transcript","description":"Returns the transcript of a Rumble video when captions are available. If Rumble exposes no captions, transcript is null and nothing is charged.\n\nUse it when you need what was said in a video rather than its metadata; use video for the title, description, and engagement counts.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Rumble video URL.","help":"Rumble video URL.","example":"https://rumble.com/v784xoi-president-donald-j.-trump-and-secwar-pete-hegseth-hold-a-press-conference-a.html"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/rumble/video/comments","method":"GET","platform":"rumble","group":"Video","label":"Video/Comments","description":"Returns the top-level comments on a Rumble video: comment text, author, created time, like and dislike counts, and reply count.\n\nUse it to read a video's comments; use video for the video's own details.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Rumble video URL.","help":"Rumble video URL.","example":"https://rumble.com/v792vns-example.html"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/snapchat/profile","method":"GET","platform":"snapchat","group":"Profile","label":"Profile","description":"Returns a Snapchat user's public profile: display name, Bitmoji avatar URL, subscriber count, and bio description.\n\nUse it for a quick profile check; use spotlight/comments when you have a Spotlight snap URL instead.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Snapchat username","help":"Snapchat username.","example":"djkhaled305"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/snapchat/spotlight/comments","method":"GET","platform":"snapchat","group":"Spotlight","label":"Spotlight/Comments","description":"Returns comments on a Snapchat Spotlight snap: text, display name, reaction count, nested reply count, and timestamp.\n\nUse it when you have a Spotlight snap URL and want its comments; use profile for the poster's own public info.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Snapchat Spotlight snap.","help":"Full URL of the Snapchat Spotlight snap.","example":"https://www.snapchat.com/@lilah4823/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYY2pvZnd0ZXVmAZ8fgG8pAZ8ff-_IAAAAAQ"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/substack/posts","method":"GET","platform":"substack","group":"Posts","label":"Posts","description":"Returns a publication’s recent posts, or one post: title, full text and Markdown, author, reactions, comments, restacks, word count and whether it is paid.\n\nUse it with a publication URL (or custom domain) for its archive, or a /p/ post URL for one post.","credits":{"min":10,"max":120},"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"A Substack publication URL or custom domain, or one post URL (…/p/slug).","example":"https://www.astralcodexten.com"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Most recent posts to read, 1 to 100. Default 25. Billed per post returned.","minimum":1,"maximum":100},{"name":"start_date","required":false,"in":"query","type":"string","description":"Only posts published on or after this date (YYYY-MM-DD). Applied to the `limit` most recent posts, so raise `limit` to reach further back."},{"name":"end_date","required":false,"in":"query","type":"string","description":"Only posts published on or before this date (YYYY-MM-DD). Applied to the `limit` most recent posts, so raise `limit` to reach further back."},{"name":"only_free","required":false,"in":"query","type":"boolean","description":"true for free (non-paywalled) posts only."},{"name":"content_type","required":false,"in":"query","type":"string","description":"Only one post type. Default all.","enum":["all","newsletter","podcast","thread"]},{"name":"min_comments","required":false,"in":"query","type":"integer","description":"Only posts with at least this many comments.","minimum":0},{"name":"min_reactions","required":false,"in":"query","type":"integer","description":"Only posts with at least this many reactions.","minimum":0},{"name":"min_word_count","required":false,"in":"query","type":"integer","description":"Only posts with at least this many words.","minimum":0},{"name":"include_content","required":false,"in":"query","type":"boolean","description":"Include the article body (text and Markdown). Default true; false is faster."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/telegram/profile","method":"GET","platform":"telegram","group":"Profile","label":"Profile","description":"Returns a public Telegram channel or group's profile: display name, description, avatar URL, verification status, and subscriber count.\n\nUse it for a channel's subscriber count and basic info; use profile/posts for its recent posts.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Public Telegram handle, with or without the leading @, or a t.me channel URL","help":"Public Telegram handle, with or without the leading @, or a t.me channel URL.","example":"telegram"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/telegram/profile/posts","method":"GET","platform":"telegram","group":"Profile","label":"Profile/Posts","description":"Returns one page of recent public posts from a Telegram channel or group, each with its text, publish time, view count, reaction breakdown, and media URLs.\n\nUse it to list a channel's recent posts; use post when you already have a single post's URL.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Public Telegram handle, with or without the leading @, or a t.me channel URL","help":"Public Telegram handle, with or without the leading @, or a t.me channel URL.","example":"telegram"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous page's pagination block. Omit it for the most recent posts.","help":"Cursor from the previous page's pagination block. Omit it for the most recent posts."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/telegram/post","method":"GET","platform":"telegram","group":"Post","label":"Post","description":"Returns one public Telegram post: text, publish time, view count, the per-emoji reaction breakdown, and direct media URLs.\n\nUse it when you have a single t.me post URL; use profile/posts to list a channel's recent posts instead.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Public Telegram post URL, in the form https://t.me/{handle}/{id}","help":"Public Telegram post URL, in the form https://t.me/{handle}/{id}.","example":"https://t.me/durov/546"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/threads/profile","method":"GET","platform":"threads","group":"Profile","label":"Profile","description":"Returns a Threads account's public profile: bio, the external link set in that bio, follower count, profile picture URL, and verification status.\n\nUse it when you have a handle and want the account itself; user/posts returns what that account has posted.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Threads username without the @ symbol","help":"Threads username, without the @ symbol.","example":"zuck"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/threads/user/posts","method":"GET","platform":"threads","group":"User","label":"User/Posts","description":"Returns a Threads user's most recent posts, usually about 15. Send limit above 15 (up to 50) to collect more of the same feed, with view counts and display names filled in.\n\nUse it for a recent-activity window of about 15 posts. Set limit above 15 for deeper history on the same feed, or use search for a keyword lookup.","credits":{"min":10,"max":1650},"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":1,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Threads username without the @ symbol","help":"Threads username, without the @ symbol.","example":"zuck"},{"name":"since","required":false,"in":"query","type":"string","description":"Only posts published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older posts are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Pinned posts sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.","help":"Only include posts published on or after this date: YYYY-MM-DD or a full ISO 8601 timestamp. Pinned posts are always included regardless of date.","example":"2026-09-01"},{"name":"stop_at_id","required":false,"in":"query","type":"string","description":"The id (`post.id`) or URL (`post.url`) of the newest post you already hold. The page stops just before it: that post and everything after it are left off, `next_cursor` is not returned, and `pagination.stopped_at` is `known_id`. A pinned post never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. `pagination.stopped_at` is `end` when the list ran out first and `null` while there is more to walk.","help":"Post ID or URL of the newest post you already have. The page stops just before it, so you only get new posts. Pinned posts never count as the stop point."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Ask for a stripped record. This is a real shape change, not just less whitespace: a trimmed row carries only the id, text, shortcode, like count, timestamp and author, so media, reply count, share count, view count, topic tag, pinned flag and quoted post all come back null. Ignored when `limit` is above 15, because the deeper source has no trimmed mode.","help":"Return a stripped post with just id, text, shortcode, like count, timestamp and author. Ignored when limit is above 15."},{"name":"limit","required":false,"in":"query","type":"integer","description":"How many posts to collect, 1 to 50. Leave it off, or send 15 or less, and nothing changes: you get the bundled window.","help":"Number of posts to collect, 1-50. 15 or fewer returns the default bundled window.","minimum":1,"maximum":50},{"name":"include","required":false,"in":"query","type":"string","description":"Send `engagement` to fill `engagement.views` and `post.author.display_name` on each post of the default window by looking it up on `/v1/threads/post` in the same call. Adds 4 to 12 seconds, never more than 15. One token only: `engagement`.","help":"Set to engagement to add view counts and author display name for posts in the default window. Adds up to 15 seconds.","enum":["engagement"]},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/threads/post","method":"GET","platform":"threads","group":"Post","label":"Post","description":"Returns one Threads post's text, like, reply and repost counts, every carousel slide or video URL, author, creation time, and topic tag at post.ext.topic_tag.\n\nUse it when you have a post URL and want that single post rather than a whole feed. If it is a quote post, the quoted post arrives at post.ext.quoted_post.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Threads post, for example https://www.threads.com/@zuck/post/DZpPDXbCeTt. Both threads.com and threads.net are accepted.","help":"Full URL of the Threads post. Both threads.com and threads.net links work.","example":"https://www.threads.com/@zuck/post/DZpPDXbCeTt"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Ask for a stripped record. This is a real shape change, not just less whitespace: a trimmed row carries only the id, text, shortcode, like count, timestamp and author, so media, reply count, share count, view count, topic tag, pinned flag and quoted post all come back null.","help":"When true, returns only the id, text, like count, timestamp, and author — media, counts, and other fields come back empty."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/threads/search","method":"GET","platform":"threads","group":"Search","label":"Search","description":"Returns Threads posts matching a keyword, each with its text, like count, author, creation time, and the topic tag it was filed under at post.ext.topic_tag, plus a cursor for the next window.\n\nUse it to find posts by topic across Threads. Follow pagination.next_cursor to page deeper, or set limit (up to 100) to collect several windows in one call; start_date and end_date bound the period.","credits":{"min":10,"max":340},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":3,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find Threads posts","help":"Search keyword or phrase to find Threads posts.","example":"artificial intelligence"},{"name":"start_date","required":false,"in":"query","type":"string","description":"Inclusive start of the search period (YYYY-MM-DD). Pagination never walks past it, and a relaxed query drops any post older than it. Threads treats the date pair as a ranking hint rather than a filter, so the window is enforced on our side: a post we cannot date is treated as outside it.","help":"Inclusive start of the search period, as YYYY-MM-DD."},{"name":"end_date","required":false,"in":"query","type":"string","description":"Inclusive end of the search period (YYYY-MM-DD). Pagination starts here and walks back in time, and a relaxed query drops any post newer than it.","help":"Inclusive end of the search period, as YYYY-MM-DD."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Ask for a stripped record. This is a real shape change, not just less whitespace: a trimmed row carries only the id, text, shortcode, like count, timestamp and author, so media, reply count, share count, view count, topic tag, pinned flag and quoted post all come back null.","help":"When true, returns only the id, text, like count, timestamp, and author — media, counts, and other fields come back empty."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Opaque cursor from a prior response's pagination.next_cursor, passed back verbatim, to fetch the next (older) result window. It carries your date bounds, so paging cannot escape the period you asked for. A request that sends a cursor is never query-relaxed.","help":"Cursor from the previous response, to get the next (older) page."},{"name":"limit","required":false,"in":"query","type":"integer","description":"Collect AT LEAST this many unique posts in one call (1-100). This is a collection target, not a page size: the API walks whole result windows server-side until it has collected this many (or the query runs dry), so the response usually carries somewhat more than you asked for and never fewer unless the query ran out. Nothing you paid for is trimmed away. Omit for a single window. BUDGET FOR THE WALL CLOCK: the windows run one after another, at roughly 3.4 seconds each, so a high limit is a long request. Measured on production 07/09/2026, cache-cold: no limit 3.5s for 20 posts, limit=30 7.3s for 37, limit=50 10.2s for 55, limit=100 19.5s for 111. If your HTTP client defaults to a 10-second timeout, limit=50 and above will not fit inside it. Either raise the client timeout, or ask for a smaller limit and page with pagination.next_cursor, which costs the same credits for the same posts.","help":"Minimum unique posts to collect, 1-100 (omit for a single page). Higher values take much longer — a limit of 50+ often takes 10+ seconds.","minimum":1,"maximum":100},{"name":"expand","required":false,"in":"query","type":"boolean","description":"Set to false to search the exact phrase only. Ignored on a request that carries a cursor.","help":"Set to false to search the exact phrase only, instead of an expanded query. Ignored when a cursor is included."},{"name":"include","required":false,"in":"query","type":"string","description":"Send `engagement` to fill `engagement.views` and `post.flags.pinned` on the first 20 posts by looking each one up on `/v1/threads/post` in the same call. Adds 3 to 12 seconds, never more than 12. One token only: `engagement`. Not accepted with a `limit` above 20; page with the cursor for more.","help":"Set to engagement to add view counts and pinned status for the first 20 posts. Adds up to 12 seconds; not allowed with limit above 20.","enum":["engagement"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5}],"available":true},{"path":"/v1/threads/post/comments","method":"GET","platform":"threads","group":"Post","label":"Post/Comments","description":"Returns the replies Threads bundles with a post, usually about 20. Send limit above 25 (up to 50) to collect more first-level replies from a second source.\n\nUse it to read the reaction under a post you already have the URL for. It is one window with no cursor. Set limit above 25 when the bundled window is not enough.","credits":{"min":10,"max":100},"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Threads post whose replies you want, for example https://www.threads.com/@zuck/post/DZpPDXbCeTt. Both threads.com and threads.net are accepted.","help":"Full URL of the Threads post to fetch replies for. Both threads.com and threads.net links work.","example":"https://www.threads.com/@zuck/post/DZpPDXbCeTt"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Ask for a stripped record. This is a real shape change, not just less whitespace: a trimmed row carries only the id, text, shortcode, like count, timestamp and author, so media, reply count, share count, view count, topic tag, pinned flag and quoted post all come back null. Ignored when `limit` is above 25, because the deeper source has no trimmed mode.","help":"When true, returns only the id, text, like count, timestamp, and author. Ignored when limit is above 25."},{"name":"limit","required":false,"in":"query","type":"integer","description":"How many replies to collect, 1 to 50. Leave it off, or send 25 or less, and nothing changes: you get the bundled window. Threads publishes only part of a large conversation without a login, so a post declaring a thousand replies will still return about 50.","help":"How many replies to return, 1–50. Threads only exposes about 50 replies per post without a login, even on larger threads.","minimum":1,"maximum":50,"example":"50"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/threads/search/users","method":"GET","platform":"threads","group":"Search","label":"Search/Users","description":"Returns Threads accounts matching a query, with handle, display name, avatar and verification status. Follower count, bio and the private flag stay null unless you send include=profile.\n\nUse it to find accounts by name or topic; search looks for posts instead of people. Send include=profile when you need follower count and bio on the same rows, per account filled.","credits":{"min":10,"max":130},"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":5,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find Threads users","help":"Search keyword or phrase to find Threads users.","example":"tech"},{"name":"include","required":false,"in":"query","type":"string","description":"Send `profile` to fill `author.followers`, `author.bio`, `author.private` and `external_url` on each account by looking it up on `/v1/threads/profile` in the same call. Adds 3 to 6 seconds, never more than 12. One token only: `profile`.","help":"Set to profile to add follower count, bio, privacy status and bio link for each account. Adds up to 6 seconds.","enum":["profile"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N accounts of the page, 1 to 12.","help":"Number of accounts to return, 1-12.","minimum":1,"maximum":12},{"name":"include_details","required":false,"in":"query","type":"boolean","description":"Prefer `include=profile` in new code.","help":"Deprecated; use include=profile instead."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/profile","method":"GET","platform":"tiktok","group":"Profile","label":"Profile","description":"Returns a TikTok account's public profile: display name, bio, follower count on author.followers (or the rounded figure with followers_approximate), likes, verification, and user id.\n\nUse it when you have a handle and want a quick snapshot of an account before pulling its videos or followers.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"TikTok username without the @ symbol.","help":"TikTok username without the @ symbol.","example":"charlidamelio","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"TikTok numeric user ID. Use this for faster responses.","help":"TikTok numeric user id. Faster than using a handle.","one_of_group":"handle|user_id"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/profile/videos","method":"GET","platform":"tiktok","group":"Profile","label":"Profile/Videos","description":"Returns a page of an account's recent public videos, each with caption, view, like, comment and share counts, and a thumbnail URL. Handle lookup covers login or age-walled profiles.\n\nUse it to list what one account has posted and page through it. Results come back in the source order, so sort_by does not reorder them. To find videos from many accounts by keyword, use search.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"TikTok username without the @ symbol","help":"TikTok username without the @ symbol.","example":"charlidamelio","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"TikTok user id. Use this for faster responses.","help":"TikTok user id. Faster than using a handle.","one_of_group":"handle|user_id"},{"name":"since","required":false,"in":"query","type":"string","description":"Only videos published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older videos are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Pinned videos sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.","help":"Only return videos published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops once older videos are reached; pinned videos don't count.","example":"2026-09-01"},{"name":"stop_at_id","required":false,"in":"query","type":"string","description":"The id (`post.id`) or URL (`post.url`) of the newest video you already hold. The page stops just before it: that video and everything after it are left off, `next_cursor` is not returned, and `pagination.stopped_at` is `known_id`. A pinned video never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. `pagination.stopped_at` is `end` when the list ran out first and `null` while there is more to walk.","help":"Id or URL of the newest video you already have. Paging stops right before it, so you only get videos newer than that one."},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Accepted for compatibility and ignored on this endpoint: neither `latest` nor `popular` reorders the page. Videos come back in the source's own order, described above. To rank a creator's videos by views or likes, page through with `max_cursor` and sort the collected rows yourself.","help":"No effect; videos always come back in the platform's own order. Page with max_cursor and sort the results yourself if needed.","enum":["latest","popular"]},{"name":"region","required":false,"in":"query","type":"string","description":"Region (Country) you want the proxy in. Defaults to US. It does not filter the videos. The country TikTok registers each video to is post.ext.region.","help":"Two-letter country code to fetch from, default US. It does not filter the videos; each video's own country is post.ext.region."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.","help":"No effect; accepted for compatibility."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/tiktok/post","method":"GET","platform":"tiktok","group":"Post","label":"Post","description":"Returns one TikTok video in full: caption, engagement counts, author, sound, video metadata, and any on-screen text the creator typed with TikTok's text tool (post.ext.on_screen_texts).\n\nUse it when you already have a video URL and want that single video's numbers, rather than a list from profile/videos or search.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the TikTok video","help":"Full URL of the TikTok video.","example":"https://www.tiktok.com/@mrbeast/video/7654638524729216287"},{"name":"region","required":false,"in":"query","type":"string","description":"Two-letter country code for the proxy region (US, GB, FR, PH). The primary source does not take a region, so it is honoured only when a fallback source serves the request; a region-locked video (commonly from the Philippines) that fails on the primary is retried on the fallback with this value.","help":"Two-letter country code to use when fetching a region-locked video (e.g. one only available in the Philippines)."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.","help":"No effect; accepted for compatibility."},{"name":"download_media","required":false,"in":"query","type":"boolean","description":"Set to true to also download the video/images and get back durable hosted media URLs under `data.post.ext.download_media_urls` (`[{ post_id, cdn_url, type, cached }]`). Use these for archiving; the raw `media_urls` are short-lived signed CDN links that expire. Adds a few seconds of latency while the media is fetched.","help":"Also save the video/images and return long-lived media links. Adds a few seconds; not available for every video."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/post/comments","method":"GET","platform":"tiktok","group":"Post","label":"Post/Comments","description":"Returns a page of comments on one TikTok video, each with the commenter's username, comment text, like count, reply count, and timestamp.\n\nUse it to read a video's comment section; to expand one thread, take a comment's id and call video/comment/replies.","credits":{"min":10,"max":30},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the TikTok video to fetch comments for","help":"Full URL of the TikTok video to fetch comments for.","example":"https://www.tiktok.com/@mrbeast/video/7654638524729216287"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor to get more comments. Get 'cursor' from previous response.","help":"Cursor from the previous response, to get more comments."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.","help":"No effect; accepted for compatibility."},{"name":"sort","required":false,"in":"query","type":"string","description":"Optional. Without it, comments come in TikTok's own order (a relevance ranking, not newest first). `recent` returns them newest first by published_at; `top` returns them by like count. TikTok has no newest-first order of its own, so `recent` sorts the comments that were read: set scan_pages to read more of the thread.","help":"How to order comments: top by like count, recent by newest first. Without it, comments come in TikTok's own relevance order.","enum":["top","recent"]},{"name":"scan_pages","required":false,"in":"query","type":"integer","description":"Optional, 1 to 3, default 1. Reads that many pages, drops comments repeated across pages, and returns them all in the `sort` order (TikTok's own order when sort is absent).","help":"Number of comment pages to read and merge, 1-3 (default 1). More pages means more comments to sort through.","minimum":1,"maximum":3},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/tiktok/video/comment/replies","method":"GET","platform":"tiktok","group":"Video","label":"Video/Comment/Replies","description":"Returns the replies under a single TikTok comment, with each reply's text, author, likes, and timestamps.\n\nUse it after post/comments: pass the comment_id it returned together with the same video url to expand one thread.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"comment_id","required":true,"in":"query","type":"string","description":"TikTok comment ID. This is the cid from the comments endpoint.","help":"TikTok comment id — the cid from the comments endpoint.","example":"7654640784985211670"},{"name":"url","required":true,"in":"query","type":"string","description":"TikTok video URL. This is the url from the comments endpoint.","help":"TikTok video URL — the url from the comments endpoint.","example":"https://www.tiktok.com/@mrbeast/video/7654638524729216287"},{"name":"cursor","required":false,"in":"query","type":"integer","description":"Cursor to get more replies. Get 'cursor' from previous response.","help":"Cursor from the previous response, to get the next page of replies."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/tiktok/comment","method":"GET","platform":"tiktok","group":"Comment","label":"Comment","description":"Returns one TikTok comment with its current like count, reply count, pinned flag, author, and timestamp, found by link, by id, or by its text.\n\nUse it to re-check a single known comment without paging the whole section; use post/comments when you want the section itself.","credits":{"min":20,"max":60},"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"comment_url","required":false,"in":"query","type":"string","description":"A TikTok comment URL: `https://www.tiktok.com/@{handle}/video/{videoId}?comment_id={cid}`, the `m.tiktok.com/v/{id}.html?...&share_comment_id={cid}` share form, or a `vm.tiktok.com/{code}` / `tiktok.com/t/{code}` shortlink. The `cid`/`comment_id`/`share_comment_id` query value may be numeric or the base64 form TikTok's share sheet emits (`?cid=NzY1...`): both are accepted; base64 is decoded automatically. Mutually exclusive with `post_url`+`comment_id`.","help":"Full comment URL (video URL with comment_id, or a share link) — numeric or base64 comment ids both work. Use instead of post_url + comment_id.","example":"https://www.tiktok.com/@mrbeast/video/7654638524729216287?comment_id=7654640784985211670","one_of_group":"comment_url|post_url"},{"name":"post_url","required":false,"in":"query","type":"string","description":"The post URL (`https://www.tiktok.com/@{handle}/video/{videoId}`). Combine with `comment_id`, or with `author_username`/`text_contains` for a search.","help":"TikTok video URL. Combine with comment_id, or with author_username/text_contains to search its comments.","one_of_group":"comment_url|post_url"},{"name":"comment_id","required":false,"in":"query","type":"string","description":"The target comment's numeric id (the `cid` from the comments endpoint). Requires `post_url`. Note that TikTok share links carry a base64-encoded `cid`: pass such a link as `comment_url` instead (decoded automatically), or base64-decode the value to its digits before passing it here.","help":"Numeric id of the comment (the cid from the comments endpoint). Requires post_url; use comment_url instead if you only have a base64 share link."},{"name":"parent_comment_id","required":false,"in":"query","type":"string","description":"The parent comment's numeric id: supply this when the target is a reply so it can be resolved directly via the native replies endpoint.","help":"Numeric id of the parent comment. Supply this when the target is a reply, for a faster direct lookup."},{"name":"author_username","required":false,"in":"query","type":"string","description":"Return up to `max` comments authored by this username (no comment id needed). Mutually exclusive with `text_contains` and any comment id.","help":"Username to filter comments by, up to the max count. Don't combine with text_contains or a comment ID."},{"name":"text_contains","required":false,"in":"query","type":"string","description":"Return up to `max` comments whose text contains this snippet (case-insensitive). Mutually exclusive with `author_username` and any comment id.","help":"Text snippet to match in comments (case-insensitive), up to the max count. Don't combine with author_username or a comment ID."},{"name":"deep_scan","required":false,"in":"query","type":"boolean","description":"Widen the scan budget for deeply-buried comments (raises the page ceiling and deadline).","help":"Search more pages and allow more time to find a deeply buried comment."},{"name":"position_hint","required":false,"in":"query","type":"string","description":"Opaque token from a prior lookup's `lookup.position_hint`. Passing it back probes the comment's last-known location first, making a re-check of an already-found comment cheap.","help":"Token from a prior lookup's position hint. Pass it back to quickly re-check a comment you already found."},{"name":"max","required":false,"in":"query","type":"integer","description":"For `author_username`/`text_contains` search: max matches to return (1-20, default 5).","help":"Max matching comments to return for a username/text search, 1-20 (default 5)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/search","method":"GET","platform":"tiktok","group":"Search","label":"Search","description":"Returns TikTok videos matching a keyword, each with caption, view and like counts, author details, a thumbnail, and post.ext.region (the country the video is registered to).\n\nUse it for a video keyword search you can page and sort. region= only sets the proxy; filter on post.ext.region for one country. limit=120 returns one page of up to 120. search/top is the Top tab.","credits":{"min":10,"max":370},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":6,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find TikTok videos","help":"Search keyword or phrase to find TikTok videos.","example":"cooking recipes"},{"name":"date_posted","required":false,"in":"query","type":"string","description":"Time Frame","help":"How recently the video was posted: yesterday, this-week, this-month, last-3-months, last-6-months or all-time.","enum":["yesterday","this-week","this-month","last-3-months","last-6-months","all-time"]},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Sort by","help":"Sort order for results: relevance, new, top, or comment_count.","enum":["relevance","most-liked","date-posted"]},{"name":"region","required":false,"in":"query","type":"string","description":"Sets the proxy country (ISO 3166-1 alpha-2). It does not filter the page to that country. Each row already carries post.ext.region, the country the video is registered to; filter on that leaf when you need only one country.","help":"Two-letter country code (ISO 3166-1) to fetch results as seen from that country. Doesn't filter results — check each row's region field instead.","example":"ES"},{"name":"cursor","required":false,"in":"query","type":"integer","description":"Cursor to get more videos. Get 'cursor' from previous response. Ignored when `limit` is set: that call is a single page.","help":"Cursor from the previous response, to get the next page. Ignored when limit is set, since that returns a single page."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.","help":"No effect; accepted for compatibility."},{"name":"limit","required":false,"in":"query","type":"integer","description":"Bulk labeled page: up to 120 videos in one call, each with post.ext.region. The value rounds up to the next multiple of 30 (30, 60, 90 or 120). The source can repeat a video; repeats are removed, so a 120 page is often a little under 120 unique videos. Omit limit for the default page of about 30, which pages with cursor and carries the same post.ext.region. Does not filter by country; drop rows yourself on post.ext.region.","help":"Number of videos to return in one call, 1-120 (rounds up to the nearest 30). Duplicates are removed, so counts can land under the limit.","minimum":1,"maximum":120,"example":"120"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"country","required":false,"in":"query","type":"string","description":"Comma-separated two-letter ISO 3166-1 codes, for example `US,GB`. Keep only videos TikTok registers to one of these countries (`post.ext.region`); a row with no country is discarded. This filters rows; it does not change where the search runs (that is `region`).","help":"Comma-separated two-letter country codes (e.g. US,GB) to keep only videos registered to those countries. Use region to set where the search runs."},{"name":"exclude_country","required":false,"in":"query","type":"string","description":"Comma-separated two-letter ISO 3166-1 codes, for example `IN`. Discard videos TikTok registers to any of these countries (`post.ext.region`); a row with no country is kept.","help":"Comma-separated two-letter country codes (e.g. IN) to drop videos registered to those countries. Videos with no country are kept."},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5}],"available":true},{"path":"/v1/tiktok/trending","method":"GET","platform":"tiktok","group":"Trending","label":"Trending","description":"Returns a page of popular TikTok videos with caption, view and like counts, author and thumbnail. Every row carries post.ext.region, the country the video is registered to.\n\nUse it with feed=local for videos mostly from one country (57% measured). The default feed is largely worldwide whatever region you pass, so filter on post.ext.region.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":7,"params":[{"name":"region","required":true,"in":"query","type":"string","description":"ISO 3166-1 alpha-2 country code (e.g., US, GB, DE). On the default feed it sets the country the request is routed through and does not filter videos; with `feed=local` it sets the country the For You feed is built for. Either way, check `ext.region` on each row for the country a video is actually from.","help":"Two-letter country code (e.g. US, GB, DE). On the default feed this doesn't filter videos; with feed=local it sets the country the feed is built for.","example":"US"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; it has no effect with `feed=local`.","help":"No effect with feed=local; accepted for compatibility."},{"name":"feed","required":false,"in":"query","type":"string","description":"`global` (default): the web trending feed routed through `region`, mostly worldwide content, about 13 videos in 3 to 12 seconds.","help":"Which trending feed to read. global (default) is mostly worldwide content, shaped by region.","enum":["global","local"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/search/hashtag","method":"GET","platform":"tiktok","group":"Search","label":"Search/Hashtag","description":"Returns TikTok videos posted under a given hashtag, each with caption, view, like, comment and share counts, author details, and a thumbnail.\n\nUse it to track one tag such as a campaign or challenge; use search when you want a free text keyword rather than a tag.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":8,"params":[{"name":"hashtag","required":true,"in":"query","type":"string","description":"Hashtag to search for without the # symbol","help":"Hashtag to search for, without the # symbol.","example":"fyp"},{"name":"region","required":false,"in":"query","type":"string","description":"Region the proxy will be set to. Note: this isn't going to grab you all tiktoks from this region, you're just setting the proxy there.","help":"Two-letter country code to fetch results as seen from that region. Does not filter results to that region."},{"name":"cursor","required":false,"in":"query","type":"integer","description":"Cursor to get more videos. Get 'cursor' from previous response.","help":"Cursor from the previous response, to get the next page of videos."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.","help":"No effect; accepted for compatibility."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5}],"available":true},{"path":"/v1/tiktok/search/top","method":"GET","platform":"tiktok","group":"Search","label":"Search/Top","description":"Returns the videos TikTok ranks highest for a keyword on its Top tab, each with caption, author, engagement counts, a music id, and post.ext.region (the country the video is registered to).\n\nUse it for TikTok's own relevance ranking. region= only sets the proxy; filter on post.ext.region for one country. search/users returns accounts, which this endpoint does not include.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":9,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase","help":"Search keyword or phrase.","example":"dance challenge"},{"name":"publish_time","required":false,"in":"query","type":"string","description":"Time Frame TikTok was posted","help":"How recently the video was posted: yesterday, this-week, this-month, last-3-months, last-6-months or all-time.","enum":["yesterday","this-week","this-month","last-3-months","last-6-months","all-time"]},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Sort by","help":"Sort order for results: relevance, new, top, or comment_count.","enum":["relevance","most-liked","date-posted"]},{"name":"region","required":false,"in":"query","type":"string","description":"Sets the proxy country (ISO 3166-1 alpha-2). It does not filter the page to that country. Each row already carries post.ext.region, the country the video is registered to; filter on that leaf when you need only one country.","help":"Two-letter country code (ISO 3166-1) to fetch results as seen from that country. Doesn't filter results — check each row's region field instead."},{"name":"cursor","required":false,"in":"query","type":"integer","description":"Cursor to get more videos. Get 'cursor' from previous response.","help":"Cursor from the previous response, to get the next page of videos."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"country","required":false,"in":"query","type":"string","description":"Comma-separated two-letter ISO 3166-1 codes, for example `US,GB`. Keep only videos TikTok registers to one of these countries (`post.ext.region`); a row with no country is discarded. This filters rows; it does not change where the search runs (that is `region`).","help":"Comma-separated two-letter country codes (e.g. US,GB) to keep only videos registered to those countries. Use region to set where the search runs."},{"name":"exclude_country","required":false,"in":"query","type":"string","description":"Comma-separated two-letter ISO 3166-1 codes, for example `IN`. Discard videos TikTok registers to any of these countries (`post.ext.region`); a row with no country is kept.","help":"Comma-separated two-letter country codes (e.g. IN) to drop videos registered to those countries. Videos with no country are kept."},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/search/users","method":"GET","platform":"tiktok","group":"Search","label":"Search/Users","description":"Returns TikTok accounts for a search term with username, name, avatar, followers, verification. include=profile adds bio, region, link and category.\n\nUse it to find accounts by name or topic. Add country=KR (or US, DE, …) when you need creators in one country. The video searches, search and search/top, give you posts rather than accounts.","credits":{"min":10,"max":1310},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":10,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find TikTok users","help":"Search keyword or phrase to find TikTok users.","example":"cooking"},{"name":"cursor","required":false,"in":"query","type":"integer","description":"Cursor to get more users. Get 'cursor' from previous response.","help":"Cursor from the previous response, to get the next page of users."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.","help":"No effect; accepted for compatibility."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `profile` (one token only) to fill `author.bio`, `author.location` (the ISO region), `external_url` and `author.ext.business_category` on every row in this one call.","help":"Set to profile to add bio, region, bio link and business category for every user in this call.","enum":["profile"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N rows of the page (1 to 30) after the search has run. On the global page it is not a page size: `next_cursor` still advances past the full page, so rows beyond N on this page are not returned by the next page.","help":"Number of results to return from the page, 1-30. Paging still advances past the full page, not just this count.","minimum":1,"maximum":30},{"name":"country","required":false,"in":"query","type":"string","description":"ISO 3166-1 alpha-2 account region to filter by (KR, US, DE, …). Omit it for the global default page. A code this endpoint does not accept is a free 400.","help":"Two-letter country code to filter accounts by region. Omit for the global default page.","enum":["US","GB","CA","AU","NZ","IE","DE","FR","ES","IT","PT","NL","BE","CH","AT","SE","NO","DK","FI","IS","PL","CZ","SK","HU","RO","BG","GR","HR","RS","SI","UA","RU","TR","IL","AE","SA","QA","KW","EG","MA","ZA","NG","KE","GH","TZ","ET","BR","MX","AR","CO","CL","PE","VE","EC","UY","PY","BO","CR","PA","DO","JM","JP","KR","CN","TW","HK","MO","SG","MY","ID","TH","VN","PH","IN","PK","BD","LK","NP","MM","KH"],"example":"KR"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/similar","method":"GET","platform":"tiktok","group":"Similar","label":"Similar","description":"Returns about 30 TikTok accounts similar to a given creator, each with username, display name, avatar, bio, verification, and follower, following, video and like counts.\n\nUse it to find lookalike creators for one you already know; it returns a single fixed list, so call it again on a result to go wider.","credits":{"min":50,"max":50},"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":11,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"TikTok username of the seed creator, without the @ symbol.","help":"TikTok username of the creator to find lookalikes for, without the @.","example":"gordonramsayofficial"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/user/audience","method":"GET","platform":"tiktok","group":"User","label":"User/Audience","description":"Returns where a creator's followers are: the top countries in their audience, with sampled follower counts and each country's share.\n\nUse it for audience geography only. Age and gender are not available publicly on TikTok or any other platform.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":12,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"TikTok username without the @ symbol","help":"TikTok username without the @ symbol.","example":"charlidamelio"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/user/followers","method":"GET","platform":"tiktok","group":"User","label":"User/Followers","description":"Returns a page of accounts that follow a TikTok user, each with username, display name, avatar, and its own follower count.\n\nUse it to list who follows an account and page through them; user/following returns the reverse, the accounts they follow.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":13,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"TikTok username without the @ symbol","help":"TikTok username without the @ symbol.","example":"stoolpresidente","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"User id. Use this for faster response times.","help":"TikTok numeric user id. Faster than using a handle.","one_of_group":"handle|user_id"},{"name":"min_time","required":false,"in":"query","type":"integer","description":"Used to paginate. Get 'min_time' from previous response.","help":"Pagination value from the previous response, to fetch the next page."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.","help":"No effect; accepted for compatibility."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/user/following","method":"GET","platform":"tiktok","group":"User","label":"User/Following","description":"Returns a page of accounts a TikTok user follows, each with username, display name, avatar, and its own follower count.\n\nUse it to list who an account follows and page through them; user/followers returns the reverse, the accounts that follow it.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":14,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"TikTok username without the @ symbol","help":"TikTok username without the @ symbol.","example":"stoolpresidente","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"TikTok user id. Use this for faster responses.","help":"TikTok user id. Faster than using a handle.","one_of_group":"handle|user_id"},{"name":"min_time","required":false,"in":"query","type":"integer","description":"Used to paginate. Get 'min_time' from previous response.","help":"Pagination value from the previous response, to fetch the next page."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for compatibility; the response is already the canonical shape, so this flag has no effect.","help":"No effect; accepted for compatibility."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/user/live","method":"GET","platform":"tiktok","group":"User","label":"User/Live","description":"Returns a TikTok account's live room in the platform's own shape: cover image, title, start time, status code, viewer and entry counts, stream ids, and the host's profile.\n\nUse it to read a creator's live room state, but check status and start time yourself, since a room may still be returned after the broadcast has ended.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":15,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"TikTok username without the @ symbol","help":"TikTok username without the @ symbol.","example":"charlidamelio"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/post/transcript","method":"GET","platform":"tiktok","group":"Post","label":"Post/Transcript","description":"Returns the spoken text of a TikTok video from its captions, with an option to fall back to AI transcription when no captions exist.\n\nUse it when you need what was said rather than the numbers; post gives you the video's caption and metrics but no transcript.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":16,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the TikTok video","help":"Full URL of the TikTok video.","example":"https://www.tiktok.com/@stoolpresidente/video/7499229683859426602"},{"name":"language","required":false,"in":"query","type":"string","description":"Language of the transcript. 2 letter language code, ie 'en', 'es', 'fr', 'de', 'it', 'ja', 'ko', 'zh'","help":"Two-letter language code for the transcript, e.g. en, es, fr, de, it, ja, ko, zh."},{"name":"use_ai_as_fallback","required":false,"in":"query","type":"string","description":"Set to 'true' to fall back to AI transcription when the video has no captions. AI transcription covers videos up to 10 minutes (600 seconds): a longer video with no captions returns 400 INVALID_REQUEST with `error.details.reason: video_too_long`, `duration_seconds` and `max_seconds`, free and deterministic, so retrying returns the same answer.","help":"Set to true to generate an AI transcript when the video has no captions. Covers videos up to 10 minutes."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/video/screen-text","method":"GET","platform":"tiktok","group":"Video","label":"Video/Screen Text","description":"Returns the text shown on the video itself: native text stickers plus AI OCR of the cover frame, so burned-in editor captions are caught too.\n\nUse it for the on-screen overlay text; the caption lives on post and the spoken words on post/transcript.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":17,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the TikTok video or photo post (a `/video/` or `/photo/` link)","help":"Full URL of the TikTok video or photo post (a /video/ or /photo/ link).","example":"https://www.tiktok.com/@stoolpresidente/video/7499229683859426602"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/song","method":"GET","platform":"tiktok","group":"Song","label":"Song","description":"Returns one TikTok sound's details: title, artist, duration, how many videos use it, and its cover image.\n\nUse it when you have a sound's clipId and want the sound itself; song/videos returns the videos made with it.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":18,"params":[{"name":"clipId","required":true,"in":"query","type":"string","description":"TikTok sound/song clip ID","help":"TikTok sound/song clip id.","example":"7439295283975702544"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/song/videos","method":"GET","platform":"tiktok","group":"Song","label":"Song/Videos","description":"Returns videos that use a given TikTok sound, each with caption, author details, and engagement counts.\n\nUse it to see how a sound is being used and page through those videos; song returns only the sound's own details.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":19,"params":[{"name":"clipId","required":true,"in":"query","type":"string","description":"TikTok sound/song clip ID","help":"TikTok sound/song clip id.","example":"7439295283975702544"},{"name":"cursor","required":false,"in":"query","type":"integer","description":"The cursor to get the next page of results.","help":"Cursor from the previous response, to get the next page of results."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/hashtags/popular","method":"GET","platform":"tiktok","group":"Hashtags","label":"Hashtags/Popular","description":"Returns TikTok's trending-hashtag board for one of 27 markets over 7, 30 or 90 days: each hashtag's rank, window post and view counts, daily popularity curve, industry board and top creators.\n\nUse it for seed-free trend collection by market. One board is three hashtags; pass industry=all for the overall board plus all 15 industry boards in one call.","credits":{"min":60,"max":960},"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":20,"params":[{"name":"countryCode","required":false,"in":"query","type":"string","description":"Market to read the board for, as an ISO country code. One of the 27 markets TikTok publishes the board for. Defaults to US.","help":"Two-letter market code for the board — one of the 27 markets TikTok publishes it for. Defaults to US.","enum":["US","FR","DE","IT","ES","GB","AR","AU","BR","CA","CO","EG","ID","IL","JP","KR","MY","MX","PH","SA","SG","ZA","TW","TH","TR","AE","VN"],"example":"DE"},{"name":"period","required":false,"in":"query","type":"string","description":"Window in days: 7, 30 or 90. Defaults to 7. Each window is a different board, not a longer list.","help":"Window in days: 7, 30 or 90 (default 7). Each window is a different board, not a longer list.","enum":["7","30","90"],"example":"7"},{"name":"industry","required":false,"in":"query","type":"string","description":"Which board to read. Omit for the overall board (3 hashtags). Pass an industry slug for that industry's board (3 hashtags), or `all` for the overall board plus all 15 industry boards in one call.","help":"Board to read: omit for the top 3 overall hashtags, an industry slug for that industry's top 3, or all for every board in one call.","enum":["all","education","vehicle-and-transportation","baby-kids-and-maternity","beauty-and-personal-care","tech-and-electronics","travel","household-products","pets","home-improvement","apparel-and-accessories","news-and-entertainment","games","food-and-beverage","sports-and-outdoor","health"],"example":"all"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/videos/popular","method":"GET","platform":"tiktok","group":"Videos","label":"Videos/Popular","description":"Returns TikTok's Top Videos board for the US, Japan, Vietnam, Thailand or Indonesia over 7 or 30 days: each video's rank, lifetime and window views, organic views, engagement rate and creator.\n\nUse it for the videos TikTok ranks highest in those five markets. Other markets have no board and return a free 400; use hashtags/popular there.","credits":{"min":260,"max":450},"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":21,"params":[{"name":"countryCode","required":false,"in":"query","type":"string","description":"Market: US, JP, VN, TH or ID, the only markets TikTok publishes this board for. Defaults to US.","help":"Market: US, JP, VN, TH or ID, the only markets TikTok publishes this board for. Defaults to US.","enum":["US","JP","VN","TH","ID"],"example":"US"},{"name":"period","required":false,"in":"query","type":"string","description":"Window in days: 7 or 30. Defaults to 7.","help":"Window in days: 7 or 30. Defaults to 7.","enum":["7","30"],"example":"7"},{"name":"orderBy","required":false,"in":"query","type":"string","description":"How TikTok ranks the board: views (the default), engagement, or six_second_views.","help":"How TikTok ranks the board: views (default), engagement, or six_second_views.","enum":["views","engagement","six_second_views"],"example":"views"},{"name":"limit","required":false,"in":"query","type":"integer","description":"How many videos to return, 1-20, default 20.","help":"How many videos to return, 1-20 (default 20).","minimum":1,"maximum":20},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/profile/region","method":"GET","platform":"tiktok","group":"Profile","label":"Profile/Region","description":"Returns the two letter country code for a public TikTok profile, for example US or MX.\n\nUse it when all you need is an account's country, for routing or de-duplicating by market; profile returns the full account.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":22,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"TikTok username without the @ symbol","help":"TikTok username without the @ symbol.","example":"stoolpresidente"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/adlibrary/search","method":"GET","platform":"tiktok","group":"Adlibrary","label":"Adlibrary/Search","description":"Returns TikTok Ad Library ads matching a keyword or advertiser name, each with creative, title, advertiser, impressions and date; include=ad adds the brand, landing page and advertiser link.\n\nUse it to find ads by query or advertiser_name; pass an ad id from the results to adlibrary/ad for the full record.","credits":{"min":50,"max":170},"tier":"advanced","paginates":true,"cache_ttl_seconds":3600,"order":23,"params":[{"name":"query","required":false,"in":"query","type":"string","description":"Keyword or phrase to search the TikTok Ad Library.","help":"Keyword or phrase to search the TikTok Ad Library.","one_of_group":"query|advertiser_name"},{"name":"advertiser_name","required":false,"in":"query","type":"string","description":"Advertiser name as it appears in the TikTok Ad Library.","help":"Advertiser name as it appears in the TikTok Ad Library.","example":"Gymshark","one_of_group":"query|advertiser_name"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page.","help":"Cursor from the previous response, to get the next page."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `ad` (one token only) to fill the registered brand name, the landing page, the advertiser's TikTok profile link and avatar (`post.ext.ad.brand_name`, `post.ext.ad.landing_page`, `post.ext.ad.profile_web_link`, `post.author.avatar_url`), plus the objectives, countries and source where the library has them, on every ad in this one call.","help":"Set to ad to add the brand name, landing page, advertiser profile link, avatar, objectives, countries and ad source for every ad.","enum":["ad"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Take the top N ads of the page (1 to 12) after the search has run. It is not a page size: `next_cursor` still advances past the full page.","help":"Number of ads to return, 1-12. Paging still advances past the full page, not just this count.","minimum":1,"maximum":12},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/adlibrary/ad","method":"GET","platform":"tiktok","group":"Adlibrary","label":"Adlibrary/Ad","description":"Returns one TikTok Ad Library ad: creative video, title, advertiser account, landing page, brand name, and first-shown date.\n\nUse it when you already have an ad id or library URL; use adlibrary/search to find ads by keyword or advertiser name first.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":24,"params":[{"name":"ad_id","required":false,"in":"query","type":"string","description":"TikTok Ad Library ad id, or a library.tiktok.com ads/detail URL.","help":"TikTok Ad Library ad id, or a library.tiktok.com ads/detail URL.","example":"1869335220395266","one_of_group":"ad_id|url"},{"name":"url","required":false,"in":"query","type":"string","description":"TikTok Ad Library ads/detail URL.","help":"TikTok Ad Library ads/detail URL.","one_of_group":"ad_id|url"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/search/suggestions","method":"GET","platform":"tiktok","group":"Search","label":"Search/Suggestions","description":"Returns the autocomplete suggestions TikTok's own search box shows for a partial query, as a list of suggestion rows.\n\nUse it for keyword research, or to expand a seed term before running search or search/top.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":25,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Partial search query to autocomplete.","help":"Partial search query to autocomplete.","example":"dogs"},{"name":"region","required":false,"in":"query","type":"string","description":"ISO 3166-1 alpha-2 country code to localize suggestions.","help":"Two-letter country code to localize suggestions."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/collection/videos","method":"GET","platform":"tiktok","group":"Collection","label":"Collection/Videos","description":"Returns the public videos inside a TikTok collection, each with caption, play like comment share and save counts, author, and a playable URL.\n\nUse it when you have a collection URL and want the videos saved there, paging with max_cursor.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":26,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the TikTok collection.","help":"Full URL of the TikTok collection.","example":"https://www.tiktok.com/@kibblemaster808/collection/Want-to-go-7665668414573546258"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/profile/playlists","method":"GET","platform":"tiktok","group":"Profile","label":"Profile/Playlists","description":"Returns the playlists a TikTok creator has published on their profile, each with its playlist id, its name, and the number of videos it holds.\n\nUse it to find a playlist id before calling playlist/videos. TikTok does not publish a view total for a playlist, so engagement stays null on every row.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":27,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"TikTok username without the @ symbol.","help":"TikTok username without the @ symbol.","example":"chipotle","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"TikTok numeric user ID. Use this for faster responses.","help":"TikTok numeric user id. Faster than using a handle.","one_of_group":"handle|user_id"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/playlist/videos","method":"GET","platform":"tiktok","group":"Playlist","label":"Playlist/Videos","description":"Returns the videos inside one of a creator's profile playlists, in playlist order, each with engagement counts, caption, author, and a playable URL.\n\nUse it with a playlist id from profile/playlists. Send the cursor back unchanged, because it is the platform's item index and not a count of the rows you hold.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":28,"params":[{"name":"playlist_id","required":true,"in":"query","type":"string","description":"Playlist id from /v1/tiktok/profile/playlists (`post.id` on that response).","help":"Playlist id, from the id field of a profile/playlists response.","example":"7229371484127382314"},{"name":"handle","required":false,"in":"query","type":"string","description":"TikTok username of the playlist owner, without the @ symbol.","help":"TikTok username of the playlist owner, without the @ symbol.","example":"chipotle","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"TikTok numeric user ID of the playlist owner. Use this for faster responses.","help":"Numeric TikTok user id of the playlist owner. Faster than using the handle.","one_of_group":"handle|user_id"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page of videos.","help":"Cursor from the previous response, to get the next page of videos."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/user/liked","method":"GET","platform":"tiktok","group":"User","label":"User/Liked","description":"Returns the videos a TikTok account has liked, newest first, each carrying its own third party author, engagement counts, caption, and a playable URL.\n\nUse it for what an account likes, not for who liked a post: that direction does not exist on TikTok. Most accounts hide the list, and a hidden list is a refunded not found.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":29,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"TikTok username without the @ symbol.","help":"TikTok username without the @ symbol.","example":"chipotle","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"TikTok numeric user ID. Use this for faster responses.","help":"TikTok numeric user id. Faster than using a handle.","one_of_group":"handle|user_id"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page of liked videos.","help":"Cursor from the previous response, to get the next page of liked videos."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/location/posts","method":"GET","platform":"tiktok","group":"Location","label":"Location/Posts","description":"Returns public TikTok videos tagged at a place, each with engagement counts, caption, author, and a playable URL.\n\nUse it with TikTok's own place id from a place page URL. An unknown place is a refunded not found, while a real place with nothing recent returns an empty list.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":30,"params":[{"name":"location_id","required":true,"in":"query","type":"string","description":"TikTok place id, as it appears in the place page URL.","help":"TikTok place id, as it appears in the place page URL.","example":"22535865202815278"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page of videos.","help":"Cursor from the previous response, to get the next page of videos."},{"name":"region","required":false,"in":"query","type":"string","description":"Two-letter country code for the proxy location. Defaults to US.","help":"Two-letter country code (e.g. US, GB) to fetch results as seen from that country. Defaults to US."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/effects","method":"GET","platform":"tiktok","group":"Effects","label":"Effects","description":"Returns TikTok camera effects by id, each with its name, its designer, the views of videos made with it, and how many such videos exist.\n\nUse it to look several effects up in one call, and match results by the returned id. Repeated ids collapse and unknown ids drop, so the response can be shorter.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":31,"params":[{"name":"ids","required":true,"in":"query","type":"string","description":"Comma-separated TikTok effect ids, up to 50 per request.","help":"Comma-separated TikTok effect ids, up to 50 per request.","example":"1108584,1109028"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/effect/videos","method":"GET","platform":"tiktok","group":"Effect","label":"Effect/Videos","description":"Returns public TikTok videos created with a camera effect, each with engagement counts, caption, author, and a playable URL.\n\nUse it with an effect id from effects, and send the cursor back unchanged. TikTok picks its own page size here and ignores the one you ask for.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":32,"params":[{"name":"effect_id","required":true,"in":"query","type":"string","description":"TikTok effect id, as returned by /v1/tiktok/effects.","help":"TikTok effect id, as returned by the effects endpoint.","example":"1108584"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page of videos.","help":"Cursor from the previous response, to get the next page of videos."},{"name":"region","required":false,"in":"query","type":"string","description":"Two-letter country code for the proxy location. Defaults to US.","help":"Two-letter country code (e.g. US, GB) to fetch results as seen from that country. Defaults to US."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/search/music","method":"GET","platform":"tiktok","group":"Search","label":"Search/Music","description":"Returns TikTok sounds matching a keyword, each with title, artist, duration, cover art, a preview audio URL, and how many videos use it.\n\nUse it to size a sound trend, or to join a TikTok sound to Apple Music, Spotify and Amazon through the store ids on ext.dsp_ids.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":33,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword, matched against sound titles and creators.","help":"Search keyword, matched against sound titles and creators.","example":"espresso"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response to fetch the next page of sounds.","help":"Cursor from the previous response, to get the next page of sounds."},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Result ordering: relevance (default), most-used, most-recent, shortest or longest.","help":"Result ordering: relevance (default), most-used, most-recent, shortest or longest.","enum":["relevance","most-used","most-recent","shortest","longest"]},{"name":"filter_by","required":false,"in":"query","type":"string","description":"Which field the keyword is matched against: all (default), title or creators.","help":"Which field the keyword is matched against: all (default), title or creators.","enum":["all","title","creators"]},{"name":"region","required":false,"in":"query","type":"string","description":"Two-letter country code for the proxy location. Defaults to US.","help":"Two-letter country code (e.g. US, GB) to fetch results as seen from that country. Defaults to US."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/hashtag","method":"GET","platform":"tiktok","group":"Hashtag","label":"Hashtag","description":"Returns TikTok's own record for a hashtag, with its display name, its description where one exists, the live total views under the tag, and how many videos carry it.\n\nUse it to size a tag before pulling its posts. Pass the tag name and the id lookup happens for you, or pass hashtag_id when you already hold it.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":34,"params":[{"name":"hashtag","required":false,"in":"query","type":"string","description":"Hashtag name, with or without the leading # symbol.","help":"Hashtag name, with or without the leading # symbol.","example":"kpop","one_of_group":"hashtag|hashtag_id"},{"name":"hashtag_id","required":false,"in":"query","type":"string","description":"TikTok numeric hashtag id. Skips the name lookup when you already have it.","help":"TikTok numeric hashtag id. Skips the name lookup when you already have it.","one_of_group":"hashtag|hashtag_id"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/ads/top","method":"GET","platform":"tiktok","group":"Ads","label":"Ads/Top","description":"Returns TikTok's Creative Center leaderboard of top-performing ads for a market and time window, each with click-through rate, board rank, like count, industry, objective, and the ad video.\n\nUse it to find ad creative that actually performed. It is one window with no cursor, so set limit for depth and change country, period, or order_by for a different board.","credits":{"min":100,"max":1000},"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":35,"params":[{"name":"country","required":false,"in":"query","type":"string","description":"Creative Center market to read the board for. Defaults to US. This is the market the ads ran in, not the language they are in.","help":"Two-letter market code for the Creative Center board (default US) — the market the ads ran in, not their language.","enum":["US","CA","MX","BR","GB","DE","FR","IT","ES","NL","PL","SE","TR","SA","AE","AU","JP","KR","ID","TH","VN","MY","PH","SG"],"example":"US"},{"name":"period","required":false,"in":"query","type":"string","description":"Lookback window in days: 7, 30 or 180. Defaults to 30. A longer window is a different board, not more rows.","help":"Lookback window in days: 7, 30 or 180 (default 30). Each window is a different board, not more rows.","enum":["7","30","180"],"example":"30"},{"name":"order_by","required":false,"in":"query","type":"string","description":"How TikTok ranks the board: for_you (TikTok's own blend, the default), ctr, impression, like, cvr, play_2s_rate or play_6s_rate.","help":"How to rank the board: for_you (TikTok's own blend, default), ctr, impression, like, cvr, play_2s_rate or play_6s_rate.","enum":["for_you","impression","ctr","play_2s_rate","play_6s_rate","cvr","like"],"example":"ctr"},{"name":"ad_format","required":false,"in":"query","type":"string","description":"Restrict to Spark ads (ads boosted from an organic post) or Non-Spark ads. Defaults to all.","help":"Restrict to Spark ads (boosted from an organic post) or Non-Spark ads. Defaults to all types.","enum":["All ad types","Spark ads","Non-Spark ads"]},{"name":"ad_language","required":false,"in":"query","type":"string","description":"Filter by the language of the ad copy.","help":"Filter by the language of the ad copy.","enum":["en","ja","zh","vi","th","pt","id"]},{"name":"like_tier","required":false,"in":"query","type":"string","description":"TikTok's engagement percentile band, 1 (top) to 5. Use it to read further down the ranking without raising limit.","help":"Engagement percentile band, 1 (top) to 5. Use it to see further down the ranking without raising limit.","enum":["1","2","3","4","5"]},{"name":"industry","required":false,"in":"query","type":"string","description":"Creative Center sub-category label, for example 'Skincare' or 'Cosmetics'. Use a sub-category, not a top-level group: the board returns nothing for the broad groups such as 'Financial Services' or 'Education'. Omit for all industries.","help":"Creative Center sub-category, e.g. Skincare or Cosmetics. Broad groups like Financial Services return nothing. Omit for all industries."},{"name":"keyword","required":false,"in":"query","type":"string","description":"Search the board by brand or product keyword.","help":"Search the board by brand or product keyword."},{"name":"limit","required":false,"in":"query","type":"integer","description":"How many ads to return, 1-100, default 20.","help":"Number of ads to return, 1-100 (default 20).","minimum":1,"maximum":100},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktok/profile/full","method":"GET","platform":"tiktok","group":"Profile","label":"Profile/Full","description":"Use it instead of profile when you want the account, its recent posts, and the engagement maths in one call rather than three.","credits":50,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":36,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"TikTok username or handle, with or without a leading @. One of the identity params is required.","help":"TikTok username or handle, with or without a leading @. One of handle or user_id is required.","example":"mrbeast","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Numeric TikTok user id. Use it instead of the handle when you already have the stable id, which survives a rename. One of the identity params is required.","help":"Numeric TikTok user id, preferred over handle since it survives a username change. One of handle or user_id is required.","one_of_group":"handle|user_id"},{"name":"posts","required":false,"in":"query","type":"integer","description":"How many of the fetched recent posts to return and compute the metrics over (1-100, default 25).","help":"Number of recent posts to include in the metrics, 1-100 (default 25). Each call reads one page of 10 videos; page further with posts_cursor.","example":"25"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pass a prior response's posts_cursor to read the next page of posts.","help":"Cursor from a prior response's posts_cursor, to fetch the next page of posts."},{"name":"include","required":false,"in":"query","type":"string","description":"","help":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktokshop/product","method":"GET","platform":"tiktokshop","group":"Product","label":"Product","description":"Returns one TikTok Shop product in full: description, price and discount, rating, review count, brand, specs, stock, seller details, shipping estimate, and images.\n\nUse it when you have a product URL or ID and need the full listing; use products to list a storefront's catalogue, or search to find products by keyword.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":0,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the TikTok Shop product page. Provide this or `product_id`.","help":"Full URL of the TikTok Shop product page. Provide this or product_id.","example":"https://www.tiktok.com/shop/pdp/goli-ashwagandha-gummies-with-vitamin-d-ksm-66-vegan-non-gmo/1729587769570529799","one_of_group":"url|product_id"},{"name":"product_id","required":false,"in":"query","type":"string","description":"Numeric TikTok Shop product id, as returned in `product.id` by tiktokshop/search, tiktokshop/products and tiktokshop/user/showcase. Provide this or `url`.","help":"Numeric TikTok Shop product ID, from product.id in search, products, or user/showcase. Provide this or url.","example":"1729587769570529799","one_of_group":"url|product_id"},{"name":"region","required":false,"in":"query","type":"string","description":"ISO 3166-1 alpha-2 region for the lookup. Default US. Served: US, SG, MY, TH, VN, PH. GB and ID are temporarily unavailable (503, no charge). Other values are rejected before billing.","help":"Two-letter region (default US). Served: US, SG, MY, TH, VN, PH. GB and ID are temporarily unavailable (503, no charge); others are rejected before billing.","enum":["US","GB","ID","MY","TH","SG","VN","PH"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktokshop/product/reviews","method":"GET","platform":"tiktokshop","group":"Product","label":"Product/Reviews","description":"Returns reviews on a TikTok Shop product: rating, text, author, buyer country, verified-purchase and incentivized-review flags, the purchased SKU, and a timestamp.\n\nUse it when you have a product URL or ID and want what buyers say; use product for the listing itself.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Full URL of the TikTok Shop product page. Provide this or `product_id`.","help":"Full URL of the TikTok Shop product page. Provide this or product_id.","example":"https://www.tiktok.com/shop/pdp/cat-nail-clipper-by-potaroma-adjustable-sizes-built-in-file-safe-for-kittens-cats/1731578642912612516","one_of_group":"url|product_id"},{"name":"product_id","required":false,"in":"query","type":"string","description":"The ID of the product (required if url is not provided)","help":"Numeric TikTok Shop product ID. Required if url is not provided.","one_of_group":"url|product_id"},{"name":"region","required":false,"in":"query","type":"string","description":"ISO 3166-1 alpha-2 region for the product (e.g. `US`). Important when the product is regionally scoped.","help":"Two-letter region for the product, e.g. US. Matters when the product is regionally scoped.","enum":["US","GB","DE","FR","IT","ID","MY","MX","PH","SG","ES","TH","VN","BR","JP","IE"]},{"name":"page","required":false,"in":"query","type":"integer","description":"Page number to retrieve, 10 reviews per page. Prefer passing back `pagination.next_cursor`, which carries the same position and stays correct if the underlying paging mechanism changes.","help":"Page number, 10 reviews per page. Prefer passing back pagination.next_cursor, which stays correct if paging changes.","minimum":1},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/tiktokshop/products","method":"GET","platform":"tiktokshop","group":"Products","label":"Products","description":"Returns the products listed on a TikTok Shop storefront: title, images, canonical URL, price and discount, sold count, review count, rating, SKU ID, and the shop's own profile.\n\nUse it when you have a storefront URL and want everything it sells; use search to find products across storefronts by keyword.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the TikTok Shop page","help":"Full URL of the TikTok Shop storefront page.","example":"https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079"},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Sort products by best-selling (`top`) or newest (`new_releases`). Defaults to `top`.","help":"Sort products by best-selling (top) or newest (new_releases). Defaults to top.","enum":["top","new_releases"]},{"name":"region","required":false,"in":"query","type":"string","description":"Region to get shop products from. A storefront is only reachable from its own market, so a GB shop needs `region=GB`; the default is US.","help":"Region to get shop products from. A storefront is only reachable from its own market, so a GB shop needs region=GB (default US).","enum":["US","GB","DE","FR","IT","ID","MY","MX","PH","SG","ES","TH","VN","BR","JP","IE"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor. Pass back `pagination.next_cursor` from the previous response.","help":"Pagination cursor. Pass back pagination.next_cursor from the previous response."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktokshop/search","method":"GET","platform":"tiktokshop","group":"Search","label":"Search","description":"Returns TikTok Shop products matching a keyword across every storefront, each with price, rating, sold count, seller trust label, ship-from location, and promotion badges.\n\nUse it to find products by keyword across every storefront; use products when you already know the storefront.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":3,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase to find TikTok Shop products","help":"Search keyword or phrase to find TikTok Shop products.","example":"phone case"},{"name":"page","required":false,"in":"query","type":"integer","description":"Page number to retrieve. Prefer passing back `pagination.next_cursor`, which carries the same position.","help":"Page number to retrieve. Prefer passing back pagination.next_cursor, which carries the same position.","minimum":1},{"name":"region","required":false,"in":"query","type":"string","description":"Region to search shop products in. Results, prices and currency follow the market; defaults to US.","help":"Region to search shop products in. Results, prices, and currency follow the market (default US).","enum":["US","GB","DE","FR","IT","ID","MY","MX","PH","SG","ES","TH","VN","BR","JP","IE"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktokshop/user/showcase","method":"GET","platform":"tiktokshop","group":"User","label":"User/Showcase","description":"Returns the products featured in a TikTok user's public showcase: title, price and discount, rating, sold count, images, and SKU ID.\n\nUse it when you have a creator's handle and want the products they promote; use product for one of those listings in full.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"The handle of the user","help":"TikTok username whose showcase products to list.","example":"mrtiktokreviews"},{"name":"region","required":false,"in":"query","type":"string","description":"Region the lookup is served from. Currently US only (an source limitation; other regions are rejected before billing). Support for more regions is planned source but has no date.","help":"Region the lookup is served from. Currently US only; other regions are rejected before billing.","enum":["US"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"The cursor to the next page of products","help":"Cursor from the previous response, to get the next page of products."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/tiktokshop/sales","method":"GET","platform":"tiktokshop","group":"Sales","label":"Sales","description":"Returns, per market, listings found, their units sold added up, an estimated sales figure in local currency, and the top listings by units for a keyword.\n\nUse it to compare a keyword's unit sales across several markets in one call; use search directly when you only need one market's listings.","credits":{"min":0,"max":80},"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Product keyword, sent unchanged to each market's search (1-200 characters).","help":"Product keyword, sent unchanged to each market's search (1-200 characters).","example":"lip gloss"},{"name":"regions","required":false,"in":"query","type":"string","description":"Comma-separated markets, up to 8: US, GB, DE, FR, IT, ES, IE, ID, MY, MX, PH, SG, TH, VN, BR, JP. Default US.","help":"Comma-separated markets, up to 8: US, GB, DE, FR, IT, ES, IE, ID, MY, MX, PH, SG, TH, VN, BR, JP (default US).","example":"US,GB,MY"},{"name":"top","required":false,"in":"query","type":"integer","description":"How many top listings by units to return per market, 1 to 20. Default 5.","help":"Top listings by units to return per market, 1-20 (default 5).","minimum":1,"maximum":20},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/truthsocial/profile","method":"GET","platform":"truthsocial","group":"Profile","label":"Profile","description":"Returns a Truth Social user's public profile: display name, follower count, following count, truth count, bio, and profile image URL.\n\nUse it for a quick profile snapshot; use user/posts for that account's recent truths.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Truth Social username without the @ symbol","help":"Truth Social username, without the @ symbol.","example":"realDonaldTrump"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/truthsocial/user/posts","method":"GET","platform":"truthsocial","group":"User","label":"User/Posts","description":"Returns a Truth Social user's recent truths: text content, like count, retruth count, reply count, media attachments, and creation timestamp.\n\nUse it to list an account's recent truths; use post when you already have a single truth's URL.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"Truth Social username without the @ symbol","help":"Truth Social username, without the @ symbol.","example":"realDonaldTrump","one_of_group":"handle|user_id"},{"name":"user_id","required":false,"in":"query","type":"string","description":"Truth Social user id. Use this for faster response times. Trumps is 107780257626128497. It is the 'id' field in the profile endpoint.","help":"Truth Social numeric user ID, from the id field on the profile endpoint. Faster than looking up by handle.","one_of_group":"handle|user_id"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Set to true for a trimmed down version of the response","help":"Return a trimmed-down version of the response with fewer fields."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/truthsocial/post","method":"GET","platform":"truthsocial","group":"Post","label":"Post","description":"Returns one Truth Social post: text content, like count, retruth count, reply count, media attachments, author info, and creation timestamp.\n\nUse it when you have a single post URL; use user/posts to list an account's recent truths.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Truth Social post","help":"Full URL of the Truth Social post.","example":"https://truthsocial.com/@realDonaldTrump/posts/123456789"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitch/profile","method":"GET","platform":"twitch","group":"Profile","label":"Profile","description":"Returns a Twitch streamer's public profile: display name, follower count, bio, profile image URL, broadcast language, and partner or affiliate status.\n\nUse it for a streamer's public profile; use user/videos for their past broadcasts and highlights.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Twitch username","help":"Twitch username.","example":"ninja"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitch/clip","method":"GET","platform":"twitch","group":"Clip","label":"Clip","description":"Returns one Twitch clip's title, view count, duration, creator name, broadcaster name, game name, thumbnail URL, and creation timestamp.\n\nUse it when you have a clip URL and need its stats; use profile for the streamer's own public info.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Twitch clip","help":"Full URL of the Twitch clip.","example":"https://www.twitch.tv/ninja/clip/ExampleClipSlug"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitch/user/videos","method":"GET","platform":"twitch","group":"User","label":"User/Videos","description":"Returns up to 100 of a Twitch user's videos: id, slug, URL, embed URL, title, view count, language, duration, game info, broadcaster details, thumbnail, and available qualities.\n\nUse it to list a streamer's highlights and uploads; use clip for a single short clip's own details.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":2,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Twitch username.","help":"Twitch username.","example":"ishowspeed"},{"name":"filter_by","required":false,"in":"query","type":"string","description":"Filter the returned videos by type: `HIGHLIGHT` or `UPLOAD`. (Archived past broadcasts are not currently available source.)","help":"Filter videos by type: HIGHLIGHT or UPLOAD. Archived past broadcasts aren't available yet.","enum":["HIGHLIGHT","UPLOAD"]},{"name":"sort_by","required":false,"in":"query","type":"string","description":"Sort order: `TIME` (newest first) or `VIEWS`.","help":"Sort order: TIME (newest first) or VIEWS.","enum":["TIME","VIEWS"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitch/user/schedule","method":"GET","platform":"twitch","group":"User","label":"User/Schedule","description":"Returns a Twitch user's upcoming stream schedule, each entry with start time, end time, title, description, and thumbnail URL.\n\nUse it to see when a streamer goes live next; use profile for their follower count and bio.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":3,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Twitch username.","help":"Twitch username.","example":"kaicenat"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/profile","method":"GET","platform":"twitter","group":"Profile","label":"Profile","description":"Returns an X (Twitter) account's public profile: follower count, following count, tweet count, bio, profile and banner image URLs, and verification status.\n\nUse it when you have a handle and want a quick account snapshot before pulling its tweets.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Twitter username without the @ symbol","help":"X username, without the @ symbol.","example":"elonmusk"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/user/tweets","method":"GET","platform":"twitter","group":"User","label":"User/Tweets","description":"Returns an account's most recent tweets in descending order, with full text, like, retweet, reply, bookmark and view counts, media, and creation time. Around 20 tweets per page.\n\nUse it to read a timeline: pages come newest first, retweets and self-threads included, and you can page deeper by sending pagination.next_cursor back as cursor.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Twitter username without the @ symbol","help":"X username, without the @ symbol.","example":"elonmusk"},{"name":"since","required":false,"in":"query","type":"string","description":"Only tweets published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older tweets are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Pinned tweets sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.","help":"Only return tweets on or after this date: YYYY-MM-DD or a full ISO 8601 timestamp.","example":"2026-09-01"},{"name":"stop_at_id","required":false,"in":"query","type":"string","description":"The id (`post.id`) or URL (`post.url`) of the newest tweet you already hold. The page stops just before it: that tweet and everything after it are left off, `next_cursor` is not returned, and `pagination.stopped_at` is `known_id`. A pinned tweet never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. `pagination.stopped_at` is `end` when the list ran out first and `null` while there is more to walk.","help":"Tweet id or URL of the newest tweet you already have. Stops the page just before it, for polling only new tweets."},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for backwards compatibility and ignored. It shrank the raw payload, which the canonical response never exposed, so it changed nothing you can see","help":"No effect; accepted for compatibility."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response's pagination.next_cursor to fetch the next page","help":"Cursor from the previous response, to fetch the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/twitter/tweet","method":"GET","platform":"twitter","group":"Tweet","label":"Tweet","description":"Returns one tweet in full: its text, like, retweet, reply and quote counts, media attachments, author info, and creation timestamp.\n\nUse it when you have a tweet URL and need its complete record, including the quote count that the user timeline does not carry.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the tweet. The numeric status id is what identifies it; the handle in the path is not checked","help":"Full URL of the tweet. The handle in the URL doesn't need to match; only the numeric status id matters.","example":"https://x.com/NASA/status/2073078061499617543"},{"name":"trim","required":false,"in":"query","type":"boolean","description":"Accepted for backwards compatibility and ignored. It shrank the raw payload, which the canonical response never exposed, so it changed nothing you can see and cost the author details","help":"No effect; accepted for compatibility."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/community","method":"GET","platform":"twitter","group":"Community","label":"Community","description":"Returns an X (Twitter) community's details: name, description, member count, rules, and creation date.\n\nUse it when you have a community URL and want the group itself; community/tweets returns what has been posted inside it.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Twitter/X community, in the form https://x.com/i/communities/{id}","help":"Full URL of the X community, e.g. https://x.com/i/communities/{id}.","example":"https://x.com/i/communities/1926186499399139650"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/community/tweets","method":"GET","platform":"twitter","group":"Community","label":"Community/Tweets","description":"Returns recent tweets posted inside an X (Twitter) community, each with its text, engagement counts, and author info.\n\nUse it to read a community's activity; it returns a single page, while community returns the group's own details.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the Twitter/X community, in the form https://x.com/i/communities/{id}","help":"Full URL of the X community, e.g. https://x.com/i/communities/{id}.","example":"https://x.com/i/communities/1926186499399139650"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/tweet/transcript","method":"GET","platform":"twitter","group":"Tweet","label":"Tweet/Transcript","description":"Returns the transcript of a video attached to a tweet, including auto-generated captions.\n\nUse it when a tweet carries video and you need the spoken words; tweet returns the media attachment but not its speech.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the tweet containing a video","help":"Full URL of the tweet containing a video.","example":"https://x.com/TheoVon/status/1916982720317821050"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/ai-search","method":"GET","platform":"twitter","group":"Ai search","label":"Ai Search","description":"Returns a written answer to a plain-English question about X (Twitter), the X posts cited as sources, and how many searches the model ran.\n\nUse it for open questions such as what an account has said about a topic this week. A thin answer means thin retrieval, not an empty corpus, so confirm coverage with search/tweets.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":6,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Natural-language prompt describing what you want to learn from X. The model autonomously searches X using the x_search tool with any handle / date filters you provide.","help":"Plain-English question about what to learn from X. Combine with handle/date filters to narrow the search.","example":"What is @elonmusk saying about xAI this week?"},{"name":"from_handles","required":false,"in":"query","type":"string","description":"Comma-separated X handles (max 10). Restricts the search to posts from these accounts only. Mutually exclusive with exclude_handles.","help":"Comma-separated X handles (max 10) to restrict results to. Can't be combined with exclude_handles."},{"name":"exclude_handles","required":false,"in":"query","type":"string","description":"Comma-separated X handles (max 10) to exclude from search results. Mutually exclusive with from_handles.","help":"Comma-separated X handles (max 10) to exclude from results. Can't be combined with from_handles."},{"name":"from_date","required":false,"in":"query","type":"string","description":"ISO 8601 start date (YYYY-MM-DD). Limits the search window to posts on or after this date.","help":"Start date (YYYY-MM-DD). Only posts on or after this date are included."},{"name":"to_date","required":false,"in":"query","type":"string","description":"ISO 8601 end date (YYYY-MM-DD). Limits the search window to posts on or before this date.","help":"End date (YYYY-MM-DD). Only posts on or before this date are included."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/search/tweets","method":"GET","platform":"twitter","group":"Search","label":"Search/Tweets","description":"Returns tweets matching a keyword or phrase, each with the full text, like, retweet, reply, bookmark and view counts, media attachments, author info, and creation time.\n\nUse it to track a topic or brand across X. Operators like from:, quoted phrases, filter:images, and since:/until: work inside query; sort picks latest (default) or top, the cursor pages deeper.","credits":{"min":10,"max":50},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":7,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Keyword or phrase to search tweets for. X operators inside this string narrow the search itself, for example since:YYYY-MM-DD, until:YYYY-MM-DD, from:handle, quoted phrases, min_faves:20, filter:images, and filter:videos. Quote a multi-word phrase when you want relevance rather than engagement ranking from sort=top","help":"Search keywords or phrase. Supports X search operators such as from:handle, since:YYYY-MM-DD, until:YYYY-MM-DD, min_faves:20, filter:images/videos.","example":"nike running shoes"},{"name":"sort","required":false,"in":"query","type":"string","description":"Result ranking: latest (default) for the newest matches first, top for the most popular matches. top ranks by engagement, not relevance, so an unquoted multi-term query can return popular posts that match none of your terms. Quote the phrase or add an operator to tighten it","help":"Result order: latest (default, newest first) or top (most engagement, not necessarily most relevant).","enum":["latest","top"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response's pagination.next_cursor to fetch the next page","help":"Cursor from the previous response, to fetch the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5}],"available":true},{"path":"/v1/twitter/tweet/replies","method":"GET","platform":"twitter","group":"Tweet","label":"Tweet/Replies","description":"Returns the replies to a tweet, each with the reply text, author info, like and reply counts, and creation time. The tweet itself is not in the list.\n\nUse it with a tweet URL to read the conversation under it; the cursor walks deeper threads, and a tweet with no replies returns an empty list.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":8,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the tweet to fetch replies for","help":"Full URL of the tweet to fetch replies for.","example":"https://x.com/News24/status/2093257170653483101"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response's pagination.next_cursor to fetch more replies","help":"Cursor from the previous response, to fetch more replies."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."}],"available":true},{"path":"/v1/twitter/user/media","method":"GET","platform":"twitter","group":"User","label":"User/Media","description":"Returns the tweets on an account's Media tab, only those carrying a photo or video, with media URLs, engagement counts, and creation time. View and bookmark counts are null here.\n\nUse it to pull an account's visual output without the text-only tweets user/tweets includes; the cursor pages deeper into the media grid.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":9,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Twitter username without the @ symbol","help":"X username, without the @ symbol.","example":"News24"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response's pagination.next_cursor to fetch the next page","help":"Cursor from the previous response, to fetch the next page."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/user/followers","method":"GET","platform":"twitter","group":"User","label":"User/Followers","description":"Returns the accounts following an X (Twitter) user, each with the handle, display name, bio, follower and tweet counts, privacy flag, and join date.\n\nUse it to sample an account's audience. Page size is set by the source, around 70 accounts, and the cursor pages deeper; verification status is not readable here and returns null.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":10,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Twitter username without the @ symbol","help":"X username, without the @ symbol.","example":"News24"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response's pagination.next_cursor to fetch the next page","help":"Cursor from the previous response, to fetch the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/user/following","method":"GET","platform":"twitter","group":"User","label":"User/Following","description":"Returns the accounts an X (Twitter) user follows, each with the handle, display name, bio, follower and tweet counts, privacy flag, and join date.\n\nUse it to map who an account pays attention to. Page size is set by the source and the cursor pages deeper; verification status is not readable here and returns null.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":11,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"Twitter username without the @ symbol","help":"X username, without the @ symbol.","example":"News24"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response's pagination.next_cursor to fetch the next page","help":"Cursor from the previous response, to fetch the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/tweet/retweeters","method":"GET","platform":"twitter","group":"Tweet","label":"Tweet/Retweeters","description":"Returns the accounts that retweeted a tweet, each with the handle, display name, bio, follower and tweet counts, privacy flag, and join date.\n\nUse it with a tweet URL to see who amplified it. Page size is set by the source and the cursor pages deeper; verification status is not readable here and returns null.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":12,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the tweet whose retweeters you want","help":"Full URL of the tweet whose retweeters you want.","example":"https://x.com/News24/status/2093257170653483101"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response's pagination.next_cursor to fetch the next page","help":"Cursor from the previous response, to fetch the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/search/users","method":"GET","platform":"twitter","group":"Search","label":"Search/Users","description":"Returns X (Twitter) accounts matching a name, handle or keyword, with handle, display name, bio, avatar, follower, following and tweet counts, location, verification, join date, and a private flag.\n\nUse it to resolve a handle you half know before calling profile or user/tweets. There is no spelling correction, so verify the returned handle. About 20 accounts a page, and the cursor pages deeper.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":13,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Name, handle, or keyword to search accounts for","help":"Name, handle, or keyword to search accounts for.","example":"news24"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Cursor from the previous response's pagination.next_cursor to fetch the next page","help":"Cursor from the previous response, to fetch the next page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/twitter/profile/full","method":"GET","platform":"twitter","group":"Profile","label":"Profile/Full","description":"Use it instead of calling profile and user/tweets yourself.","credits":50,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":14,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"X (Twitter) username or handle, with or without a leading @. One of the identity params is required.","help":"X username, with or without the leading @. Required if no other identity param is given.","example":"mrbeast"},{"name":"posts","required":false,"in":"query","type":"integer","description":"How many of the fetched recent posts to return and compute the metrics over (1-100, default 25).","help":"How many recent posts to factor into the stats, 1-100 (default 25). Large values may need a follow-up call using the returned cursor.","example":"25"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pass a prior response's posts_cursor to read the next page of posts.","help":"Cursor from a prior response's posts_cursor, to fetch the next page of posts."},{"name":"include","required":false,"in":"query","type":"string","description":"","help":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/weibo/post","method":"GET","platform":"weibo","group":"Post","label":"Post","description":"Returns one public Weibo post: its text, author, like, comment and repost counts, image count and publish time.\n\nUse it when you have a post id; to list an account’s posts use user/posts.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"post_id","required":true,"in":"query","type":"string","description":"Weibo post id (the number in the post URL).","example":"5092682368025584"},{"name":"include_long_text","required":false,"in":"query","type":"string","description":"Whether to fetch the full text of a long post. Default true.","enum":["true","false"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/weibo/profile","method":"GET","platform":"weibo","group":"Profile","label":"Profile","description":"Returns a public Weibo account: name, bio, avatar, follower, following and post counts, verification, location and website.\n\nUse it when you have a numeric user id; for the account’s posts use user/posts.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":2,"params":[{"name":"user_id","required":true,"in":"query","type":"string","description":"Numeric Weibo user id (weibo.com/u/<id>).","example":"1722594714"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/weibo/user/posts","method":"GET","platform":"weibo","group":"User","label":"User/Posts","description":"Returns a page of an account’s recent public posts, each with text, engagement counts and publish time.\n\nUse it to follow one account; for a single post use post, and for a keyword use search.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"user_id","required":true,"in":"query","type":"string","description":"Numeric Weibo user id (weibo.com/u/<id>).","example":"1722594714"},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/weibo/post/comments","method":"GET","platform":"weibo","group":"Post","label":"Post/Comments","description":"Returns a page of first-level comments on a post, each with text, author, likes, reply count and time.\n\nUse it when you have a post id and want the conversation under it.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"post_id","required":true,"in":"query","type":"string","description":"Weibo post id (the number in the post URL).","example":"5283919831764022"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Comments per page, 1 to 20. Default 10.","minimum":1,"maximum":20},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/weibo/search","method":"GET","platform":"weibo","group":"Search","label":"Search","description":"Returns public Weibo posts matching a keyword, each with text, author, engagement counts and URL.\n\nUse it to find posts on a topic; for what is trending right now use trending.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":5,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword.","help":"Search keyword.","example":"python"},{"name":"search_type","required":false,"in":"query","type":"string","description":"Which posts to search: all (default), hot, original, verified, media or viewpoint.","enum":["all","hot","original","verified","media","viewpoint"]},{"name":"include_type","required":false,"in":"query","type":"string","description":"Only posts with this media: all (default), pic, video, music or link.","enum":["all","pic","video","music","link"]},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/weibo/trending","method":"GET","platform":"weibo","group":"Trending","label":"Trending","description":"Returns the current Weibo hot-search ranking: each topic’s keyword, rank, heat and label, pinned topics marked.\n\nUse it to see what China is talking about right now; to read the posts on a topic use search.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":6,"params":[{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/xiaohongshu/search","method":"GET","platform":"xiaohongshu","group":"Search","label":"Search","description":"Returns Xiaohongshu notes matching a keyword: title, short summary, creator, likes, comments, saves, shares, and cover image.\n\nUse it to find notes by keyword; use post for a note's full body once you have its ID.","credits":{"min":50,"max":1000},"tier":"advanced","paginates":true,"cache_ttl_seconds":3600,"order":0,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keywords, for example 护肤 or camping.","help":"Search keywords, for example skincare or camping.","example":"护肤"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Rows to return, 1 to 20. Default 10.","help":"Rows to return, 1-20 (default 10).","minimum":1,"maximum":20},{"name":"cursor","required":false,"in":"query","type":"string","description":"Continuation token from a previous response's pagination block. Omit for the first page.","help":"Continuation token from the previous response's pagination block. Omit for the first page."},{"name":"sort","required":false,"in":"query","type":"string","description":"Result ordering: relevance, latest, most_liked, most_commented, or most_collected. Default relevance.","help":"Result order: relevance, latest, most_liked, most_commented, or most_collected (default relevance).","enum":["relevance","latest","most_liked","most_commented","most_collected"]},{"name":"type","required":false,"in":"query","type":"string","description":"Note type: all, image, or video. Default all.","help":"Note type: all, image, or video (default all).","enum":["all","image","video"]},{"name":"published","required":false,"in":"query","type":"string","description":"Recency window: all, day, week, or half_year. Default all.","help":"Recency window: all, day, week, or half_year (default all).","enum":["all","day","week","half_year"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/xiaohongshu/trending","method":"GET","platform":"xiaohongshu","group":"Trending","label":"Trending","description":"Returns the live Xiaohongshu hot search board: ranked topics with a hot value.\n\nUse it to see what is trending on Xiaohongshu right now; there is no keyword filter, and there is no next page.","credits":{"min":50,"max":1000},"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":1,"params":[{"name":"limit","required":false,"in":"query","type":"integer","description":"Topics to return, 1 to 20. Default 10.","help":"Topics to return, 1-20 (default 10).","minimum":1,"maximum":20},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/xiaohongshu/profile","method":"GET","platform":"xiaohongshu","group":"Profile","label":"Profile","description":"Returns a Xiaohongshu (RedNote) creator's profile: display name, RedNote ID, bio, avatar, followers, following, notes posted, likes received, and IP province.\n\nUse it to check a creator's follower count; use profile/posts for their notes.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":2,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Xiaohongshu profile URL, for example https://www.xiaohongshu.com/user/profile/6a59f257000000000f03b000.","help":"Xiaohongshu profile URL, e.g. https://www.xiaohongshu.com/user/profile/6a59f257000000000f03b000.","example":"https://www.xiaohongshu.com/user/profile/6a59f257000000000f03b000","one_of_group":"url|id"},{"name":"id","required":false,"in":"query","type":"string","description":"User id, the author_user_id on a note. Not the RedNote id.","help":"User id, the author_user_id on a note. Not the RedNote id.","one_of_group":"url|id"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/xiaohongshu/profile/posts","method":"GET","platform":"xiaohongshu","group":"Profile","label":"Profile/Posts","description":"Returns a Xiaohongshu creator's notes, newest first: title, short summary, engagement counts, and pinned flag.\n\nUse it to list a creator's notes; use post for one note's full body text.","credits":{"min":50,"max":1000},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":false,"in":"query","type":"string","description":"Xiaohongshu profile URL.","help":"Xiaohongshu profile URL.","example":"https://www.xiaohongshu.com/user/profile/6a59f257000000000f03b000","one_of_group":"url|id"},{"name":"id","required":false,"in":"query","type":"string","description":"User id, the author_user_id on a note. Not the RedNote id.","help":"User id, the author_user_id on a note. Not the RedNote id.","one_of_group":"url|id"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Rows to return, 1 to 20. Default 10.","help":"Rows to return, 1-20 (default 10).","minimum":1,"maximum":20},{"name":"cursor","required":false,"in":"query","type":"string","description":"Continuation token from a previous response's pagination block. Omit for the first page.","help":"Continuation token from the previous response's pagination block. Omit for the first page."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/xiaohongshu/post","method":"GET","platform":"xiaohongshu","group":"Post","label":"Post","description":"Returns one Xiaohongshu note in full: body text, images or video, creator, likes, comments, saves, shares, and the IP province.\n\nUse it when you have a note URL and need the full body text; search and profile/posts only carry a short summary.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Note URL, for example https://www.xiaohongshu.com/explore/6aac8143000000002a007389, or the bare note id.","help":"Note URL, e.g. https://www.xiaohongshu.com/explore/6aac8143000000002a007389, or the bare note id.","example":"https://www.xiaohongshu.com/explore/6aac8143000000002a007389"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/xiaohongshu/post/comments","method":"GET","platform":"xiaohongshu","group":"Post","label":"Post/Comments","description":"Returns top-level comments on a Xiaohongshu note: text, commenter, likes, reply count, pin flag, and the commenter's IP province.\n\nUse it to read a note's top-level comments; reply threads are not expanded on this call.","credits":{"min":50,"max":1000},"tier":"advanced","paginates":true,"cache_ttl_seconds":21600,"order":5,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Note URL or the bare note id the comments sit under.","help":"Note URL or the bare note id the comments sit under.","example":"https://www.xiaohongshu.com/explore/6aac8143000000002a007389"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Rows to return, 1 to 20. Default 10.","help":"Rows to return, 1-20 (default 10).","minimum":1,"maximum":20},{"name":"cursor","required":false,"in":"query","type":"string","description":"Continuation token from a previous response's pagination block. Omit for the first page.","help":"Continuation token from the previous response's pagination block. Omit for the first page."},{"name":"sort","required":false,"in":"query","type":"string","description":"Comment ordering: relevance, latest, or most_liked. Default relevance.","help":"Comment order: relevance, latest, or most_liked (default relevance).","enum":["relevance","latest","most_liked"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/channel","method":"GET","platform":"youtube","group":"Channel","label":"Channel","description":"Returns a YouTube channel's public profile: subscriber count on author.followers (rounded above 1,000), video and view totals, description, banner and avatar URLs, and author.ext.public_email.\n\nUse it when you have a handle, channel id, or channel URL and want an account snapshot before pulling its videos.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":0,"params":[{"name":"channelId","required":false,"in":"query","type":"string","description":"YouTube channel ID. Can pass a channelId, handle or url","help":"YouTube channel ID. You can pass this, a handle, or a URL instead.","one_of_group":"channelId|handle|url"},{"name":"handle","required":false,"in":"query","type":"string","description":"YouTube channel handle without the @ symbol","help":"YouTube channel handle, without the @ symbol.","example":"MrBeast","one_of_group":"channelId|handle|url"},{"name":"url","required":false,"in":"query","type":"string","description":"YouTube channel URL. Can pass a channelId, handle or url","help":"YouTube channel URL. You can pass this, a channel ID, or a handle instead.","one_of_group":"channelId|handle|url"},{"name":"hl","required":false,"in":"query","type":"string","description":"Preferred response language for localized text (ISO 639-1, e.g. 'en', 'es', 'fr').","help":"Response language for localized text (ISO 639-1 code, e.g. en, es, fr)."},{"name":"forUsername","required":false,"in":"query","type":"string","description":"Legacy YouTube username (pre-handle) to look up.","help":"Legacy YouTube username, from before channel handles existed."},{"name":"contact_email","required":false,"in":"query","type":"string","description":"Optional. When 1, also returns author.ext.contact_email: when the bio lists two or more email addresses, the one the creator gives for contacting them personally, copied verbatim from the bio. Null when there is one address or none, when every address belongs to a manager, agency or brand, or when the choice was not confident. author.ext.public_email is unchanged. No extra credits.","help":"Set to 1 to also try to pick out the creator's personal contact email when the bio lists multiple addresses. No extra cost.","enum":["1"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/channel/about","method":"GET","platform":"youtube","group":"Channel","label":"Channel/About","description":"Returns the address behind a channel's View email address control on author.ext.public_email, its listed country, and the profile: id, handle, name, avatar, bio, URL, subscribers, join date, views.\n\nUse it for outreach when GET /v1/youtube/channel returned no email: that lane reads only the public description, this one reads the About tab control. Premium priced, so shortlist first.","credits":250,"tier":"premium","paginates":false,"cache_ttl_seconds":86400,"order":1,"params":[{"name":"channelId","required":false,"in":"query","type":"string","description":"YouTube channel ID. Can pass a channelId, handle or url","help":"YouTube channel ID. You can pass this, a handle, or a URL instead.","one_of_group":"channelId|handle|url"},{"name":"handle","required":false,"in":"query","type":"string","description":"YouTube channel handle without the @ symbol","help":"YouTube channel handle, without the @ symbol.","example":"mkbhd","one_of_group":"channelId|handle|url"},{"name":"url","required":false,"in":"query","type":"string","description":"YouTube channel URL. Can pass a channelId, handle or url","help":"YouTube channel URL. You can pass this, a channel ID, or a handle instead.","one_of_group":"channelId|handle|url"},{"name":"contact_email","required":false,"in":"query","type":"string","description":"Optional. When 1, also returns author.ext.contact_email: when the bio lists two or more email addresses, the one the creator gives for contacting them personally, copied verbatim from the bio. Null when there is one address or none, when every address belongs to a manager, agency or brand, or when the choice was not confident. author.ext.public_email is unchanged. No extra credits.","help":"Set to 1 to also try to pick out the creator's personal contact email when the bio lists multiple addresses. No extra cost.","enum":["1"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/channel/videos","method":"GET","platform":"youtube","group":"Channel","label":"Channel/Videos","description":"Returns recent videos published by a channel, each with title, view count, duration, thumbnail, and publish date; pass includeExtras=true to add like and comment counts.\n\nUse it for a channel's regular uploads; channel/shorts covers Shorts, channel/lives covers streams, channel/community-posts covers text posts.","credits":{"min":10,"max":20},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"channelId","required":false,"in":"query","type":"string","description":"YouTube channel ID","help":"YouTube channel ID.","one_of_group":"channelId|handle"},{"name":"handle","required":false,"in":"query","type":"string","description":"YouTube channel handle without the @ symbol","help":"YouTube channel handle, without the @ symbol.","example":"MrBeast","one_of_group":"channelId|handle"},{"name":"since","required":false,"in":"query","type":"string","description":"Only videos published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older videos are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Pinned videos sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.","help":"Only return videos published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops once older videos are reached; pinned videos don't count.","example":"2026-09-01"},{"name":"stop_at_id","required":false,"in":"query","type":"string","description":"The id (`post.id`) or URL (`post.url`) of the newest video you already hold. The page stops just before it: that video and everything after it are left off, `next_cursor` is not returned, and `pagination.stopped_at` is `known_id`. A pinned video never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. `pagination.stopped_at` is `end` when the list ran out first and `null` while there is more to walk.","help":"Id or URL of the newest video you already have. Paging stops right before it, so you only get videos newer than that one."},{"name":"sort","required":false,"in":"query","type":"string","description":"Sort by latest or popular","help":"Sort by latest or popular.","enum":["latest","popular"]},{"name":"includeExtras","required":false,"in":"query","type":"string","description":"Set to `true` to add the like count and comment count (`post.engagement.likes` / `.comments`) and the video description (`post.ext.description`). For the full per-video detail use /v1/youtube/video. Slows the response slightly.","help":"Set to true to also include like count, comment count, and video description. Slightly slower."},{"name":"is_paid_promotions","required":false,"in":"query","type":"string","description":"Set to 'true' to search YouTube's public paid product placement / sponsorship / endorsement surface: returns normal videos where the creator disclosed a paid promotion.","help":"Set to true to only return videos where the creator disclosed a paid promotion or sponsorship."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `channel` (one token only) to add the channel's subscriber count to every row (`post.ext.author_followers`, YouTube's own figure, rounded to three significant figures above 1,000) plus `post.author.display_name`, `.avatar_url` and `author.id` where missing. Adds well under a second (never more than 8).","help":"Set to channel to add the channel's subscriber count and basic info to every row. Adds under a second.","enum":["channel"]},{"name":"exact_dates","required":false,"in":"query","type":"string","description":"Exact publish dates are on by default and free. Set to `false` to skip the lookup: rows then carry the supplier's date estimate (a day-granular or coarser label truncated to midnight UTC), marked by `post.ext.published_precision` and `post.ext.published_label`, and the listing title, marked by `post.ext.title_maybe_translated`.","help":"Exact publish dates and the creator's original titles, on by default and free. Set to false to skip the lookup and get estimated dates.","enum":["true","false"]},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/video","method":"GET","platform":"youtube","group":"Video","label":"Video","description":"Returns full details for one video: title, view, like and comment counts, description, tags, duration, channel info, and publish date.\n\nUse it when you have a video URL and need its complete record; the list endpoints return lighter entries without the description or tags.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube video","help":"Full URL of the YouTube video.","example":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},{"name":"language","required":false,"in":"query","type":"string","description":"Preferred response language (mapped to Accept-Language header; not guaranteed due to YouTube localization behavior). 2 letter language code, ie 'en', 'es', 'fr' etc.","help":"Preferred response language (ISO 639-1 code, e.g. en, es, fr). Not guaranteed to apply."},{"name":"hl","required":false,"in":"query","type":"string","description":"Preferred response language for localized text (ISO 639-1, e.g. 'en', 'es', 'fr').","help":"Response language for localized text (ISO 639-1 code, e.g. en, es, fr)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/videos","method":"POST","platform":"youtube","group":"Videos","label":"Videos","description":"Returns full details for up to 1000 videos in one request, each item the same object the single video endpoint returns, with unresolved ids simply absent from the list.\n\nUse it when you already hold many video ids and want them in one request instead of calling the single video endpoint over and over.","credits":{"min":50,"max":1000},"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":4,"params":[{"name":"ids","required":true,"in":"body","type":"array","description":""},{"name":"hl","required":false,"in":"query","type":"string","description":"Preferred response language for localized text (ISO 639-1, e.g. 'en', 'ko').","help":"Response language for localized text (ISO 639-1 code, e.g. en, ko)."},{"name":"include_localizations","required":false,"in":"body","type":"boolean","description":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":false},{"path":"/v1/youtube/channels","method":"POST","platform":"youtube","group":"Channels","label":"Channels","description":"Returns channel details for up to 1000 channel ids in one request; each row is the same channel object the single channel endpoint returns.\n\nUse it when you already hold a list of channel ids; the single channel endpoint is the one that accepts a handle or a channel URL.","credits":{"min":50,"max":1000},"tier":"advanced","paginates":false,"cache_ttl_seconds":86400,"order":5,"params":[{"name":"ids","required":true,"in":"body","type":"array","description":""},{"name":"hl","required":false,"in":"query","type":"string","description":"Preferred response language for localized text (ISO 639-1, e.g. 'en', 'ko').","help":"Response language for localized text (ISO 639-1 code, e.g. en, ko)."},{"name":"include_localizations","required":false,"in":"body","type":"boolean","description":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":false},{"path":"/v1/youtube/transcripts","method":"POST","platform":"youtube","group":"Transcripts","label":"Transcripts","description":"Returns one row per video id, up to 100 per request, each with the spoken transcript, the caption language it resolved to, and an ok or not-found status.\n\nUse it to build a transcript set from many videos at once; a video without captions comes back as not found instead of failing the whole request.","credits":{"min":30,"max":3000},"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":6,"params":[{"name":"ids","required":true,"in":"body","type":"array","description":""},{"name":"language","required":false,"in":"body","type":"string","description":""},{"name":"format","required":false,"in":"body","type":"string","description":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":false},{"path":"/v1/youtube/video/sponsors","method":"GET","platform":"youtube","group":"Video","label":"Video/Sponsors","description":"Returns whether a video carries a paid-promotion disclosure plus the brands likely sponsoring it, each with supporting evidence and a confidence score.\n\nUse it to spot sponsored videos and who paid; sponsors are inferred from the description, links, promo codes, and transcript, not stated by YouTube.","credits":100,"tier":"premium","paginates":false,"cache_ttl_seconds":21600,"order":7,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube video or short","help":"Full URL of the YouTube video or short.","example":"https://www.youtube.com/watch?v=AVO0ifle-OU"},{"name":"language","required":false,"in":"query","type":"string","description":"2 letter language code used for transcript lookup, ie 'en', 'es', 'fr' etc.","help":"Language for transcript lookup (2-letter code, e.g. en, es, fr)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/video/comments","method":"GET","platform":"youtube","group":"Video","label":"Video/Comments","description":"Returns comments on a video, each with the author name, comment text, like count, reply count, and publish timestamp.\n\nUse it for a video's top-level comments, then pass a comment's `id` as continuationToken to video/comment/replies to open a single thread.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":8,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube video to fetch comments for","help":"Full URL of the YouTube video to fetch comments for.","example":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},{"name":"order","required":false,"in":"query","type":"string","description":"Order of comments: 'top' (default, YouTube's relevance ranking) or 'newest' (exact newest-first on `comment.published_at`; each next page continues strictly older with no overlap: the lane for date-window and recency pulls).","help":"Order of comments: top (default, YouTube's ranking) or newest (strictly newest-first, no overlap between pages).","enum":["top","newest"]},{"name":"searchTerm","required":false,"in":"query","type":"string","description":"Filter comments to those containing this search term.","help":"Filter comments to those containing this search term."},{"name":"format","required":false,"in":"query","type":"string","description":"Text format for comment bodies: 'html' (default) or 'plainText'.","help":"Text format for comment bodies: html (default) or plainText.","enum":["html","plainText"]},{"name":"max_results","required":false,"in":"query","type":"integer","description":"Comments per page, 1-100. The default page is already 100, so set this only to shrink a page; out-of-range values are rejected with a free 400 rather than degrading the response.","help":"Comments per page, 1-100 (default 100).","minimum":1,"maximum":100},{"name":"channel_id","required":false,"in":"query","type":"string","description":"YouTube channel id to fetch channel-level community comments for (instead of a video's comments).","help":"YouTube channel ID to fetch channel-level community comments for, instead of a video's comments."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Sending it sets the newest-first sort shown in this endpoint's sort parameter (any other sort value is a free 400). The page still costs what a page costs, so you pay for the pages you walk and no more. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Paging stops at the first older row; it sets the newest-first sort."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/youtube/video/comment/replies","method":"GET","platform":"youtube","group":"Video","label":"Video/Comment/Replies","description":"Returns the replies under one comment, each with the reply text, author details, like count, and publish date.\n\nUse it after video/comments: pass a comment's `id` as continuationToken, and keep paging until no replies remain to get the whole thread.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":9,"params":[{"name":"continuationToken","required":true,"in":"query","type":"string","description":"Where to start. The id of a top-level comment: a top-level comment id (e.g. the `comment.id` of any row from /v1/youtube/video/comments). For the next page of replies, send `pagination.next_cursor` as `cursor` with the same continuationToken.","help":"Where to start: a top-level comment `id`, or the cursor from a previous replies response.","example":"Ugzge340dBgB75hWBm54AaABAg"},{"name":"format","required":false,"in":"query","type":"string","description":"Text format for reply bodies: 'html' (default) or 'plainText'.","help":"Text format for reply bodies: html (default) or plainText.","enum":["html","plainText"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Universal pagination cursor. Send `pagination.next_cursor` from the previous response back verbatim: the API maps it to this endpoint's native `continuationToken` (cursor style). You never construct, decode, or look up a cursor. Omit it for page 1.","help":"Cursor from the previous response, to fetch the next page."}],"available":true},{"path":"/v1/youtube/search","method":"GET","platform":"youtube","group":"Search","label":"Search","description":"Returns YouTube search results for a keyword: videos, channels, playlists, shorts, and live streams, each with title, thumbnail, views, and channel.\n\nUse it for a general keyword search across every content kind; search/advanced returns videos only but adds date, license, and country filters.","credits":{"min":10,"max":150},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":10,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword or phrase.","help":"Search keyword or phrase.","example":"javascript tutorial"},{"name":"uploadDate","required":false,"in":"query","type":"string","description":"Upload date filter. Reliable on its own (no `type`). With `type=shorts`, windows narrower than `this_year` are rejected with a 400 because YouTube returns an empty set for them; `this_year` is accepted but measured to return ~5x fewer unique Shorts across a paginated walk (the platform re-serves the same items under an advancing `continuationToken`), so the recommended pattern for Shorts recency is no `uploadDate` at all plus `includeExtras=true` and a client-side filter on `post.published_at`. With other `type` values the platform currently ignores the date filter and may mix content kinds; filter client-side there too. For an EXACT date window rather than these coarse buckets, use `/v1/youtube/search/advanced`, whose `published_after`/`published_before` take RFC-3339 bounds and are genuinely applied.","help":"Upload date filter: today, this_week, this_month, or this_year. For an exact date range, use /youtube/search/advanced instead.","enum":["today","this_week","this_month","this_year"]},{"name":"sortBy","required":false,"in":"query","type":"string","description":"Sort order: relevance or popular. `popular` cannot be combined with `type=shorts` (rejected with a 400. YouTube serves that combination unreliably); it also caps the page at ~20 results. It is also NOT a strict view-count sort: `popular` is a popularity-weighted ranking, and results do not come back in descending view order. Measured on 4 of 4 test keywords: a `new york` search returned 9.5M, then 502.9M, then 66K views in that order. If you need a view-faithful ordering, use `/v1/youtube/search/advanced` with `order=viewCount` and `includeExtras=true`: its ranking leads with the true top results, and the returned `engagement.views` lets you sort the page exactly client-side.","help":"Sort by relevance or popular. Popular is a weighted ranking, not a strict view-count sort, and can't combine with type=shorts.","enum":["relevance","popular"]},{"name":"type","required":false,"in":"query","type":"string","description":"Type of content to return. NOTE on Shorts results (`type=shorts`, and the Shorts an untyped search mixes in): the Shorts shelf item carries NO channel object source (0 of 98 items across 3 keywords on 10/08/2026, 25 of 25 without one on 26/09/2026, raw source; `includeExtras=true` does not add it). By default the free per-video lookup that supplies the exact date also fills `author.id` and `post.author.display_name` on those rows, at no extra credit. `post.author.username` (the @handle) and `post.author.avatar_url` stay null on them: send `include=engagement,channel` to fill both and the subscriber count. With `exact_dates=false` no lookup runs and the whole author stays null on Shorts. Video results are unaffected (20/20 carry the full author). `/v1/youtube/search/advanced` also carries `channel_id` on every result, though it has no Shorts filter.","help":"Content type to search: videos, shorts, channels, or playlists. Shorts results may lack the channel handle and avatar.","enum":["videos","shorts","channels","playlists"],"example":"videos"},{"name":"duration","required":false,"in":"query","type":"string","description":"Video duration filter. Known issue: currently not applied by the platform and it can degrade the `type` filter; prefer filtering client-side on `post.content.duration_seconds`.","help":"Video length filter: under_3_min, between_3_and_20_min, or over_20_min. Not reliably applied; filter results by duration yourself if it matters.","enum":["under_3_min","between_3_and_20_min","over_20_min"]},{"name":"region","required":false,"in":"query","type":"string","description":"2-letter country code of the country to put the proxy in.","help":"Two-letter country code (e.g. US, GB) to fetch results as seen from that country."},{"name":"includeExtras","required":false,"in":"query","type":"string","description":"Set to `true` to add the like count and comment count (`post.engagement.likes` / `.comments`) and the video description (`post.ext.description`) to each video result. Left off, those three are null. Dates do not need it: `post.published_at` is exact by default either way (see `exact_dates`). For Shorts results it additionally supplies `post.content.duration_seconds`, which those items never carry otherwise. It does NOT add channel identity to Shorts results (see `type`) and it never adds a subscriber count. For both, send `include=engagement,channel` instead: the video join supplies every row's channel id, and the channel join adds the subscriber count, in this same call. For full per-video details use `/v1/youtube/video`.","help":"Set to true to add like count, comment count, and description to each video result (and duration for Shorts)."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement`, `channel`, or both (`engagement,channel`) to fill more of every row in this one call. `engagement` fills `post.engagement.views`, `.likes` and `.comments`, `post.content.duration_seconds`, `author.id` and `post.author.display_name` where the row lacks them, and replaces a date derived from a label such as \"4 months ago\" with the exact publish time (removing `post.ext.published_precision`). `channel` puts the channel's subscriber count on `post.ext.author_followers` (YouTube's own figure, which it rounds to three significant figures above 1,000) and fills the channel's `post.author.display_name`, `.avatar_url` and `.username` where missing. Send both to cover rows that arrive without a channel id: the video join supplies it and the channel join then uses it. Channel and playlist result rows are not videos: the video join skips them. Each join adds 0.2 to 0.7 seconds on a fresh page (one lookup per 50 ids, never more than 8 seconds).","help":"Set to engagement, channel, or both to fill in view/like/comment counts, duration, and channel info in this call. Send both if rows arrive without a channel id."},{"name":"exact_dates","required":false,"in":"query","type":"string","description":"Exact publish dates are on by default and free. Set to `false` to skip the lookup: rows then carry the supplier's date estimate (a day-granular or coarser label truncated to midnight UTC), marked by `post.ext.published_precision` and `post.ext.published_label`, and the listing title, marked by `post.ext.title_maybe_translated`.","help":"Exact publish dates and the creator's original titles, on by default and free. Set to false to skip the lookup and get estimated dates.","enum":["true","false"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."}],"available":true},{"path":"/v1/youtube/channel/shorts","method":"GET","platform":"youtube","group":"Channel","label":"Channel/Shorts","description":"Returns the Shorts published by a channel, each with title, view count, like count, and thumbnail.\n\nUse it when you want only a channel's Shorts; channel/videos returns its regular uploads instead.","credits":{"min":10,"max":20},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":11,"params":[{"name":"channelId","required":false,"in":"query","type":"string","description":"Can pass channelId or handle","help":"YouTube channel ID. You can pass a handle instead.","one_of_group":"channelId|handle"},{"name":"handle","required":false,"in":"query","type":"string","description":"YouTube channel handle without the @ symbol","help":"YouTube channel handle, without the @ symbol.","example":"MrBeast","one_of_group":"channelId|handle"},{"name":"since","required":false,"in":"query","type":"string","description":"Only shorts published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Older shorts are left off the page, and the page that reaches one ends the walk: `next_cursor` is not returned and `pagination.stopped_at` is `since`. Pinned shorts sit out of date order and never end the walk. The page still costs what a page costs, so a daily poll pays for the pages it walks and no more.","help":"Only return shorts on or after this date: YYYY-MM-DD or a full ISO 8601 timestamp.","example":"2026-09-01"},{"name":"stop_at_id","required":false,"in":"query","type":"string","description":"The id (`post.id`) or URL (`post.url`) of the newest short you already hold. The page stops just before it: that short and everything after it are left off, `next_cursor` is not returned, and `pagination.stopped_at` is `known_id`. A pinned short never counts as the stop point. If it is not on this page the page is returned in full with its cursor, so keep walking. `pagination.stopped_at` is `end` when the list ran out first and `null` while there is more to walk.","help":"Short id or URL of the newest short you already have. Stops the page just before it, for polling only new shorts."},{"name":"sort","required":false,"in":"query","type":"string","description":"Sort by newest (descending publish date) or popular (descending view count). Both orderings are genuinely applied, unlike `/v1/youtube/search`'s `popular`, which is a popularity-weighted ranking rather than a view sort.","help":"Sort by newest (default) or popular (by view count).","enum":["newest","popular"]},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `channel` (one token only) to add the channel's subscriber count to every row (`post.ext.author_followers`, YouTube's own figure, rounded to three significant figures above 1,000) plus `post.author.display_name`, `.avatar_url` and `author.id` where missing. Adds well under a second (never more than 8).","help":"Set to channel to add the channel's subscriber count and basic info to every row. Adds under a second.","enum":["channel"]},{"name":"exact_dates","required":false,"in":"query","type":"string","description":"On by default and free: every row is joined to the per-video lookup, one lookup per page (two on a page past 50 rows, side by side), adding about 0.2 to 0.7 seconds (never more than 3). Set to `false` to skip the lookup and keep the listing title, marked by `post.ext.title_maybe_translated`. The dates on this endpoint are exact either way.","help":"Original titles, on by default and free: swaps YouTube's translated listing title for the creator's own. Set to false to skip it.","enum":["true","false"]},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/community-post","method":"GET","platform":"youtube","group":"Community post","label":"Community Post","description":"Returns one YouTube community post: its text, like count, comment count, attached images, and author info.\n\nUse it when you have a single community post URL; channel/community-posts lists them for a whole channel.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":12,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube community post","help":"Full URL of the YouTube community post.","example":"https://www.youtube.com/post/Ugkxvj2KoApYAXoqLWnKVr6zZe5JjeHrQeP8"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/playlist","method":"GET","platform":"youtube","group":"Playlist","label":"Playlist","description":"Returns the videos in a playlist in playlist order: video id, title, thumbnail, channel and publish date. include=engagement adds views, likes, comments and duration.\n\nUse it when you have a playlist id. Same rows as playlist/items from the same source; this lane has a second source behind it, so prefer it when availability matters.","credits":{"min":10,"max":110},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":13,"params":[{"name":"playlist_id","required":true,"in":"query","type":"string","description":"YouTube playlist ID","help":"YouTube playlist ID.","example":"PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor from a previous response: fetches the next page.","help":"Cursor from the previous response, to fetch the next page."},{"name":"channel_id","required":false,"in":"query","type":"string","description":"YouTube channel id: pages that channel's uploads instead of a playlist.","help":"YouTube channel ID; use instead of a playlist ID to page that channel's uploads."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement`, `channel`, or both (`engagement,channel`) to fill more of every row in this one call. `engagement` fills `post.engagement.views`, `.likes` and `.comments`, `post.content.duration_seconds`, `author.id` and `post.author.display_name` where the row lacks them, and replaces a date derived from a label such as \"4 months ago\" with the exact publish time (removing `post.ext.published_precision`). `channel` puts the channel's subscriber count on `post.ext.author_followers` (YouTube's own figure, which it rounds to three significant figures above 1,000) and fills the channel's `post.author.display_name`, `.avatar_url` and `.username` where missing. Send both to cover rows that arrive without a channel id: the video join supplies it and the channel join then uses it. Each join adds 0.2 to 0.7 seconds on a fresh page (one lookup per 50 ids, never more than 8 seconds).","help":"Set to engagement, channel, or both to fill in view/like/comment counts, duration, and channel info in this call. Send both if rows arrive without a channel id."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/search/hashtag","method":"GET","platform":"youtube","group":"Search","label":"Search/Hashtag","description":"Returns videos posted under a hashtag, each with view count, channel info, and publish date.\n\nUse it to read a hashtag feed rather than a keyword query; set type to shorts to limit the results to Shorts.","credits":{"min":10,"max":110},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":14,"params":[{"name":"hashtag","required":true,"in":"query","type":"string","description":"Hashtag to search for without the # symbol","help":"Hashtag to search for, without the # symbol.","example":"shorts"},{"name":"type","required":false,"in":"query","type":"string","description":"Search for all types of content or only shorts","help":"Content type to search: all or shorts only.","enum":["all","shorts"]},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement`, `channel`, or both (`engagement,channel`) to fill more of every row in this one call. `engagement` fills `post.engagement.views`, `.likes` and `.comments`, `post.content.duration_seconds`, `author.id` and `post.author.display_name` where the row lacks them, and replaces a date derived from a label such as \"4 months ago\" with the exact publish time (removing `post.ext.published_precision`). `channel` puts the channel's subscriber count on `post.ext.author_followers` (YouTube's own figure, which it rounds to three significant figures above 1,000) and fills the channel's `post.author.display_name`, `.avatar_url` and `.username` where missing. Send both to cover rows that arrive without a channel id: the video join supplies it and the channel join then uses it. Each join adds 0.2 to 0.7 seconds on a fresh page (one lookup per 50 ids, never more than 8 seconds).","help":"Set to engagement, channel, or both to fill in view/like/comment counts, duration, and channel info in this call. Send both if rows arrive without a channel id."},{"name":"exact_dates","required":false,"in":"query","type":"string","description":"Exact publish dates are on by default and free. Set to `false` to skip the lookup: rows then carry the supplier's date estimate (a day-granular or coarser label truncated to midnight UTC), marked by `post.ext.published_precision` and `post.ext.published_label`, and the listing title, marked by `post.ext.title_maybe_translated`.","help":"Exact publish dates and the creator's original titles, on by default and free. Set to false to skip the lookup and get estimated dates.","enum":["true","false"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/shorts/trending","method":"GET","platform":"youtube","group":"Shorts","label":"Shorts/Trending","description":"Returns the Shorts trending on YouTube right now, each with view count, like count, channel info, and thumbnail.\n\nUse it for a snapshot of what is trending in Shorts; videos/trending covers regular videos and can be narrowed by country.","credits":{"min":50,"max":150},"tier":"advanced","paginates":false,"cache_ttl_seconds":3600,"order":15,"params":[{"name":"include","required":false,"in":"query","type":"string","description":"Set to `channel` (one token only) to add each row's channel stats in this one call. `channel` puts the channel's subscriber count on `post.ext.author_followers` (YouTube's own figure, which it rounds to three significant figures above 1,000) and fills the channel's `post.author.display_name`, `.avatar_url` and `.username` where missing. Each join adds 0.2 to 0.7 seconds on a fresh page (one lookup per 50 ids, never more than 8 seconds).","help":"Set to channel to add each row's subscriber count and basic channel info. Adds under a second.","enum":["channel"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/video/transcript","method":"GET","platform":"youtube","group":"Video","label":"Video/Transcript","description":"Returns the spoken transcript of a video as timestamped segments, each with text, start time and duration, plus language, word count, and speech rate.\n\nUse it for a single video URL; when the video has no captions the reply is a 404 naming the reason, which is expected rather than a failure.","credits":30,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":16,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube video","help":"Full URL of the YouTube video.","example":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},{"name":"language","required":false,"in":"query","type":"string","description":"2 letter language code, ie 'en', 'es', 'fr' etc. If no caption track matches the language you specify, the request returns 404 RESOURCE_NOT_FOUND (reason `no_captions`).","help":"2-letter language code (e.g. en, es, fr). Returns a 404 if no matching caption track exists."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/channel/playlists","method":"GET","platform":"youtube","group":"Channel","label":"Channel/Playlists","description":"Returns the playlists on a channel's Playlists tab, each with playlist id, title, thumbnail, video count, channel info, and playlist URL.\n\nUse it to discover a channel's playlists, then pass a returned playlist id to playlist or playlist/items to read the videos inside one.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":17,"params":[{"name":"channelId","required":false,"in":"query","type":"string","description":"YouTube channel ID.","help":"YouTube channel ID.","one_of_group":"channelId|handle"},{"name":"handle","required":false,"in":"query","type":"string","description":"YouTube channel handle (with or without @).","help":"YouTube channel handle, with or without the @ symbol.","example":"mkbhd","one_of_group":"channelId|handle"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/channel/lives","method":"GET","platform":"youtube","group":"Channel","label":"Channel/Lives","description":"Returns the live and past streams on a channel's Live tab, each with title, URL, thumbnail, view count, publish time, and duration.\n\nUse it to track a channel's streaming output; channel/videos returns regular uploads and leaves the Live tab out.","credits":{"min":10,"max":70},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":18,"params":[{"name":"channelId","required":false,"in":"query","type":"string","description":"YouTube channel ID.","help":"YouTube channel ID.","one_of_group":"channelId|handle"},{"name":"handle","required":false,"in":"query","type":"string","description":"YouTube channel handle (with or without @).","help":"YouTube channel handle, with or without the @ symbol.","example":"IShowSpeed","one_of_group":"channelId|handle"},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement`, `channel`, or both (`engagement,channel`) to fill more of every row in this one call. `engagement` fills `post.engagement.views`, `.likes` and `.comments`, `post.content.duration_seconds`, `author.id` and `post.author.display_name` where the row lacks them, and replaces a date derived from a label such as \"4 months ago\" with the exact publish time (removing `post.ext.published_precision`). Each join adds 0.2 to 0.7 seconds on a fresh page (one lookup per 50 ids, never more than 8 seconds).","help":"Set to engagement, channel, or both to fill in view/like/comment counts, duration, exact publish time, and channel info in this call. Adds under a second."},{"name":"exact_dates","required":false,"in":"query","type":"string","description":"Exact publish dates are on by default and free. Set to `false` to skip the lookup: rows then carry the supplier's date estimate (a day-granular or coarser label truncated to midnight UTC), marked by `post.ext.published_precision` and `post.ext.published_label`, and the listing title, marked by `post.ext.title_maybe_translated`.","help":"Exact publish dates and the creator's original titles, on by default and free. Set to false to skip the lookup and get estimated dates.","enum":["true","false"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/channel/community-posts","method":"GET","platform":"youtube","group":"Channel","label":"Channel/Community Posts","description":"Returns the posts on a channel's Posts tab, each with post id, URL, text, images, attached video, like count, publish time, and channel info.\n\nUse it to read a channel's text and image posts in bulk; community-post fetches one post when you already have its URL.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":19,"params":[{"name":"channelId","required":false,"in":"query","type":"string","description":"YouTube channel ID.","help":"YouTube channel ID.","one_of_group":"channelId|handle"},{"name":"handle","required":false,"in":"query","type":"string","description":"YouTube channel handle (with or without @).","help":"YouTube channel handle, with or without the @ symbol.","example":"MrBeast","one_of_group":"channelId|handle"},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/videos/trending","method":"GET","platform":"youtube","group":"Videos","label":"Videos/Trending","description":"Returns the trending videos for a country and category, each with title, thumbnail, duration, view, like and comment counts, channel, and publish time.\n\nUse it to see what is popular in a given country right now; shorts/trending covers Shorts and takes no filters.","credits":{"min":10,"max":60},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":20,"params":[{"name":"region","required":false,"in":"query","type":"string","description":"ISO 3166-1 alpha-2 country code (e.g. US, GB, KR).","help":"Two-letter country code (e.g. US, GB, KR) for regional trending videos.","example":"US"},{"name":"category","required":false,"in":"query","type":"string","description":"YouTube video category id (e.g. 10 = Music, 24 = Entertainment).","help":"YouTube video category ID (e.g. 10 = Music, 24 = Entertainment).","example":"10"},{"name":"language","required":false,"in":"query","type":"string","description":"Localization language (ISO 639-1) for titles/metadata.","help":"Language for titles and metadata (ISO 639-1 code)."},{"name":"max_results","required":false,"in":"query","type":"integer","description":"Maximum number of videos to return (1-50).","help":"Maximum number of videos to return, 1-50."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor from a previous response: fetches the next page.","help":"Cursor from the previous response, to fetch the next page."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `channel` (one token only) to add each row's channel stats in this one call. `channel` puts the channel's subscriber count on `post.ext.author_followers` (YouTube's own figure, which it rounds to three significant figures above 1,000) and fills the channel's `post.author.display_name`, `.avatar_url` and `.username` where missing. Each join adds 0.2 to 0.7 seconds on a fresh page (one lookup per 50 ids, never more than 8 seconds).","help":"Set to channel to add each row's subscriber count and basic channel info. Adds under a second.","enum":["channel"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/playlist/items","method":"GET","platform":"youtube","group":"Playlist","label":"Playlist/Items","description":"Returns the videos of a playlist in playlist order, each with video id, title, thumbnail, the video's own channel, its publish date, and its position and insertion time on post.ext.\n\nUse it when you have a playlist id; add include=engagement for counts and durations. Same rows as playlist, which has a second source behind it.","credits":{"min":10,"max":110},"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":21,"params":[{"name":"playlist_id","required":true,"in":"query","type":"string","description":"YouTube playlist id (the value after `list=` in a playlist URL).","help":"YouTube playlist ID, the value after list= in a playlist URL.","example":"PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor from a previous response: fetches the next page.","help":"Cursor from the previous response, to fetch the next page."},{"name":"channel_id","required":false,"in":"query","type":"string","description":"YouTube channel id: pages that channel's uploads instead of a playlist.","help":"YouTube channel ID; use instead of a playlist ID to page that channel's uploads."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `engagement`, `channel`, or both (`engagement,channel`) to fill more of every row in this one call. `engagement` fills `post.engagement.views`, `.likes` and `.comments`, `post.content.duration_seconds`, `author.id` and `post.author.display_name` where the row lacks them, and replaces a date derived from a label such as \"4 months ago\" with the exact publish time (removing `post.ext.published_precision`). `channel` puts the channel's subscriber count on `post.ext.author_followers` (YouTube's own figure, which it rounds to three significant figures above 1,000) and fills the channel's `post.author.display_name`, `.avatar_url` and `.username` where missing. Send both to cover rows that arrive without a channel id: the video join supplies it and the channel join then uses it. Each join adds 0.2 to 0.7 seconds on a fresh page (one lookup per 50 ids, never more than 8 seconds).","help":"Set to engagement, channel, or both to fill in view/like/comment counts, duration, and channel info in this call. Send both if rows arrive without a channel id."},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/search/advanced","method":"GET","platform":"youtube","group":"Search","label":"Search/Advanced","description":"Returns video search results with the full filter set: sort order, length, live status, license, category, country, language, and publish date window.\n\nUse it when a plain keyword search is too blunt; results are always videos, so use search when you also want channels or playlists back.","credits":{"min":10,"max":110},"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":22,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search query.","help":"Search query.","example":"lofi hip hop"},{"name":"order","required":false,"in":"query","type":"string","description":"Sort order: date, rating, relevance (default), title, videoCount, viewCount. `order=date` is exact (measured: zero inversions against the timestamps). `order=viewCount` is YouTube's popularity-weighted ranking: the top result is the true maximum but mid-list order is approximate, so for exact ranking add `includeExtras=true` and sort the page on `engagement.views` client-side. Both are far more faithful than `/v1/youtube/search`'s `sortBy=popular`, which is not view-ordered at all.","help":"Sort order: date, rating, relevance (default), title, videoCount, or viewCount. viewCount is approximate mid-list; sort client-side for exact ranking."},{"name":"duration","required":false,"in":"query","type":"string","description":"Video length: short (<4m), medium (4-20m), long (>20m), any. Genuinely applied (unlike `/v1/youtube/search`'s `duration`, which the platform ignores). `short` plus a client-side `post.content.duration_seconds <= 180` filter is the documented Shorts approximation: see the endpoint description for why it is an approximation and not a Shorts filter.","help":"Video length: short (under 4 min), medium (4-20 min), long (over 20 min), or any.","example":"long"},{"name":"event_type","required":false,"in":"query","type":"string","description":"Broadcast type: live, upcoming, completed.","help":"Broadcast type: live, upcoming, or completed."},{"name":"license","required":false,"in":"query","type":"string","description":"License filter: creativeCommon, youtube, any.","help":"License filter: creativeCommon, youtube, or any."},{"name":"category","required":false,"in":"query","type":"string","description":"YouTube video category id (e.g. 10 = Music).","help":"YouTube video category ID (e.g. 10 = Music)."},{"name":"region","required":false,"in":"query","type":"string","description":"ISO 3166-1 alpha-2 country code.","help":"Two-letter country code (e.g. US, GB) to fetch results as seen from that country."},{"name":"language","required":false,"in":"query","type":"string","description":"Preferred result language (ISO 639-1).","help":"Preferred result language (ISO 639-1 code, e.g. en, es, fr)."},{"name":"published_after","required":false,"in":"query","type":"string","description":"RFC-3339 datetime lower bound (e.g. 2026-01-01T00:00:00Z). Exact and genuinely applied. This is the endpoint to use for date-window work.","help":"Start of the date range, as an RFC 3339 datetime (e.g. 2026-01-01T00:00:00Z)."},{"name":"published_before","required":false,"in":"query","type":"string","description":"RFC-3339 datetime upper bound. Exact and genuinely applied.","help":"End of the date range, as an RFC 3339 datetime."},{"name":"channel_id","required":false,"in":"query","type":"string","description":"Restrict results to a single channel id.","help":"Restrict results to a single YouTube channel ID."},{"name":"max_results","required":false,"in":"query","type":"integer","description":"Maximum number of videos to return (1-50). Honored exactly: a page of 50 returns 50 (live-verified).","help":"Maximum number of videos to return, 1-50."},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pagination cursor from a previous response: fetches the next page.","help":"Cursor from the previous response, to fetch the next page."},{"name":"safe_search","required":false,"in":"query","type":"string","description":"Safe-search filter: none, moderate, strict.","help":"Safe-search filter: none, moderate, or strict."},{"name":"video_caption","required":false,"in":"query","type":"string","description":"Caption filter: any, closedCaption, none.","help":"Caption filter: any, closedCaption, or none."},{"name":"video_definition","required":false,"in":"query","type":"string","description":"Quality filter: any, high, standard.","help":"Video quality filter: any, high, or standard."},{"name":"video_dimension","required":false,"in":"query","type":"string","description":"Dimension filter: 2d, 3d, any.","help":"Video dimension filter: 2d, 3d, or any."},{"name":"video_embeddable","required":false,"in":"query","type":"string","description":"Restrict to embeddable videos: true, any.","help":"Restrict to embeddable videos: true or any."},{"name":"video_type","required":false,"in":"query","type":"string","description":"Type filter: any, episode, movie.","help":"Video type filter: any, episode, or movie."},{"name":"topic_id","required":false,"in":"query","type":"string","description":"Restrict to a Freebase topic id (e.g. /m/04rlf for music).","help":"Restrict results to a Freebase topic ID (e.g. /m/04rlf for music)."},{"name":"location","required":false,"in":"query","type":"string","description":"Latitude,longitude center for a geo search (e.g. 37.42307,-122.08427). Must be used together with location_radius.","help":"Center point for a geo search, as latitude,longitude (e.g. 37.42307,-122.08427). Requires location_radius."},{"name":"location_radius","required":false,"in":"query","type":"string","description":"Radius around location with a unit suffix (e.g. 50km, 10mi). Must be used together with location.","help":"Radius around location, with a unit suffix (e.g. 50km, 10mi). Requires location."},{"name":"includeExtras","required":false,"in":"query","type":"string","description":"Set to `true` to add the view, like and comment counts (`post.engagement.views` / `.likes` / `.comments`) and the video length (`post.content.duration_seconds`) to every result. Left off, those four are null. YouTube's search index returns snippets only, so the counts come from a second lookup.","help":"Set to true to add view, like, and comment counts plus video length to each result."},{"name":"include","required":false,"in":"query","type":"string","description":"Set to `channel` (one token only) to add each row's channel stats in this one call. `channel` puts the channel's subscriber count on `post.ext.author_followers` (YouTube's own figure, which it rounds to three significant figures above 1,000) and fills the channel's `post.author.display_name`, `.avatar_url` and `.username` where missing. Each join adds 0.2 to 0.7 seconds on a fresh page (one lookup per 50 ids, never more than 8 seconds).","help":"Set to channel to add each row's subscriber count and basic channel info. Adds under a second.","enum":["channel"]},{"name":"since","required":false,"in":"query","type":"string","description":"Only rows published on or after this date: YYYY-MM-DD (midnight UTC) or an ISO 8601 timestamp. Rows older than it are left off each page. This list is not in date order, so the walk does not stop at the date: keep following `next_cursor`, and each page costs what a page costs even when every row on it is filtered out. A row with no date is kept.","help":"Only return rows published on or after this date (YYYY-MM-DD or ISO 8601). Filters each page; keep paging, as the list is not in date order."},{"name":"until","required":false,"in":"query","type":"string","description":"Only rows published on or before this date: YYYY-MM-DD (that whole UTC day is included) or an ISO 8601 timestamp. Newer rows are left off each page and the walk does not stop, so older pages follow. A row with no date is kept.","help":"Only return rows published on or before this date (YYYY-MM-DD, whole day included, or ISO 8601)."},{"name":"min_views","required":false,"in":"query","type":"integer","description":"Keep only rows with at least this many views (`post.engagement.views`). A row whose view count is unknown is discarded, so every returned row meets the floor.","help":"Only keep rows with at least this many views. Rows with an unknown view count are dropped.","minimum":0},{"name":"max_age_days","required":false,"in":"query","type":"integer","description":"Keep only rows published within this many days (`post.published_at`), 1 to 3650. A row with no date is discarded.","help":"Keep only rows published within the last N days, 1-3650. Rows with no date are dropped.","minimum":1,"maximum":3650},{"name":"sort_rows","required":false,"in":"query","type":"string","description":"`views`: return the kept rows ordered by view count, highest first, across every page walked. Rows without a view count go last.","help":"Set to views to sort the returned rows by view count, highest first. Rows without a view count are listed last.","enum":["views"]},{"name":"max_pages","required":false,"in":"query","type":"integer","description":"1 to 5 (default 1). Walk up to this many pages in one call and return the rows from all of them (after any filter). Each page walked is billed as one call to this endpoint; the whole walk counts once against your rate limit.","help":"Pages to fetch in one call, 1-5 (default 1). Each page fetched is billed as one call.","minimum":1,"maximum":5},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/search/suggestions","method":"GET","platform":"youtube","group":"Search","label":"Search/Suggestions","description":"Returns the autocomplete suggestions YouTube's own search box shows for a partial query, as a plain list of strings.\n\nUse it for keyword research, or to expand a seed term before running search or search/advanced.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":3600,"order":23,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Partial search query to autocomplete.","help":"Partial search query to autocomplete.","example":"lofi"},{"name":"region","required":false,"in":"query","type":"string","description":"ISO 3166-1 alpha-2 country code to localize suggestions.","help":"Two-letter country code to localize suggestions."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/video/audio","method":"GET","platform":"youtube","group":"Video","label":"Video/Audio","description":"Returns the downloadable audio streams for a video, each with a direct media URL, mime type, bitrate, audio quality, sample rate, channels, and duration.\n\nUse it to grab a video's audio on its own; the URLs are time-limited, so fetch them straight away rather than storing them.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":24,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube video.","help":"Full URL of the YouTube video.","example":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/video/files","method":"GET","platform":"youtube","group":"Video","label":"Video/Files","description":"Returns the downloadable video streams for a video, each with a direct media URL, mime type, resolution, quality label, frame rate, bitrate, and duration.\n\nUse it when you need the video file itself; video/audio returns audio-only streams and video/thumbnails returns still images.","credits":50,"tier":"advanced","paginates":false,"cache_ttl_seconds":21600,"order":25,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube video.","help":"Full URL of the YouTube video.","example":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/video/subtitles","method":"GET","platform":"youtube","group":"Video","label":"Video/Subtitles","description":"Returns the caption track files for a video, each with a language code and name, file format, and a direct download URL, including auto-generated tracks.\n\nUse it when you want subtitle files to download; video/transcript gives you the words themselves, already split into timed segments.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":26,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube video.","help":"Full URL of the YouTube video.","example":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},{"name":"format","required":false,"in":"query","type":"string","description":"Subtitle file format filter (e.g. srt, vtt, ttml, json3, srv1).","help":"Subtitle file format, e.g. srt, vtt, ttml, or json3."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/video/thumbnails","method":"GET","platform":"youtube","group":"Video","label":"Video/Thumbnails","description":"Returns a video's thumbnail images at every available size, each with a direct image URL, width, height, aspect ratio, and image format.\n\nUse it when you need a video's artwork on its own, for example to pick the largest image for your own listing or preview.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":27,"params":[{"name":"url","required":true,"in":"query","type":"string","description":"Full URL of the YouTube video.","help":"Full URL of the YouTube video.","example":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/youtube/profile/full","method":"GET","platform":"youtube","group":"Profile","label":"Profile/Full","description":"Use it instead of calling channel and channel/videos yourself; if the videos cannot be fetched you still get the profile with those metrics empty.","credits":50,"tier":"standard","paginates":true,"cache_ttl_seconds":21600,"order":28,"params":[{"name":"handle","required":false,"in":"query","type":"string","description":"YouTube username or handle, with or without a leading @. One of the identity params is required.","help":"YouTube username or handle, with or without the leading @. Required if no other identity param is given.","example":"mrbeast","one_of_group":"handle|channelId|url"},{"name":"channelId","required":false,"in":"query","type":"string","description":"YouTube channel id, the 24-character string starting with UC. One of the identity params is required.","help":"YouTube channel ID, the 24-character string starting with UC. Required if no other identity param is given.","one_of_group":"handle|channelId|url"},{"name":"url","required":false,"in":"query","type":"string","description":"Full YouTube profile or page URL. One of the identity params is required.","help":"Full YouTube profile or channel URL. Required if no other identity param is given.","one_of_group":"handle|channelId|url"},{"name":"posts","required":false,"in":"query","type":"integer","description":"How many of the fetched recent posts to return and compute the metrics over (1-100, default 25).","help":"How many recent posts to factor into the stats, 1-100 (default 25). Large values may need a follow-up call using the returned cursor.","example":"25"},{"name":"cursor","required":false,"in":"query","type":"string","description":"Pass a prior response's posts_cursor to read the next page of posts.","help":"Cursor from a prior response's posts_cursor, to fetch the next page of posts."},{"name":"include","required":false,"in":"query","type":"string","description":"","help":""},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/zhihu/answer","method":"GET","platform":"zhihu","group":"Answer","label":"Answer","description":"Returns one Zhihu answer: its text, author, the question it answers and its publish and update times.\n\nUse it when you have an answer id; for every answer to a question use question/answers.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":1,"params":[{"name":"answer_id","required":true,"in":"query","type":"string","description":"Zhihu answer id (zhihu.com/answer/<id>).","example":"2054145988235880002"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/zhihu/question","method":"GET","platform":"zhihu","group":"Question","label":"Question","description":"Returns a Zhihu question: its title, views, comments, answer and follower counts, and when it was asked.\n\nUse it to size a question; to read what people answered use question/answers.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":2,"params":[{"name":"question_id","required":true,"in":"query","type":"string","description":"Zhihu question id (zhihu.com/question/<id>).","example":"37811449"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/zhihu/question/answers","method":"GET","platform":"zhihu","group":"Question","label":"Question/Answers","description":"Returns up to 20 answers to a question, each with its text, author, votes, comments, saves and times.\n\nUse it to read a question’s top or newest answers; for one answer by id use answer. It returns one page.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":21600,"order":3,"params":[{"name":"question_id","required":true,"in":"query","type":"string","description":"Zhihu question id (zhihu.com/question/<id>).","example":"37811449"},{"name":"limit","required":false,"in":"query","type":"integer","description":"Answers to return, 1 to 20. Default 5.","minimum":1,"maximum":20},{"name":"order","required":false,"in":"query","type":"string","description":"default (Zhihu’s ranking) or updated (recently updated first).","enum":["default","updated"]},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/zhihu/profile","method":"GET","platform":"zhihu","group":"Profile","label":"Profile","description":"Returns a public Zhihu account: name, headline, avatar, follower count, and how many answers and articles it wrote.\n\nUse it when you have the handle from a zhihu.com/people/<handle> URL.","credits":10,"tier":"standard","paginates":false,"cache_ttl_seconds":86400,"order":4,"params":[{"name":"handle","required":true,"in":"query","type":"string","description":"The handle in the profile URL, zhihu.com/people/<handle>.","example":"ming-he-43-93"},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true},{"path":"/v1/zhihu/search/articles","method":"GET","platform":"zhihu","group":"Search","label":"Search/Articles","description":"Returns Zhihu column articles matching a keyword, each with title, text, author, votes and comments.\n\nUse it to find long-form writing on a topic.","credits":10,"tier":"standard","paginates":true,"cache_ttl_seconds":3600,"order":5,"params":[{"name":"query","required":true,"in":"query","type":"string","description":"Search keyword.","help":"Search keyword.","example":"deepseek"},{"name":"sort","required":false,"in":"query","type":"string","description":"upvoted_count (most upvoted) or created_time (newest). Omit for Zhihu’s own ranking.","enum":["upvoted_count","created_time"]},{"name":"time_interval","required":false,"in":"query","type":"string","description":"Only articles published within this window.","enum":["a_day","a_week","a_month","three_months","half_a_year","a_year"]},{"name":"limit","required":false,"in":"query","type":"integer","description":"Articles per page, 1 to 20. Default 20.","minimum":1,"maximum":20},{"name":"cursor","required":false,"in":"query","type":"string","description":"The `pagination.next_cursor` from the previous page, sent back unchanged. Omit it for the first page."},{"name":"dry_run","required":false,"in":"query","type":"string","description":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","help":"Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.","enum":["1"]}],"available":true}]}