# Endpoint pricing (/docs/endpoint-pricing) What every SocialCrawl endpoint costs in credits, searchable by platform, path, or tier Every request is billed in **credits**. Most endpoints cost 1 credit per successful call. A minority cost more because the upstream is slower, returns more data, or runs extra compute, and a set of bundle endpoints price per request instead of per call. Costs here come from the same source the API charges against, so a number on this page is the number on your invoice. ## The tier ladder | Tier | Credits | Endpoints | Typical use | | ---- | ------- | --------- | ----------- | | Standard | 1 | 241 | Profiles, posts, comments, basic search | | Advanced | 5 | 166 | Trending feeds, ad libraries, audience analytics | | Premium | 10 | 25 | Video transcripts, LinkedIn people and job search | | Custom | varies | 214 | Bundle and fan-out endpoints | **646 active endpoints** across **68 platforms**. Endpoints that are temporarily unavailable are not listed: those return `503` and cost nothing. ## Custom-priced endpoints Custom-priced endpoints do not sit on the 1/5/10 ladder. They price per request, because one call fans out to a variable number of upstream calls: search pages, comment threads, brands, or extra platforms. Those endpoints show a range such as `2-200 (metered)`. You are always charged inside that range and never below its floor. Filter to **Custom** below to see all 214 of them with their ranges. ## Find an endpoint | Endpoint | Credits | Tier | What it returns | | -------- | ------- | ---- | --------------- | | `GET /v1/aliexpress/product` | 5 | advanced | Get an AliExpress product by id or URL | | `GET /v1/aliexpress/product/shipping` | 5 | advanced | Get AliExpress shipping for a product SKU | | `GET /v1/aliexpress/product/similar` | 5 | advanced | Get similar AliExpress products | | `GET /v1/aliexpress/reviews` | 5-9 (metered) | custom | Get AliExpress product reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/aliexpress/search` | 5 | advanced | Search AliExpress products | | `GET /v1/aliexpress/search/hot` | 5 | advanced | List hot AliExpress products | | `GET /v1/aliexpress/search/promo` | 5 | advanced | List AliExpress products in a featured promotion | | `GET /v1/aliexpress/categories` | 1 | standard | List AliExpress categories | | `GET /v1/aliexpress/promo` | 1 | standard | List AliExpress featured promotions | | `GET /v1/amazon/product` | 5 | advanced | Get an Amazon product by ASIN | | `GET /v1/amazon/reviews` | 5-9 (metered) | custom | Get Amazon product reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/amazon/best-sellers` | 1 | standard | Get Amazon Best Sellers in a category | | `GET /v1/amazon/deals` | 1 | standard | Get current Amazon deals | | `GET /v1/amazon/product-search` | 1 | standard | Search Amazon products by keyword | | `GET /v1/amazon/seller` | 1 | standard | Get an Amazon seller profile | | `GET /v1/amazon/sellers` | 1 | standard | Get Amazon sellers and offers for a product | | `GET /v1/amazon/shop` | 1 | standard | Get Amazon shop page | | `GET /v1/app_store/app-listings-search` | 10 | premium | Search the Apple App Store listings database (paginated) | | `GET /v1/app_store/app-info` | 5 | advanced | Get full Apple App Store app details | | `GET /v1/app_store/app-list` | 5 | advanced | Get an Apple App Store chart | | `GET /v1/app_store/app-reviews` | 5-9 (metered) | custom | Get Apple App Store reviews for an app 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/app_store/app-search` | 5 | advanced | Search Apple App Store apps by keyword | | `GET /v1/app_store/categories` | 1 | standard | List Apple App Store app categories | | `GET /v1/app_store/languages` | 1 | standard | List supported Apple App Store languages | | `GET /v1/app_store/locations` | 1 | standard | List supported Apple App Store storefront locations | | `GET /v1/app_store/search-suggestions` | 1 | standard | Get Apple App Store search suggestions | | `GET /v1/apple_music/album` | 1 | standard | Get an Apple Music album | | `GET /v1/apple_music/artist` | 1 | standard | Get an Apple Music artist | | `GET /v1/apple_music/charts` | 1 | standard | Get the Apple Music charts for a country | | `GET /v1/apple_music/search` | 1 | standard | Search Apple Music | | `GET /v1/apple_music/track` | 1 | standard | Get an Apple Music track | | `GET /v1/bluesky/post` | 1 | standard | Get a Bluesky post | | `GET /v1/bluesky/profile` | 1 | standard | Get a Bluesky profile | | `GET /v1/bluesky/search` | 1 | standard | Search Bluesky posts | | `GET /v1/bluesky/user/posts` | 1 | standard | List a Bluesky user's posts | | `GET /v1/content_analysis/category-trends` | 20 | custom | Category mention volume + sentiment over time | | `GET /v1/content_analysis/phrase-trends` | 20 | custom | Keyword mention volume + sentiment over time | | `GET /v1/content_analysis/rating-distribution` | 20 | custom | Rating histogram for a keyword | | `GET /v1/content_analysis/search` | 20 | custom | Search web citations of a keyword with per-mention sentiment | | `GET /v1/content_analysis/sentiment` | 20 | custom | Sentiment breakdown for a keyword | | `GET /v1/content_analysis/summary` | 20 | custom | Aggregate mention summary for a keyword | | `GET /v1/content_analysis/categories` | 1 | standard | List the Content Analysis category taxonomy | | `GET /v1/content_analysis/filters` | 1 | standard | List the filterable fields for Content Analysis | | `GET /v1/content_analysis/languages` | 1 | standard | List supported Content Analysis languages | | `GET /v1/content_analysis/locations` | 1 | standard | List supported Content Analysis locations | | `GET /v1/douyin/trending` | 25 | custom | Get the Douyin hot-search board | | `GET /v1/douyin/post` | 10 | premium | Get a Douyin video | | `GET /v1/douyin/profile` | 6 | custom | Get a Douyin creator profile | | `GET /v1/douyin/comment/replies` | 5-250 (metered) | custom | Get replies to a Douyin comment 5 credits per reply RETURNED. The call holds `limit x 5` up front - the default limit of 10 holds 50 and the 50 maximum holds 250 - and settles down to the replies actually delivered. Only a comment with a non-zero `engagement.replies` has a thread, so check that on the parent row before spending a call here | | `GET /v1/douyin/profile/posts` | 5-125 (metered) | custom | List a Douyin creator's videos 5 credits per row RETURNED. The call holds `limit x 5` up front - the default limit of 10 holds 50 and the 25 maximum holds 125 - and settles down to the videos actually delivered, so a creator with 4 recent videos costs 20 credits however high `limit` was set. `recent_days` and `exclude_pinned` narrow the result set BEFORE billing settles, so they lower the charge as well as the noise | | `GET /v1/douyin/search` | 5-125 (metered) | custom | Search Douyin videos 5 credits per row RETURNED. The call holds `limit x 5` up front - the default limit of 10 holds 50 and the 25 maximum holds 125 - and settles down to the rows actually delivered, so a narrow query that returns 3 videos costs 15 credits however high `limit` was set | | `GET /v1/douyin/search/users` | 5-125 (metered) | custom | Search Douyin creators 5 credits per creator RETURNED. The call holds `limit x 5` up front - the default limit of 10 holds 50 and the 25 maximum holds 125 - and settles down to the creators actually delivered | | `GET /v1/douyin/post/comments` | 2-100 (metered) | custom | Get Douyin video comments 1 credit per comment RETURNED, with a floor of 2. The call holds `limit x 1` up front - the default limit of 20 holds 20 and the 100 maximum holds 100 - and settles down to the comments actually delivered, so a video with four comments does not cost a twenty-comment request | | `GET /v1/ebay/product` | 5 | advanced | Get an eBay listing by item id | | `GET /v1/ebay/search` | 5 | advanced | Search eBay listings | | `GET /v1/economy/imports` | 20 | custom | Get a US importer's suppliers and shipments 20 credits per call, whatever the limit. A company with no US import records returns 404 and costs 0 credits, and a cached repeat within 24 hours costs 0 credits. | | `GET /v1/economy/consumer-spend` | 1 | standard | Get household spending by country and category | | `GET /v1/economy/government-contracts` | 1 | standard | Search US federal contract awards | | `GET /v1/economy/government-spend` | 1 | standard | Get US federal spending by state, county or country | | `GET /v1/economy/tourism-spend` | 1 | standard | Get travel spending by country and category | | `GET /v1/etsy/product` | 5 | advanced | Get an Etsy listing by id or URL | | `GET /v1/etsy/product/similar` | 5 | advanced | Get listings similar to an Etsy product | | `GET /v1/etsy/search/suggestions` | 5 | advanced | Get Etsy search suggestions | | `GET /v1/etsy/shop/products` | 5 | advanced | List products in an Etsy shop | | `GET /v1/facebook/adlibrary/ad/transcript` | 10 | premium | Get a Facebook Ad Library video ad transcript | | `GET /v1/facebook/post/transcript` | 10 | premium | Get Facebook video transcript | | `GET /v1/facebook/adlibrary/ad` | 5 | advanced | Get Facebook Ad Library ad details | | `GET /v1/facebook/adlibrary/company/ads` | 5-35 (metered) | custom | List Facebook Ad Library company ads 5 credits for the page. include=audience holds 1 credit per ad (30 a page) and keeps only the rows filled from a fresh lookup, so a page is at most 35 credits; rows served from cache are free, ads that never ran in the EU and other unfilled rows are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/facebook/adlibrary/search/ads` | 5 | advanced | Search Facebook Ad Library | | `GET /v1/facebook/adlibrary/search/companies` | 5 | advanced | Search Facebook Ad Library companies | | `GET /v1/facebook/profile/full` | 5 | custom | Facebook profile, recent posts, and computed analytics in one call. | | `GET /v1/facebook/profile/reels/full` | 5-25 (metered) | custom | Facebook profile reels with exact views, likes, comments, and shares merged in, in one call. 5 credits per page of 10 reels - 1 for the list and 4 for the per-reel enrichment - which is roughly half what running the list-then-post-stats chain yourself costs. With no `limit` that is one page and a flat 5 credits. With `limit` set the endpoint walks `ceil(limit / 10)` pages, up to 5 for the 50 maximum (25 credits), holds that many up front and refunds every page it did not need. A page whose enrichment yields zero coverage refunds the 4-credit premium automatically, leaving the 1-credit list price | | `GET /v1/facebook/event/details` | 1 | standard | Get details for a Facebook event | | `GET /v1/facebook/events` | 1-13 (metered) | custom | List Facebook events for a city 1 credit for the page. include=details holds 1 credit per event (at most 12 a page) and keeps only the rows filled from a fresh lookup, so a page is at most 13 credits; rows served from cache are free, unfilled rows are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/facebook/events/search` | 1 | standard | Search Facebook events by keyword | | `GET /v1/facebook/group` | 1 | standard | Get a Facebook group | | `GET /v1/facebook/group/posts` | 1 | standard | List Facebook group posts | | `GET /v1/facebook/marketplace/item` | 1 | standard | Get a Facebook Marketplace item | | `GET /v1/facebook/marketplace/location/search` | 1 | standard | Search Facebook Marketplace locations | | `GET /v1/facebook/marketplace/search` | 1 | standard | Search Facebook Marketplace listings | | `GET /v1/facebook/post` | 1 | standard | Get Facebook post details | | `GET /v1/facebook/post/comment/replies` | 1-5 (metered) | custom | List replies to a Facebook post comment 1 credit per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/facebook/post/comments` | 1-5 (metered) | custom | List Facebook post comments 1 credit per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/facebook/profile` | 1 | standard | Get Facebook page profile | | `GET /v1/facebook/profile/events` | 1-9 (metered) | custom | List a Facebook page's events 1 credit for the page. include=details holds 1 credit per event (8 a page) and keeps only the rows filled from a fresh lookup, so a page is at most 9 credits; rows served from cache are free, unfilled rows are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/facebook/profile/photos` | 1-9 (metered) | custom | List Facebook profile photos 1 credit for the page. include=details holds 1 credit per photo (8 a page) and keeps only the rows filled from a fresh lookup, so a page is at most 9 credits; rows served from cache are free, unfilled rows are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/facebook/profile/posts` | 1-4 (metered) | custom | List Facebook page posts 1 credit for the page. include=engagement holds 1 credit per row (3 rows a page) and keeps only the rows filled from a fresh lookup, so a page is at most 4 credits; rows served from cache are free, unfilled rows are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/facebook/profile/reels` | 1 | standard | List Facebook profile reels | | `GET /v1/facebook/search/groups` | 1-15 (metered) | custom | Search Facebook groups by keyword 1 credit for the page. include=details holds 1 credit per group (at most 10 a page) and keeps only the groups filled from a fresh lookup, so a page is at most 11 credits; groups served from cache are free, unfilled groups are refunded, and a repeat of the same call within the cache window costs 0. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/facebook/search/pages` | 1 | standard | Search Facebook pages by keyword | | `GET /v1/facebook/search/people` | 1 | standard | Search Facebook people by keyword | | `GET /v1/facebook/search/posts` | 1-9 (metered) | custom | Search Facebook posts by keyword 1 credit per page. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/facebook/search/videos` | 1 | standard | Search Facebook videos by keyword | | `GET /v1/finance/options` | 5 | advanced | Get an options chain for an instrument | | `GET /v1/finance/quote` | 5 | advanced | Get a financial instrument quote | | `GET /v1/finance/statements` | 5 | advanced | Get financial statements for a company | | `GET /v1/finance/fundamentals` | 1 | standard | Get quarterly or annual fundamentals for a public company | | `GET /v1/finance/history` | 1 | standard | Get daily price history for an instrument | | `GET /v1/finance/markets` | 1 | standard | Get a markets overview (indices + movers) | | `GET /v1/finance/news` | 1 | standard | Get recent news for a financial instrument | | `GET /v1/finance/ticker-search` | 1 | standard | Search financial instruments by name | | `GET /v1/g2/category` | 5 | advanced | List products in a G2 category | | `GET /v1/g2/product` | 5 | advanced | Get a G2 product by slug or URL | | `GET /v1/g2/product-index` | 5 | advanced | List G2 product URLs | | `GET /v1/g2/reviews` | 5-9 (metered) | custom | Get G2 reviews for a product 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/g2/seller` | 5 | advanced | Get a G2 seller (vendor) profile | | `GET /v1/g2/seller/products` | 5 | advanced | List products for a G2 seller | | `GET /v1/g2/categories` | 1 | standard | List every G2 category URL | | `GET /v1/github/user/profile-velocity` | 10 | premium | User contribution velocity dossier | | `GET /v1/github/repo/dossier` | 5 | advanced | Full project dossier for a repository | | `GET /v1/github/repo/top-issues` | 5 | advanced | Top feature request and top complaint for a repository | | `GET /v1/github/issue` | 1 | standard | Get a single issue or pull request | | `GET /v1/github/issue/comments` | 1 | standard | Get comments on an issue or pull request | | `GET /v1/github/profile` | 1 | standard | Get a GitHub user profile | | `GET /v1/github/profile/repos` | 1 | standard | List a GitHub user's repositories | | `GET /v1/github/repo` | 1 | standard | Get a GitHub repository | | `GET /v1/github/repo/issues` | 1 | standard | List a repository's issues (and PRs) | | `GET /v1/github/repo/readme` | 1 | standard | Get a repository's README | | `GET /v1/github/repo/releases` | 1 | standard | List a repository's releases | | `GET /v1/github/search` | 1 | standard | Search GitHub issues and pull requests | | `GET /v1/google/keyword-volume` | 16 | custom | Get Google keyword search volume by country | | `GET /v1/google/ad` | 5 | advanced | Get Google ad details | | `GET /v1/google/adlibrary/advertisers/search` | 5 | advanced | Search Google Ad Library advertisers | | `GET /v1/google/business/extended-reviews` | 5-9 (metered) | custom | Get Google extended (multi-source) reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/google/business/questions` | 5 | advanced | Get Google Business Profile questions & answers | | `GET /v1/google/company/ads` | 5 | advanced | List Google ads by company | | `GET /v1/google/hotels/info` | 5 | advanced | Get Google hotel detail | | `GET /v1/google/business/info` | 1 | standard | Get a Google Business Profile | | `GET /v1/google/business/updates` | 1 | standard | Get Google Business Profile posts (updates) | | `GET /v1/google/hotels/search` | 1 | standard | Search Google hotels | | `GET /v1/google/search` | 1 | standard | Google web search | | `GET /v1/google_news/search` | 1 | standard | Search Google News | | `GET /v1/google_play/app-listings-search` | 10 | premium | Search the Google Play listings database (paginated) | | `GET /v1/google_play/app-info` | 5 | advanced | Get full Google Play app details | | `GET /v1/google_play/app-list` | 5 | advanced | Get a Google Play store chart | | `GET /v1/google_play/app-reviews` | 5-9 (metered) | custom | Get Google Play reviews for an app 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/google_play/app-search` | 5 | advanced | Search Google Play apps by keyword | | `GET /v1/google_play/categories` | 1 | standard | List Google Play app categories | | `GET /v1/google_play/languages` | 1 | standard | List supported Google Play languages | | `GET /v1/google_play/locations` | 1 | standard | List supported Google Play storefront locations | | `GET /v1/google_play/search-suggestions` | 1 | standard | Get Google Play search suggestions | | `GET /v1/google_shopping/product-search` | 5 | advanced | Search Google Shopping products | | `GET /v1/google_shopping/price-history` | 1 | standard | Get Google Shopping price history for a product | | `GET /v1/google_shopping/product` | 1 | standard | Get Google Shopping product detail | | `GET /v1/google_shopping/reviews` | 1-5 (metered) | custom | Get Google Shopping product reviews 1 credit per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/google_shopping/sellers` | 1 | standard | Get Google Shopping sellers for a product | | `GET /v1/google_trends/explore` | 5 | advanced | Get Google Trends interest over time | | `GET /v1/google_trends/rising` | 5 | advanced | Get related + rising Google Trends queries | | `GET /v1/google_trends/trending` | 5 | advanced | Get Google Trends Trending Now for a location | | `GET /v1/gumtree/locations` | 5 | advanced | Autocomplete Gumtree locations | | `GET /v1/gumtree/locations/nearest` | 5 | advanced | Find the nearest Gumtree location | | `GET /v1/gumtree/product` | 5 | advanced | Get a Gumtree listing by ad id or URL | | `GET /v1/gumtree/product/similar` | 5 | advanced | Get listings similar to a Gumtree ad | | `GET /v1/gumtree/search` | 5 | advanced | Search Gumtree UK listings | | `GET /v1/gumtree/search/suggestions` | 5 | advanced | Get Gumtree search suggestions | | `GET /v1/gumtree/seller` | 5 | advanced | Get a Gumtree seller profile | | `GET /v1/gumtree/seller/listings` | 5 | advanced | List a Gumtree seller's active ads | | `GET /v1/gumtree/categories` | 1 | standard | Get the Gumtree category tree | | `GET /v1/gumtree/filters` | 1 | standard | Get Gumtree filters for a category | | `GET /v1/gumtree/trending` | 1 | standard | Get trending Gumtree searches | | `GET /v1/hm/product/suppliers` | 5 | advanced | Get H&M suppliers and factories for a product | | `GET /v1/hm/search` | 5 | advanced | Search H&M products by keyword | | `GET /v1/hm/search/suggestions` | 5 | advanced | Get H&M search suggestions | | `GET /v1/hm/stores` | 5 | advanced | List H&M stores in a country | | `GET /v1/hm/categories` | 1 | standard | Get the H&M category tree | | `GET /v1/hm/countries` | 1 | standard | List H&M countries and languages | | `GET /v1/hackernews/profile` | 1 | standard | Get a Hacker News user profile | | `GET /v1/hackernews/search` | 1-9 (metered) | custom | Search Hacker News 1 credit per page. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/hackernews/story` | 1 | standard | Get a Hacker News story | | `GET /v1/hackernews/story/comments` | 1 | standard | Get comments on a Hacker News story | | `GET /v1/home_depot/product` | 5 | advanced | Get a Home Depot product by item id or URL | | `GET /v1/home_depot/reviews` | 5-9 (metered) | custom | Get Home Depot product reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/home_depot/search` | 5 | advanced | Search Home Depot products by keyword | | `GET /v1/home_depot/stores` | 1 | standard | Find Home Depot stores near a ZIP code | | `GET /v1/instagram/media/transcript` | 10 | premium | Get Instagram media transcript | | `GET /v1/instagram/comment` | 5-15 (metered) | custom | Look up one Instagram comment by URL or id 5 credits for a standard lookup, 15 with `deep_scan=true`, which keeps paging the thread when the comment is not in the first pages. Reach for deep_scan only after a standard lookup comes back not-found | | `GET /v1/instagram/engagement` | 5 | advanced | Get Instagram engagement statistics | | `GET /v1/instagram/followers` | 5-10 (metered) | custom | List Instagram followers 5 credits a page. Up to three reads are merged into one page, typically about 50 accounts, and a page can carry fewer. With `coverage=full`, up to 10 credits a page, settled down to 5 when the plain walk covered the whole page. A page that fails is refunded. | | `GET /v1/instagram/following` | 5-10 (metered) | custom | List Instagram following 5 credits a page. Up to three reads are merged into one page, typically about 50 accounts, and a page can carry fewer. With `coverage=full`, up to 10 credits a page, settled down to 5 when the plain walk covered the whole page. A page that fails is refunded. | | `GET /v1/instagram/location/posts` | 5 | advanced | List recent posts at an Instagram location | | `GET /v1/instagram/media/screen-text` | 5 | advanced | Get Instagram post on-screen text 5 credits a call, the same for a photo, a reel or a carousel. Refunded when the post cannot be found or when no image on it could be read. | | `GET /v1/instagram/music/trending` | 5 | advanced | List trending Instagram music | | `GET /v1/instagram/post/comments` | 5-19 (metered) | custom | List Instagram post comments 5 credits per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/instagram/post/likers` | 5 | advanced | List Instagram post likers | | `GET /v1/instagram/post/stats` | 5-9 (metered) | custom | Get Instagram post stats including the share count 5 credits for the post. include=saves holds 4 more and keeps them only when it fills a save count the plain call lacked, refunding them otherwise, so a hydrated call is at most 9 credits; on a reel whose save count the plain call already carries, and on any photo or carousel, it settles at 5. Post lookups are cached for 10 minutes. | | `GET /v1/instagram/profile/full` | 5 | custom | Instagram profile, recent posts, and computed analytics in one call. | | `GET /v1/instagram/profile/posts/full` | 5-25 (metered) | custom | Instagram posts with views, likes, comments, and per-post share counts where available, in one call. 5 credits per upstream page of about 12 posts. With no `limit` that is one page and a flat 5 credits. With `limit` set the composite walks `ceil(limit / 12)` pages - 3 for limit=30, 5 for the 50 maximum, so 25 credits at the top - holds that many up front and refunds every page it did not need. One partial refund sits inside the per-page price: a shares leg that fails outright refunds 4 of the 5 credits for that page, leaving the 1-credit list price. A shares leg that succeeds with low coverage is still the full 5, because the second source was queried either way. A `user_id` call is priced exactly like a `handle` call | | `GET /v1/instagram/profile/reels/full` | 5-25 (metered) | custom | Instagram reels with views, likes, comments, and per-reel share counts where available, in one call. 5 credits per upstream page of about 12 reels. With no `limit` that is one page and a flat 5 credits. With `limit` set the composite walks `ceil(limit / 12)` pages - 3 for limit=30, 5 for the 50 maximum, so 25 credits at the top - holds that many up front and refunds every page it did not need. One partial refund sits inside the per-page price: a shares leg that fails outright refunds 4 of the 5 credits for that page, leaving the 1-credit list price. A shares leg that succeeds with low coverage is still the full 5, because the second source was queried either way. A `user_id` call is priced exactly like a `handle` call | | `GET /v1/instagram/reels/trending` | 5 | advanced | Get trending Instagram reels | | `GET /v1/instagram/search/hashtag` | 5 | advanced | Search Instagram posts by hashtag | | `GET /v1/instagram/search/location` | 5 | advanced | Search Instagram locations | | `GET /v1/instagram/search/music` | 5 | advanced | Search Instagram music | | `GET /v1/instagram/similar` | 5-85 (metered) | custom | List similar Instagram accounts 5 credits for the list. include=profile holds 1 credit per row and keeps only the rows filled from a fresh lookup; the hydrated list is its top 20 accounts by default (at most 25 credits) and `limit=80` buys the full roster (at most 85). Rows served from cache are free, unfilled rows are refunded, and a repeat within the cache window costs 0. The list and the per-account lookups are cached for 15 minutes. | | `GET /v1/instagram/stories` | 5 | advanced | List an Instagram user's active stories | | `GET /v1/instagram/story/download` | 5 | advanced | Download a single Instagram story | | `GET /v1/instagram/tagged` | 5 | advanced | List posts an Instagram user is tagged in | | `GET /v1/instagram/username-suggestions` | 5 | advanced | Get Instagram username suggestions | | `GET /v1/instagram/audio/reels` | 1 | standard | List Instagram reels using an audio track | | `GET /v1/instagram/basic-profile` | 1 | standard | Get Instagram basic profile | | `GET /v1/instagram/highlight/detail` | 1 | standard | Get Instagram highlight detail | | `GET /v1/instagram/highlights` | 1 | standard | List Instagram story highlights | | `GET /v1/instagram/post` | 1 | standard | Get Instagram post details | | `GET /v1/instagram/post/comment/replies` | 1-5 (metered) | custom | List replies under an Instagram comment 1 credit per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/instagram/profile` | 1 | standard | Get Instagram user profile | | `GET /v1/instagram/profile/about` | 1 | standard | Get Instagram account transparency details | | `GET /v1/instagram/profile/posts` | 1-17 (metered) | custom | List Instagram user posts 1 credit per page. include=audio holds 1 more per row, up to 12, and keeps it only for each video whose sound came back, refunding the rest, so a page costs at most 13 credits and a page with no videos costs 1. exclude_pinned and recent_days do not change the price of a page. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/instagram/profile/reels` | 1-18 (metered) | custom | List Instagram user reels 1 credit per page. include=stats adds 1 credit a page. include=audio holds 1 more per row, up to 12, and keeps it only for each video whose sound came back, refunding the rest; with include=stats every reel already carries its sound, so the audio join costs nothing more. A page costs at most 14 credits. exclude_pinned and recent_days do not change the price of a page. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/instagram/search` | 1 | standard | Search Instagram accounts, hashtags, and places | | `GET /v1/instagram/search/popular` | 1-13 (metered) | custom | Search popular Instagram posts 1 credit for the page. include=engagement holds 1 credit per row, at most 12 (or `limit`), and keeps only the rows filled from a fresh lookup, so a full page is at most 13 credits; rows served from cache are free, unfilled rows are refunded, and a repeat of the same call within the cache window costs 0. Search pages are cached for 2 minutes and the per-post lookups for 10 minutes. | | `GET /v1/instagram/search/profiles` | 1-25 (metered) | custom | Search Instagram profiles by keyword 1 credit for the search page. With `include=about`, 1 plus 2 credits per row filled, held at the top 8 (17) unless you send `limit`, refunded down to the rows that actually received an About-panel leaf. | | `GET /v1/instagram/search/reels` | 1-69 (metered) | custom | Search Instagram reels 1 credit per page on a plain call or with `region`; `include=creator` or `country` makes it up to 61 (1 plus 2 per creator looked up). `region` costs nothing extra. `include=creator` adds 2 credits per creator looked up: it holds 60 extra credits for a full page of 30 and refunds every creator it did not look up or could not find. Two reels by one creator are one lookup, a creator looked up in the last 15 minutes is free, and on a `max_pages` walk each creator is looked up and billed once. `country` runs the same creator lookup, because it needs each creator's declared country, at the same price, charged for every creator looked up, kept or not; `data.hydration.implied_by` says so on the response. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/instagram/user/embed` | 1 | standard | Get Instagram user embed HTML | | `GET /v1/jobs/bing/search` | 10 | premium | Search Bing job listings | | `GET /v1/jobs/indeed/search` | 10 | premium | Search Indeed job listings | | `GET /v1/jobs/linkedin/search` | 10 | premium | Search LinkedIn job listings | | `GET /v1/jobs/xing/search` | 10 | premium | Search Xing job listings | | `GET /v1/jobs/bing` | 5 | advanced | Get a Bing job listing by id | | `GET /v1/jobs/indeed` | 5 | advanced | Get an Indeed job listing by id | | `GET /v1/jobs/linkedin` | 5 | advanced | Get a LinkedIn job listing by id | | `GET /v1/jobs/xing` | 5 | advanced | Get a Xing job listing by id | | `GET /v1/jobs/linkedin/organizations` | 1 | standard | Resolve LinkedIn organization ids | | `GET /v1/jobs/salary` | 1 | standard | Get salary ranges for a job title and country | | `GET /v1/jobs/salary/titles` | 1 | standard | Suggest job titles for a salary lookup | | `GET /v1/kick/clip` | 1 | standard | Get Kick clip details | | `GET /v1/klarna/category` | 5 | advanced | Browse Klarna products in a category | | `GET /v1/klarna/product` | 5 | advanced | Get a Klarna product by id or URL | | `GET /v1/klarna/product/compare` | 5 | advanced | Compare two Klarna products | | `GET /v1/klarna/product/offers` | 5 | advanced | List merchant offers for a Klarna product | | `GET /v1/klarna/product/price-history` | 5 | advanced | Get Klarna price history for a product | | `GET /v1/klarna/reviews` | 5-9 (metered) | custom | Get Klarna user reviews for a product 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/klarna/reviews/overview` | 5 | advanced | Get Klarna review totals and score distributions | | `GET /v1/klarna/reviews/pro` | 5-9 (metered) | custom | Get Klarna professional reviews for a product 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/klarna/search` | 5 | advanced | Search Klarna products by keyword | | `GET /v1/klarna/store/products` | 5 | advanced | List products from a Klarna store | | `GET /v1/klarna/categories` | 1 | standard | List Klarna root categories | | `GET /v1/klarna/categories/children` | 1 | standard | Get Klarna sub-categories | | `GET /v1/klarna/category/filters` | 1 | standard | Get Klarna filters for a category | | `GET /v1/klarna/category/guide` | 1 | standard | Get Klarna buying-guide content for a category | | `GET /v1/klarna/category/keywords` | 1 | standard | Get popular Klarna search keywords for a category | | `GET /v1/klarna/search/suggestions` | 1 | standard | Get Klarna search suggestions | | `GET /v1/klarna/store/filters` | 1 | standard | Get Klarna filters for a store page | | `GET /v1/klarna/stores` | 1 | standard | List Klarna shopping stores | | `GET /v1/kohls/questions` | 5 | advanced | Get Kohl's product questions and answers | | `GET /v1/kohls/reviews` | 5-9 (metered) | custom | Get Kohl's product reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/kohls/search` | 5 | advanced | Search Kohl's products by keyword | | `GET /v1/kohls/stores` | 5 | advanced | Find Kohl's stores near a coordinate | | `GET /v1/kohls/categories` | 1 | standard | Get the Kohl's category tree | | `GET /v1/komi/page` | 1 | standard | Get Komi page | | `GET /v1/kwai/post` | 1 | standard | Get a Kwai post | | `GET /v1/kwai/profile` | 1 | standard | Get a Kwai user profile | | `GET /v1/kwai/user/posts` | 1 | standard | List a Kwai user's posts | | `GET /v1/linkbio/page` | 1 | standard | Get Linkbio page | | `GET /v1/linkedin/company/jobs` | 10 | premium | List a company's job postings | | `GET /v1/linkedin/company/people` | 10-50 (metered) | custom | List people at a LinkedIn company 10 credits for the list. include=profile holds 4 credits per row and keeps only the rows filled from a fresh lookup: at most 50 for the 10-row page, or 10 + 4 x limit when you pass `limit`. Rows served from cache are free, unfilled rows are refunded, and a repeat of a fully joined page within the list's cache window costs 0. The list is cached for 15 minutes and each profile lookup for 15 minutes. | | `GET /v1/linkedin/post/reactions` | 10-50 (metered) | custom | List reactors on a LinkedIn post 10 credits for the list. include=profile holds 4 credits per row and keeps only the rows filled from a fresh lookup: at most 50 for the 10-row page, or 10 + 4 x limit when you pass `limit`. Rows served from cache are free, unfilled rows are refunded, and a repeat of a fully joined page within the list's cache window costs 0. The list is cached for 5 minutes and each profile lookup for 15 minutes. | | `GET /v1/linkedin/post/transcript` | 10 | premium | Get a LinkedIn post video transcript | | `GET /v1/linkedin/profile/complete` | 10 | premium | Get a member's profile, experience, education, skills and recommendations | | `GET /v1/linkedin/profile/with-posts` | 10 | premium | Get a member profile with follower and connection counts and recent posts | | `GET /v1/linkedin/search/companies` | 10 | premium | Search LinkedIn company pages | | `GET /v1/linkedin/search/hashtag` | 10 | premium | Search LinkedIn posts by hashtag | | `GET /v1/linkedin/search/jobs` | 10 | premium | Search LinkedIn jobs | | `GET /v1/linkedin/search/people` | 10-50 (metered) | custom | Search LinkedIn people 10 credits for the list. include=profile holds 4 credits per row and keeps only the rows filled from a fresh lookup: at most 50 for the 10-row page, or 10 + 4 x limit when you pass `limit`. Rows served from cache are free, unfilled rows are refunded, and a repeat of a fully joined page within the list's cache window costs 0. The list is cached for 2 minutes and each profile lookup for 15 minutes. | | `GET /v1/linkedin/search/people/by-url` | 10 | premium | Search LinkedIn people from a search-results URL | | `GET /v1/linkedin/ad` | 5 | advanced | Get LinkedIn ad details | | `GET /v1/linkedin/ads/search` | 5 | advanced | Search LinkedIn ads | | `GET /v1/linkedin/article` | 5 | advanced | Get a LinkedIn Pulse article | | `GET /v1/linkedin/article/comments` | 5 | advanced | List comments on a LinkedIn Pulse article | | `GET /v1/linkedin/article/reactions` | 5 | advanced | List reactors on a LinkedIn Pulse article | | `GET /v1/linkedin/company` | 5 | advanced | Get LinkedIn company page with its full About tab | | `GET /v1/linkedin/company/affiliated-pages` | 5 | advanced | List a company's affiliated/showcase pages | | `GET /v1/linkedin/company/also-viewed` | 5 | advanced | List company pages people also viewed | | `GET /v1/linkedin/company/by-domain` | 5 | advanced | Look up a LinkedIn company page from its website domain | | `GET /v1/linkedin/company/employees-count` | 5 | advanced | Get a company's employee count, optionally by location | | `GET /v1/linkedin/company/insights` | 5 | advanced | Get aggregate insights about a company's members | | `GET /v1/linkedin/company/job-count` | 5 | advanced | Get a company's open job count | | `GET /v1/linkedin/company/posts` | 5 | advanced | List LinkedIn company posts | | `GET /v1/linkedin/group` | 5 | advanced | Get LinkedIn group details | | `GET /v1/linkedin/group/posts` | 5 | advanced | List posts in a LinkedIn group | | `GET /v1/linkedin/job` | 5 | advanced | Get LinkedIn job details | | `GET /v1/linkedin/job/hiring-team` | 5 | advanced | List the hiring team on a LinkedIn job | | `GET /v1/linkedin/post` | 5 | advanced | Get LinkedIn post details | | `GET /v1/linkedin/post/comments` | 5 | advanced | Get LinkedIn post comments | | `GET /v1/linkedin/post/comments/replies` | 5 | advanced | List replies to a LinkedIn comment | | `GET /v1/linkedin/post/reposts` | 5 | advanced | List reposts of a LinkedIn post | | `GET /v1/linkedin/post/with-comments` | 5 | advanced | Get a LinkedIn post together with its comments | | `GET /v1/linkedin/profile` | 5 | advanced | Get LinkedIn user profile | | `GET /v1/linkedin/profile/about` | 5 | advanced | Get a member's account freshness signals (NOT the profile About section) | | `GET /v1/linkedin/profile/activity` | 5 | advanced | Get when a LinkedIn member was last active | | `GET /v1/linkedin/profile/all` | 5-50 (metered) | custom | Get a member's entire profile, counts included, in one call | | `GET /v1/linkedin/profile/articles` | 5 | advanced | List Pulse articles a LinkedIn member published | | `GET /v1/linkedin/profile/certifications` | 5 | advanced | List a member's licenses and certifications | | `GET /v1/linkedin/profile/comments` | 5 | advanced | List a member's comments | | `GET /v1/linkedin/profile/contact` | 5 | advanced | Get a member's public contact info | | `GET /v1/linkedin/profile/educations` | 5 | advanced | List a member's education history | | `GET /v1/linkedin/profile/experiences` | 5 | advanced | List a member's work experiences | | `GET /v1/linkedin/profile/full` | 5 | custom | LinkedIn company profile, recent posts, and computed analytics in one call. Company pages only; a member's profile is `/v1/linkedin/profile/all`. | | `GET /v1/linkedin/profile/honors` | 5 | advanced | List a member's honors and awards | | `GET /v1/linkedin/profile/images` | 5 | advanced | List a member's image posts | | `GET /v1/linkedin/profile/interests/companies` | 5 | advanced | List companies a member follows | | `GET /v1/linkedin/profile/interests/groups` | 5 | advanced | List groups a member follows | | `GET /v1/linkedin/profile/interests/newsletters` | 5 | advanced | List newsletters a LinkedIn member follows | | `GET /v1/linkedin/profile/interests/schools` | 5 | advanced | List schools a LinkedIn member follows | | `GET /v1/linkedin/profile/interests/top-voices` | 5 | advanced | List Top Voices a LinkedIn member follows | | `GET /v1/linkedin/profile/position-skills` | 5 | advanced | List a member's positions with the skills on each role | | `GET /v1/linkedin/profile/posted-jobs` | 5 | advanced | List jobs a LinkedIn member has posted | | `GET /v1/linkedin/profile/posts` | 5-200 (metered) | custom | List a LinkedIn member's posts 5 credits for a call with no `limit`, or `limit` at 50 or below. Above 50 the call is metered at 2 credits per post RETURNED: it holds `limit x 2` up front (the 100 maximum holds 200) and refunds down to the posts that actually came back, never below 5, so a member with 60 posts settles at 120 credits however high `limit` was set | | `GET /v1/linkedin/profile/posts/archive` | 5-500 (metered) | custom | Walk a LinkedIn member's COMPLETE post history, 100 posts a page, with exact publish times and share counts the other lanes cannot return. Metered: 5 credits per post returned, so try the cheaper /v1/linkedin/profile/posts first 5 credits per post RETURNED. The call holds `limit x 5` up front - the default limit of 20 holds 100 and the 100 maximum holds 500 - and refunds down to the posts that actually came back, so a member with 12 posts settles at 60 credits however high `limit` was set. This is the most expensive read on the platform per row: check whether /v1/linkedin/profile/posts (5 credits up to 50 posts, 2 a post above that) already covers the window you need before walking the archive | | `GET /v1/linkedin/profile/publications` | 5 | advanced | List a member's publications | | `GET /v1/linkedin/profile/reactions` | 5 | advanced | List posts a LinkedIn member reacted to | | `GET /v1/linkedin/profile/recommendations` | 5 | advanced | List recommendations for a member | | `GET /v1/linkedin/profile/similar` | 5 | advanced | List LinkedIn members similar to a given profile | | `GET /v1/linkedin/profile/skills` | 5 | advanced | List a member's skills | | `GET /v1/linkedin/profile/stats` | 5 | advanced | Get a member's follower + connection counts | | `GET /v1/linkedin/profile/top-position` | 5 | advanced | Get the company page of a member's top position | | `GET /v1/linkedin/profile/videos` | 5 | advanced | List a member's video posts | | `GET /v1/linkedin/profile/volunteers` | 5 | advanced | List a member's volunteer experiences | | `GET /v1/linkedin/search/industry` | 1 | standard | Resolve an industry name to a LinkedIn industry id | | `GET /v1/linkedin/search/location` | 1 | standard | Resolve a location to a LinkedIn geocode id | | `GET /v1/linkedin/search/posts` | 1-56 (metered) | custom | Search public LinkedIn posts by keyword 5 credits per page. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 8 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 8 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/linkedin/search/schools` | 1 | standard | Search LinkedIn schools | | `GET /v1/linkme/page` | 1 | standard | Get Linkme profile | | `GET /v1/linktree/page` | 1 | standard | Get Linktree page | | `GET /v1/naver/brief` | 10 | custom | One query across the Korean internet (5 Naver corpora) + optional digest. | | `GET /v1/naver/search-trend` | 5 | advanced | Get Naver search-volume trend for Korean keywords (검색어트렌드) | | `GET /v1/naver/shopping-insight/category` | 5 | advanced | Get Naver Shopping click trend for a category (쇼핑인사이트) | | `GET /v1/naver/shopping-insight/keyword` | 5 | advanced | Get Naver Shopping click trend for keywords inside a category (쇼핑인사이트) | | `GET /v1/naver/adult` | 1 | standard | Check whether a Korean search term is adult-only (성인 검색어 판별) | | `GET /v1/naver/blog/search` | 1-9 (metered) | custom | Search Naver Blog 1 credit per page. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/naver/cafearticle/search` | 1-9 (metered) | custom | Search Naver Cafe articles 1 credit per page. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/naver/encyc/search` | 1 | standard | Search Naver Encyclopedia | | `GET /v1/naver/errata` | 1 | standard | Correct a mistyped Korean search query (오타변환) | | `GET /v1/naver/image/search` | 1 | standard | Search Naver Image | | `GET /v1/naver/kin/search` | 1 | standard | Search Naver KnowledgeiN (지식iN) | | `GET /v1/naver/local/search` | 1 | standard | Search Naver Local (장소 검색) | | `GET /v1/naver/news/search` | 1-9 (metered) | custom | Search Naver News 1 credit per page. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/naver/webkr/search` | 1 | standard | Search Naver Web (웹문서) | | `GET /v1/on_page/page` | 1 | standard | Run an on-page SEO audit for one URL | | `GET /v1/perplexity/research` | 1 | standard | Web research via Perplexity Sonar | | `GET /v1/pillar/page` | 1 | standard | Get Pillar page | | `GET /v1/pinterest/trends` | 10 | premium | Get Pinterest Trends for a country | | `GET /v1/pinterest/board` | 1-16 (metered) | custom | Get Pinterest board 1 credit for the page. include=engagement holds 1 credit per row, at most 15 (or `limit`), and keeps only the rows filled from a fresh lookup, so a page is at most 16 credits; rows served from cache are free, unfilled rows are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/pinterest/pin` | 1 | standard | Get Pinterest pin details | | `GET /v1/pinterest/search` | 1-26 (metered) | custom | Search Pinterest pins 1 credit for the page. include=engagement holds 1 credit per row, at most 25 (or `limit`), and keeps only the rows filled from a fresh lookup, so a page is at most 26 credits; rows served from cache are free, unfilled rows are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/pinterest/url-stats` | 1 | standard | Get Pinterest save counts for external URLs | | `GET /v1/pinterest/user/boards` | 1 | standard | List Pinterest user boards | | `GET /v1/polymarket/research` | 5 | advanced | Polymarket prediction markets: multi-query research | | `GET /v1/prism/brand-mentions` | 50 | custom | Brand mention volume time-series, sentiment split, top sources, and recent mentions for one keyword. | | `GET /v1/prism/creator-vet` | 50-75 (metered) | custom | Vet a creator before partnering: engagement quality, commenter authenticity, posting cadence, and controversy signals, optionally across platforms. 50 credits for the standard vet. `include=cross_platform` raises it to 75 for the cross-platform identity check on top | | `GET /v1/prism/leads` | 50 | custom | Ranked feed of public conversations where people seek alternatives to or are switching from a competitor. | | `GET /v1/prism/campaign` | 35 | custom | Campaign tracker: pre/during/post volume lift, cross-platform engagement, and ranked top amplifiers for a hashtag or phrase. | | `GET /v1/prism/crisis-postmortem` | 35 | custom | Crisis post-mortem: a who-said-what-first timeline across web, Reddit, Hacker News, and social, with an origin, peak, propagation sequence, and a grounded narrative. | | `GET /v1/prism/apps-lookup` | 30 | custom | One app across Google Play + the App Store: resolved, title-matched, and compared into a cross-store rating + listing report. | | `GET /v1/prism/audience-questions` | 30 | custom | The real questions a topic's audience asks: harvested from Reddit + YouTube threads (Naver KnowledgeiN for Korean topics) and clustered by intent (who/what/why/how/vs). | | `GET /v1/prism/demand-signals` | 30 | custom | Consumer-demand nowcast: app-review velocity, web mention slope, Reddit velocity, and commerce review levels, fused into a published demand index. | | `GET /v1/prism/employer-brand` | 30 | custom | A company's employer brand: what people say about working there across Reddit, the web, YouTube, Naver, and the company's own LinkedIn voice. | | `GET /v1/prism/product-reviews` | 30 | custom | A product's reviews across Amazon + Google Shopping + Trustpilot, folded into a cross-marketplace rating + themed pros/cons report. | | `GET /v1/prism/reputation` | 30 | custom | A brand's cross-source reputation. Trustpilot + app stores + Google Business + web sentiment, blended into one weighted score with themed pros/cons. | | `GET /v1/prism/review-integrity` | 30 | custom | Cross-source review integrity verdict (statistical, deterministic). | | `GET /v1/prism/trend-board` | 30 | custom | What is rising in one country today, with no keyword in: breakout TikTok posts, sounds, hashtags, and Google searches. 30 credits flat (provisional). One call reads TikTok's local feed, TikTok's hashtag board, Google Trending Now, up to 5 author pages and up to 3 sounds. A source that does not answer is listed under unavailable and its section is empty. Only a call where the feed, the hashtag board and Google Trending Now all fail is refunded. | | `GET /v1/prism/adverse-screen` | 25-75 (metered) | custom | Screen a person's public social profiles for adverse posts, with every flag citing its post, for human review. 25 credits for one profile, plus 10 for each further profile (4 profiles cost 55). Profiles that could not be screened are refunded their share, and a call that screened nothing keeps 5 | | `GET /v1/prism/earliness` | 25 | custom | How early a term appeared on each platform, before Trends and before ads. 25 credits (provisional). One date-sorted page per platform, Google Trends over five years, and one page of the TikTok and Meta ad libraries. A lane that does not answer is listed and is not a first-seen date. | | `GET /v1/prism/earned-media` | 25 | custom | A brand's earned-media footprint: news + tech-press + fresh-web clips, deduped and ranked, with an outlet-coverage rollup. | | `GET /v1/prism/audience-overlap` | 20 | custom | How much two TikTok creators' commenter audiences overlap. Jaccard, shared-fan count, and a confidence label. | | `GET /v1/prism/devtool-pulse` | 20 | custom | Developer-brand health: a devtool's repo dossier + Hacker News reaction + Reddit chatter + dev-blog echo, in one call. | | `GET /v1/prism/launch-echo` | 20 | custom | How a launch landed: the Hacker News reaction (top threads + comments), the dev-blog echo, and an optional repo dossier. | | `GET /v1/prism/share-of-voice` | 20-200 (metered) | custom | Engagement-weighted Share of Voice across 2-5 brands, with web+social split, emotion overlay, and ESOV. 40 credits per brand with the social leg, which is the default, or 20 per brand for the web-only read. Up to 5 brands per call, so the 200-credit ceiling is 5 brands with social and dropping `social` from `include` halves it. Price the call as `brands x per-brand` before you send it - this is the most expensive composite on the API | | `GET /v1/prism/truthsocial-pulse` | 20 | custom | A Truth Social handle's pulse: profile, recent posts, per-post detail drill, and the news echo, in one call. | | `GET /v1/prism/answers` | 15 | custom | Multi-engine AI consensus: one question → Perplexity + Grok + Tavily answers verbatim, merged citations, and an agreement matrix. | | `GET /v1/prism/brief-check` | 15 | custom | Check a creator post against a campaign brief: talking points, forbidden claims, and disclosure. 15 credits per post (provisional). Caption and transcript are pulled; each talking point is scored and quoted. A missing transcript is reported, never treated as a pass. | | `GET /v1/prism/crisis-radar` | 15-45 (metered) | custom | Stateless crisis breach check: a z-score on daily mention volume and negative share, with on-breach confirmation and a severity grade. 15 credits for the baseline breach check. `confirm=true` escalates to the full 45-credit investigation. Run the baseline first and escalate only when it reports a breach: that is the whole point of the two-step shape | | `GET /v1/prism/korea-gap` | 15-40 (metered) | custom | What the world is talking about that Korea isn't (and vice versa): the global vs Korean (Naver) conversation gap for a brand/topic. 15 credits for the web-only read. The default `include` carries the social leg, which makes the call 40; pass an `include` without `social` to stay at 15 | | `GET /v1/prism/app-reviews` | 10-15 (metered) | custom | Cross-store app review intelligence (Google Play + App Store): translated, clustered, sentiment-scored. 10 credits for one store, 15 for both. A bare `query` resolves both stores and costs 15; naming a single store in `stores`, or passing only one of `google_play_id` / `app_store_id`, costs 10 | | `GET /v1/prism/org-radar` | 6-51 (metered) | custom | A GitHub org's footprint: its top repos each expanded into a full dossier (releases, issue load, top request/complaint), rolled up. 1 credit for the org read plus 5 per repository expanded into a dossier. The default of 5 repos is 26 credits, a single repo is 6, and the 10-repo maximum is 51. Set `repos` to bound it before calling | | `GET /v1/prism/creator-card` | 5-8 (metered) | custom | One handle, unified author cards across TikTok, Instagram, YouTube, X (and more). 5 credits covering any 4 platforms, plus 1 credit per platform beyond 4. The default selection is 4 platforms, so the 7-platform maximum is 8 credits | | `GET /v1/prism/handle-audit` | 5-8 (metered) | custom | Should you pull this handle? One call scores a handle across platforms, ranks the best ones, and projects the data volume + credit cost to pull it. 5 credits for any selection of up to 4 supported platforms; +1 credit per selected platform beyond 4 | | `GET /v1/prism/video-intel` | 5-15 (metered) | custom | One video URL → detail + stats + transcript + top comments + commenter sample, across YouTube/TikTok/Rumble/Instagram. 5 credits for the video detail, stats and comments. `include=transcript` adds 10, which is exactly what the standalone transcript endpoint charges, so the bundle never costs more than running the two calls yourself | | `GET /v1/prism/voice` | 5 | custom | One person's public posts across X, Threads, Bluesky, and Truth Social, time-merged. | | `GET /v1/prism/format-lift` | 4 | custom | Which hook works for this creator, measured against their own posts. 4 credits (provisional). One page of the creator's recent posts is read, and each post is compared with that creator's own median. A bucket with fewer than eight posts lists the count and leaves the median empty. | | `GET /v1/prism/ai-visibility` | 2-1605 (metered) | custom | AI Share-of-Voice / GEO monitoring: prompt set x reruns to per-brand appearance-% per AI engine plus a cited-domain ranking. 2 credits per probe, where a probe is one prompt run once on one engine, so the charge is `2 x prompts x runs x engines`. On the defaults (both engines, 8 runs) a 5-prompt audit is 160 credits. `include=web_baseline` adds a flat 5. The 1,605 ceiling is the 20-prompt, 20-run, two-engine worst case with the baseline on - `preset=quick` holds far less, and the hold settles down to the probes that actually completed | | `GET /v1/prism/audience-language` | 2-26 (metered) | custom | Language mix of the people commenting on a creator's recent posts, beside the follower sample on TikTok. Floor 2 credits (one YouTube post: the channel list plus one comment page). Each further comment page is 1 credit, or 5 on Instagram, up to 5 posts. TikTok also opens the audience sample (5) and one follower page (1). Unopened pages are refunded. Five Instagram posts is 26 credits. | | `POST /v1/prism/comment-lookup` | 2-100 (metered) | custom | Re-check up to 25 known comments in one call: per-item results, failed items refunded. 2 credits per found TikTok item and 5 per found Instagram item, raised by `deep_scan`. Up to 25 items per call: the whole batch holds at most 100 credits up front and refunds every not_found, errored and deferred item | | `GET /v1/prism/comments` | 2-200 (metered) | custom | Every comment on a post, replies nested, server-paginated to completion. 1 credit per comment page scanned, except on Instagram, where a post URL is a flat 5 credits whatever `max` and `replies` you pass | | `GET /v1/prism/find-accounts` | 2-17 (metered) | custom | Turn a person's or a company's name into ranked candidate accounts on Instagram, TikTok, X and LinkedIn, with a match level per platform, for human review. The searches at their own prices (1 credit each for Instagram, TikTok and X, 10 for LinkedIn) plus 1 credit per platform judged: 6 credits for a person by default, 17 for a company (LinkedIn included). A search that fails and a platform that could not be judged are refunded | | `GET /v1/prism/investigate` | 1 | custom | A bounded read-only walk over SocialCrawl endpoints that turns a research goal into a trail of searches, profiles and comments. Holds `budget` credits (default 40, max 200) up front and refunds what the walk does not spend. Each underlying page is charged at its own price. Deciding the next step is free. | | `POST /v1/prism/jobs` | 1 | custom | Up to 5,000 profiles or post URLs in one background job, at the batch endpoints' own prices. The same price per row as the batch endpoint the job runs: prism/profiles (1 credit per profile on most platforms, 5 on LinkedIn, plus 1 per posts page with include: "posts") or prism/post-stats (its per-URL price). The call holds the whole job's worst case up front, answered in credits_used on the 202, and refunds every row that is not ok when the job completes. Reading the job is free. | | `GET /v1/prism/lookup` | 1-5 (pass-through) | custom | Universal post/product URL dispatcher: any post, video, product or repo link → the right detail endpoint's unified response. the resolved endpoint's own price, with no routing surcharge: 1 credit for most social lookups and 5 for the advanced ones (Amazon, LinkedIn). The `resolved.endpoint` field in the response names the endpoint that was charged | | `GET /v1/prism/mentions` | 1-9 (metered) | custom | Public posts and comments that mention a handle or contain a link, from the first page of each search that can find them. 1 credit for each X or Reddit page, 5 for an Instagram tag page, 1 for a web page. A default call holds 3. A page with no verified row is refunded. Facebook, Threads and TikTok are not searched. | | `POST /v1/prism/post-stats` | 1-500 (metered) | custom | Up to 100 mixed-platform post URLs → current engagement per URL, failed URLs refunded. 1 credit per successful URL on most platforms, 2 on Instagram and 5 on LinkedIn, charged at each URL's own platform rate. Up to 100 URLs per call: the call holds the summed worst case up front (a 100-URL Instagram batch holds 200) and refunds every dead, errored and unsupported URL, so you pay for exactly the rows that returned counts | | `POST /v1/prism/profiles` | 1-250 (metered) | custom | Up to 50 (platform, handle) pairs → one canonical Author per row, failed handles refunded. 1 credit per successful row on most platforms and 5 on LinkedIn, charged at each handle's own platform tier. Up to 50 items per call: the call holds the summed worst case up front and refunds every not_found, unsupported, errored and deferred row. With include: "posts" (up to 25 items) a row also costs its post list page, 1 credit, charged only when that page came back with posts | | `GET /v1/prism/comment-leads` | 0-243 (metered) | custom | Buyer leads from the comments under the posts a keyword search returns, opening only the posts worth opening. Pay for what is opened: 1 credit a search page, 1 credit a comment page fetched and 1 credit for every started 25 comments labelled. The default request holds 37 and refunds what did not run; judging which posts to open is free | | `GET /v1/prism/jobs` | 0 | custom | List the API key's background jobs, newest first. | | `GET /v1/prism/jobs/{job_id}` | 0 | custom | Status and results of one background job. | | `GET /v1/producthunt/launches` | 1 | standard | List current Product Hunt launches | | `GET /v1/quora/answers` | 5 | advanced | Search Quora answers | | `GET /v1/quora/post` | 5 | advanced | Get a Quora question | | `GET /v1/quora/posts` | 5 | advanced | Search Quora space posts | | `GET /v1/quora/profiles` | 5 | advanced | Search Quora profiles | | `GET /v1/quora/search` | 5 | advanced | Search Quora questions | | `GET /v1/quora/spaces` | 5 | advanced | Search Quora Spaces | | `GET /v1/quora/topics` | 5 | advanced | Search Quora topics | | `GET /v1/reddit/post/transcript` | 10 | premium | Get a Reddit video post transcript | | `GET /v1/reddit/omni-search` | 5-9 (metered) | custom | Reddit VoC sweep: one keyword → threads across all of Reddit with subreddit attribution and top comments inline. 1 credit for the search page plus 1 per thread SUCCESSFULLY expanded, with a floor of 5. The call holds `1 + threads` up front (the 8-thread maximum holds 9) and refunds every thread that failed to expand, so the floor is what most sweeps cost. Running the same sweep by hand - one reddit/search plus eight reddit/post/comments calls - costs the same 9 at best and gives you no subreddit rollup | | `GET /v1/reddit/post/comments` | 5-9 (metered) | custom | List Reddit post comments 5 credits per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/reddit/profile/comments` | 2-200 (metered) | custom | Read a Reddit account's own comment history, newest first, deeper than any search index reaches. Metered: 2 credits per comment returned, so try /v1/reddit/search/comments?query=author:name first 2 credits per comment returned. A limit of 25 holds 50 credits and settles down to the number of comments that actually came back; an account with no comments costs nothing. | | `GET /v1/reddit/post` | 1 | standard | Get a Reddit post | | `GET /v1/reddit/profile` | 1 | standard | Get a Reddit user profile | | `GET /v1/reddit/profile/posts` | 1 | standard | List a Reddit user's posts | | `GET /v1/reddit/search` | 1-34 (metered) | custom | Search Reddit posts 1 credit for the search page. include_body=true reserves up to 25 extra credits and refunds every one it does not spend. Rows now arrive with their bodies, and a link post has no body to fetch, so a row is only charged for when a body actually comes back: on most pages nothing is spent and the page costs 1 credit. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/reddit/search/comments` | 1 | standard | Search Reddit comments | | `GET /v1/reddit/search/media` | 1 | standard | Search Reddit image and video posts | | `GET /v1/reddit/subreddit` | 1-5 (metered) | custom | List Reddit subreddit posts 1 credit per page. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/reddit/subreddit/details` | 1 | standard | Get Reddit subreddit details | | `GET /v1/reddit/subreddit/search` | 1-26 (metered) | custom | Search within a subreddit 1 credit for the search page. With include_body=true, 1 extra credit per post that comes back with a body, up to 25 per page, unused credits refunded. Link posts have no body and are not charged for. | | `GET /v1/reddit/subreddits/search` | 1-26 (metered) | custom | Find subreddits by topic 1 credit for the page. include=details holds 1 credit per row, at most 25 (or `limit`), and keeps only the rows filled from a fresh lookup, so a page is at most 26 credits; rows served from cache are free, unfilled rows are refunded, and a repeat within the cache window costs 0. | | `GET /v1/rumble/video/transcript` | 10 | premium | Get a Rumble video transcript | | `GET /v1/rumble/channel/videos` | 1 | standard | List videos for a Rumble channel | | `GET /v1/rumble/search` | 1 | standard | Search Rumble videos | | `GET /v1/rumble/video` | 1 | standard | Get a Rumble video | | `GET /v1/rumble/video/comments` | 1 | standard | List top-level comments on a Rumble video | | `GET /v1/sephora/availability` | 5 | advanced | Get Sephora in-store availability for a sku | | `GET /v1/sephora/brand/products` | 5 | advanced | List Sephora products for a brand | | `GET /v1/sephora/category` | 5 | advanced | Browse Sephora products in a category | | `GET /v1/sephora/product` | 5 | advanced | Get a Sephora product by id or URL | | `GET /v1/sephora/reviews` | 5-9 (metered) | custom | Get Sephora product reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/sephora/search` | 5 | advanced | Search Sephora products by keyword | | `GET /v1/sephora/brands` | 1 | standard | List Sephora brands | | `GET /v1/sephora/categories` | 1 | standard | List Sephora root categories | | `GET /v1/sephora/category/data` | 1 | standard | Get a Sephora category and its children | | `GET /v1/sephora/search/suggestions` | 1 | standard | Get Sephora search suggestions | | `GET /v1/sephora/stores` | 1 | standard | Find Sephora stores near a coordinate | | `GET /v1/snapchat/profile` | 1 | standard | Get Snapchat user profile | | `GET /v1/snapchat/spotlight/comments` | 1 | standard | List comments on a Snapchat Spotlight | | `GET /v1/spotify/album` | 1 | standard | Get a Spotify album | | `GET /v1/spotify/artist` | 1 | standard | Get a Spotify artist | | `GET /v1/spotify/podcast` | 1 | standard | Get a Spotify podcast | | `GET /v1/spotify/podcast/episodes` | 1 | standard | List a Spotify podcast's episodes | | `GET /v1/spotify/search` | 1 | standard | Search Spotify | | `GET /v1/spotify/track` | 1 | standard | Get a Spotify track | | `GET /v1/target/category` | 5 | advanced | Browse Target products in a category | | `GET /v1/target/product` | 5 | advanced | Get a Target product by TCIN | | `GET /v1/target/reviews` | 5-9 (metered) | custom | Get Target product reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/target/categories` | 1 | standard | List the Target category taxonomy | | `GET /v1/target/stores` | 1 | standard | Find Target stores near a location | | `GET /v1/tavily/crawl` | 1 | standard | Crawl a website with LLM-driven path selection | | `GET /v1/tavily/extract` | 1 | standard | Extract clean content from one or more URLs | | `GET /v1/tavily/map` | 1 | standard | Map a website's sitegraph | | `GET /v1/tavily/search` | 1 | standard | Tavily web search with optional LLM-generated answer | | `GET /v1/telegram/post` | 1 | standard | Get Telegram post | | `GET /v1/telegram/profile` | 1 | standard | Get Telegram channel profile | | `GET /v1/telegram/profile/posts` | 1 | standard | List Telegram channel posts | | `GET /v1/threads/post` | 1 | standard | Get Threads post details | | `GET /v1/threads/post/comments` | 1-10 (metered) | custom | Get comments on a Threads post 1 credit for the bundled window of about 20 replies, which is what a call with no `limit`, or `limit` at 25 or below, costs. Above 25 the deeper lane is metered at 1 credit per 5 replies RETURNED: the call holds `ceil(limit / 5)` up front (the 50 maximum holds 10) and refunds down to what came back, so a post with 12 replies settles at 3 credits however high `limit` was set | | `GET /v1/threads/profile` | 1 | standard | Get Threads user profile | | `GET /v1/threads/search` | 1-34 (metered) | custom | Search Threads posts 1 credit per result window. A call with no `limit` is one window and costs exactly 1. With `limit` set the walker consumes `ceil(limit / 15)` windows - 4 for limit=50, 7 for the 100 maximum - holds that many up front and refunds every window it did not need. Query relaxation can add up to 4 more windows on a page-1 request, billed only for the relaxed searches that returned posts and refunded for the ones that did not; send `expand=false` to hold none of them, and note that a request carrying a cursor never relaxes, so a pagination loop's last hop costs nothing extra. With `include=engagement` the call also holds 20 credits and keeps 1 for each of the first 20 posts whose view count or display name it filled from a fresh lookup; posts served from the post lookup's cache (10 minutes) are free, a post Threads has published no view count for is free (it still gets its pinned flag), and the rest is refunded Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/threads/search/users` | 1-13 (metered) | custom | Search Threads users 1 credit for the identity window, which is what a call with no `include` costs. With `include=profile` the call holds 1 credit per row of the page (12, or `limit`) and keeps 1 for each account it filled from a fresh lookup; accounts served from the profile lookup's cache (15 minutes) are free and the rest is refunded, so a call costs 13 at most | | `GET /v1/threads/user/posts` | 1-165 (metered) | custom | List Threads user posts 1 credit for the bundled window of about 15 posts, which is what a call with no `limit`, or `limit` at 15 or below, costs. Above 15 the deeper lane is metered at 3 credits per post RETURNED: the call holds `limit x 3` up front (the 50 maximum holds 150) and refunds down to what came back. With `include=engagement` the call also holds 1 credit per post of the window (15) and keeps 1 for each post whose view count or display name it filled from a fresh lookup; posts served from the post lookup's cache (10 minutes) are free and the rest is refunded, so the default window costs 16 at most. Beside a `limit` above 15 the deeper rows already carry both fields, so the 15 are refunded in full | | `GET /v1/tiktok/videos/popular` | 26-45 (metered) | custom | Read TikTok's own Top Videos board for the US, Japan, Vietnam, Thailand or Indonesia. Metered: 25 credits per board plus 1 per video returned 25 credits per board plus 1 credit per video returned. The default limit of 20 holds 45 credits and settles to the videos actually returned; an empty board costs nothing. | | `GET /v1/tiktok/ads/top` | 10-100 (metered) | custom | Read TikTok's Creative Center Top Ads board: the best-performing ads in a market, ranked by CTR, impressions or engagement. Metered: 1 credit per ad returned, minimum 10 1 credit per ad returned, minimum 10 credits. A limit of 20 holds 20 credits and settles down to the number of ads that actually came back; a filter combination with no board costs nothing. | | `GET /v1/tiktok/post/transcript` | 10 | premium | Get TikTok video transcript | | `GET /v1/tiktok/hashtags/popular` | 6-96 (metered) | custom | Read TikTok's own trending-hashtag board for a market and time window: the overall board plus 15 industry boards. Metered: 2 credits per hashtag returned, minimum 6 2 credits per hashtag returned, minimum 6. One board is 6 credits. industry=all holds 96 credits (sixteen boards of three) and settles down to the hashtags actually returned, typically 88 to 92. An empty board costs nothing. | | `GET /v1/tiktok/adlibrary/ad` | 5 | advanced | Get a TikTok Ad Library ad | | `GET /v1/tiktok/adlibrary/search` | 5-17 (metered) | custom | Search the TikTok Ad Library 5 credits for the page. include=ad holds 1 credit per ad, at most 12 (or `limit`), and keeps only the ads filled from a fresh lookup, so a page is at most 17 credits; ads served from cache are free, unfilled ads are refunded, and a repeat within the cache window costs 0. The page is cached for 2 minutes and the per-ad lookups for 30 minutes. | | `GET /v1/tiktok/profile/full` | 5 | custom | TikTok profile, recent posts, and computed analytics in one call. | | `GET /v1/tiktok/similar` | 5 | advanced | List similar TikTok accounts 5 credits a call. An empty list is refunded, an unknown handle is a free 404, and the list is cached for 15 minutes, so a repeat within that window costs 0. | | `GET /v1/tiktok/trending` | 5 | advanced | Get TikTok trending feed | | `GET /v1/tiktok/user/audience` | 5 | advanced | Get TikTok user audience demographics | | `GET /v1/tiktok/video/screen-text` | 5 | advanced | Get TikTok video on-screen text | | `GET /v1/tiktok/comment` | 2-6 (metered) | custom | Look up one TikTok comment by URL or id 2 credits for a standard lookup, 6 with `deep_scan=true`, which keeps paging the thread when the comment is not in the first pages. Reach for deep_scan only after a standard lookup comes back not-found | | `GET /v1/tiktok/collection/videos` | 1 | standard | List videos in a TikTok collection | | `GET /v1/tiktok/effect/videos` | 1 | standard | List TikTok videos made with an effect | | `GET /v1/tiktok/effects` | 1 | standard | Get TikTok effects by id | | `GET /v1/tiktok/hashtag` | 1 | standard | Get TikTok hashtag details | | `GET /v1/tiktok/location/posts` | 1 | standard | List TikTok videos tagged at a place | | `GET /v1/tiktok/playlist/videos` | 1 | standard | List videos in a TikTok playlist | | `GET /v1/tiktok/post` | 1 | standard | Get TikTok post details | | `GET /v1/tiktok/post/comments` | 1-7 (metered) | custom | List TikTok post comments 1 credit per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/tiktok/profile` | 1 | standard | Get TikTok user profile | | `GET /v1/tiktok/profile/playlists` | 1 | standard | List a TikTok account's playlists | | `GET /v1/tiktok/profile/region` | 1 | standard | Get TikTok profile region | | `GET /v1/tiktok/profile/videos` | 1-5 (metered) | custom | List TikTok user videos 1 credit per page. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/tiktok/search` | 1-42 (metered) | custom | Search TikTok videos by keyword 1 credit for the page. limit= holds ceil(N/4)+2 credits for the N rows the source fills (30 to 120, rounded up to a multiple of 30), 32 at 120 and 10 at 30, and unfilled slots are refunded. Repeated videos are removed after billing. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 5 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 5 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/tiktok/search/hashtag` | 1-5 (metered) | custom | Search TikTok by hashtag 1 credit per page. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/tiktok/search/music` | 1 | standard | Search TikTok sounds | | `GET /v1/tiktok/search/suggestions` | 1 | standard | Get TikTok search suggestions | | `GET /v1/tiktok/search/top` | 1 | standard | TikTok top search results | | `GET /v1/tiktok/search/users` | 1-100 (metered) | custom | Search TikTok users 1 credit for the page. include=profile holds 1 credit per row, at most 30 (or `limit`), and keeps only the rows filled from a fresh lookup, so a page is at most 31 credits; rows served from cache are free, unfilled rows are refunded, and a repeat within the cache window costs 0. country= holds 5 credits per requested in-country row (8 by default, at most 20) and keeps only the rows returned, so a miss is 0. The page is cached for 2 minutes and the per-account lookups for 15 minutes. | | `GET /v1/tiktok/song` | 1 | standard | Get TikTok song details | | `GET /v1/tiktok/song/videos` | 1 | standard | List TikTok videos using a song | | `GET /v1/tiktok/user/followers` | 1 | standard | List TikTok user followers | | `GET /v1/tiktok/user/following` | 1 | standard | List TikTok user following | | `GET /v1/tiktok/user/liked` | 1 | standard | List the videos a TikTok account has liked | | `GET /v1/tiktok/user/live` | 1 | standard | Get TikTok user live stream | | `GET /v1/tiktok/video/comment/replies` | 1-5 (metered) | custom | List TikTok comment replies 1 credit per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/tiktokshop/product` | 1 | standard | Get TikTok Shop product details | | `GET /v1/tiktokshop/product/reviews` | 1-5 (metered) | custom | List TikTok Shop product reviews 1 credit per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/tiktokshop/products` | 1 | standard | List TikTok Shop products | | `GET /v1/tiktokshop/search` | 1 | standard | Search TikTok Shop products | | `GET /v1/tiktokshop/user/showcase` | 1 | standard | List TikTok user showcase products | | `GET /v1/tiktokshop/sales` | 0-8 (metered) | custom | TikTok Shop units sold and estimated sales per market Metered, 0-8 credits: each market is one /v1/tiktokshop/search page billed at that endpoint's own price (1 credit), exactly as a direct call is billed. A market whose page found nothing or failed costs nothing, and a page served from cache is free. data.regions[].credits shows each market's charge and credits_used the total. | | `GET /v1/tripadvisor/attraction` | 1 | standard | Get a TripAdvisor attraction | | `GET /v1/tripadvisor/attraction/reviews` | 1-5 (metered) | custom | Get TripAdvisor reviews for an attraction 1 credit per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/tripadvisor/attractions` | 1 | standard | Search TripAdvisor attractions and things to do | | `GET /v1/tripadvisor/autocomplete` | 1 | standard | Autocomplete TripAdvisor places | | `GET /v1/tripadvisor/cruise` | 1 | standard | Get a TripAdvisor cruise ship | | `GET /v1/tripadvisor/cruise/reviews` | 1-5 (metered) | custom | Get TripAdvisor reviews for a cruise ship 1 credit per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/tripadvisor/cruises` | 1 | standard | Search TripAdvisor cruises | | `GET /v1/tripadvisor/experience-types` | 1 | standard | List TripAdvisor experience types for a destination | | `GET /v1/tripadvisor/hotel` | 1 | standard | Get a TripAdvisor hotel | | `GET /v1/tripadvisor/hotels` | 1 | standard | Search TripAdvisor hotels | | `GET /v1/tripadvisor/place` | 1 | standard | Get a TripAdvisor place by URL | | `GET /v1/tripadvisor/restaurant` | 1 | standard | Get a TripAdvisor restaurant | | `GET /v1/tripadvisor/restaurant/reviews` | 1-5 (metered) | custom | Get TripAdvisor reviews for a restaurant 1 credit per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/tripadvisor/restaurants` | 1 | standard | Search TripAdvisor restaurants | | `GET /v1/tripadvisor/reviews` | 1-5 (metered) | custom | Get TripAdvisor reviews for a place 1 credit per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/tripadvisor/search` | 1 | standard | Search TripAdvisor businesses & places | | `POST /v1/trustpilot/reviews/history` | 6-10005 (metered) | custom | Start a Trustpilot review history job 1 credit per returned review, plus 5 credits to open. Submitting holds depth plus 5 credits and refunds the unused portion when the job settles. | | `GET /v1/trustpilot/reviews` | 5-9 (metered) | custom | Get Trustpilot reviews for a business 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/trustpilot/business-search` | 1 | standard | Search Trustpilot businesses | | `GET /v1/truthsocial/post` | 1 | standard | Get Truth Social post details | | `GET /v1/truthsocial/profile` | 1 | standard | Get Truth Social user profile | | `GET /v1/truthsocial/user/posts` | 1 | standard | List Truth Social user posts | | `GET /v1/twitch/clip` | 1 | standard | Get Twitch clip details | | `GET /v1/twitch/profile` | 1 | standard | Get Twitch streamer profile | | `GET /v1/twitch/user/schedule` | 1 | standard | Get a Twitch user's stream schedule | | `GET /v1/twitch/user/videos` | 1 | standard | List a Twitch user's videos | | `GET /v1/twitter/tweet/transcript` | 10 | premium | Get Twitter video transcript | | `GET /v1/twitter/ai-search` | 5 | advanced | AI-powered X (Twitter) search via xAI Grok | | `GET /v1/twitter/profile/full` | 5 | custom | X (Twitter) profile, recent posts, and computed analytics in one call. | | `GET /v1/twitter/community` | 1 | standard | Get Twitter community details | | `GET /v1/twitter/community/tweets` | 1 | standard | List Twitter community tweets | | `GET /v1/twitter/profile` | 1 | standard | Get Twitter user profile | | `GET /v1/twitter/search/tweets` | 1-9 (metered) | custom | Search Twitter tweets 1 credit per page. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/twitter/search/users` | 1 | standard | Search Twitter users | | `GET /v1/twitter/tweet` | 1 | standard | Get Twitter tweet details | | `GET /v1/twitter/tweet/replies` | 1-5 (metered) | custom | List Twitter tweet replies 1 credit per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/twitter/tweet/retweeters` | 1 | standard | List Twitter tweet retweeters | | `GET /v1/twitter/user/followers` | 1 | standard | List Twitter user followers | | `GET /v1/twitter/user/following` | 1 | standard | List Twitter user following | | `GET /v1/twitter/user/media` | 1 | standard | List Twitter user media tweets | | `GET /v1/twitter/user/tweets` | 1-5 (metered) | custom | List Twitter user tweets 1 credit per page. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/search/everywhere` | 20 | custom | Universal social search across 15 platforms | | `GET /v1/search/creators` | 10-12 (metered) | custom | Fused creator discovery across TikTok, Threads, and Instagram, ranked by relevance, followers, and verification. YouTube, X, and Facebook people are opt-in via sources=. 10 credits flat, with a coverage-based partial refund. Adding brief= adds 2 credits, refunded when the judging step could not answer for every judged creator. A cached page is free. | | `GET /v1/search/forums` | 10 | custom | Fused forum search across Reddit, Hacker News, and Naver 지식iN/카페, with top comments inline on hero threads by default. | | `GET /v1/search/news` | 2-62 (metered) | custom | Planned multi-country news search: one query, localized and fanned out across two independent news indexes in a single call. 2 credits + 1 credit per google leg that returns at least one article (upfront hold 2 + min(5 x countries, max_legs, 12), maximum 14 on the default engine). Adding the bing engine adds 1 credit per 5 articles it returns, because that engine is priced per article rather than per call; the absolute ceiling with both engines is 62. The hold always settles down to the actual charge, and empty, skipped or failed legs bill 0. | | `GET /v1/search/multi` | 0-28 (metered) | custom | One query, each platform's own search results, in one call at each platform's own price. Metered, usually 1-12 credits: each platform is billed at its own endpoint's price, per platform, exactly as a direct call to that endpoint is billed (TikTok, Instagram, YouTube, Reddit, Threads, X and Facebook 1 credit a page, LinkedIn 5). A platform whose page found nothing or failed costs nothing, and a platform page served from cache is free. A Threads phrase that Threads does not recognise is expanded into narrower searches, as on /v1/threads/search, and costs 1 credit per search that returned posts. data.sources..credits shows each platform's charge and credits_used the total. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 8 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 8 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/us_congress_trades/members` | 1 | standard | List members of Congress who have disclosed trades | | `GET /v1/us_congress_trades/politician` | 1 | standard | Get a politician's trading summary | | `GET /v1/us_congress_trades/politician/trades` | 1 | standard | List trades for one politician | | `GET /v1/us_congress_trades/state/trades` | 1 | standard | List trades from a state's congressional delegation | | `GET /v1/us_congress_trades/stats` | 1 | standard | Dataset summary | | `GET /v1/us_congress_trades/stats/buy-sell` | 1 | standard | Congressional buy vs sell ratio | | `GET /v1/us_congress_trades/stats/issuers` | 1 | standard | Most-traded issuers in Congress | | `GET /v1/us_congress_trades/stats/party` | 1 | standard | Compare trade counts by party | | `GET /v1/us_congress_trades/stats/politicians` | 1 | standard | Most-active congressional traders | | `GET /v1/us_congress_trades/stats/reporting-gaps` | 1 | standard | Politicians ranked by late STOCK Act filings | | `GET /v1/us_congress_trades/stats/sectors` | 1 | standard | Trade counts by industry sector | | `GET /v1/us_congress_trades/stats/tickers` | 1 | standard | Most-traded tickers in Congress | | `GET /v1/us_congress_trades/stats/unusual` | 1 | standard | Tickers with unusual congressional activity | | `GET /v1/us_congress_trades/stats/volume` | 1 | standard | Congressional trade volume over time | | `GET /v1/us_congress_trades/ticker` | 1 | standard | Get congressional trading stats for a ticker | | `GET /v1/us_congress_trades/ticker/trades` | 1 | standard | List congressional trades for a ticker | | `GET /v1/us_congress_trades/trades` | 1 | standard | Search US Congress stock trades | | `GET /v1/us_congress_trades/trades/latest` | 1 | standard | Latest US Congress trades (48 hours) | | `GET /v1/us_congress_trades/trades/recent` | 1 | standard | Recent US Congress trades (7 days) | | `GET /v1/utility/capabilities` | 0 | custom | List the parameters that work across endpoints Free (0 credits) | | `GET /v1/utility/docs-search` | 0 | custom | Search the docs Free (0 credits) | | `GET /v1/utility/endpoint` | 0 | custom | How to use any endpoint Free (0 credits) | | `GET /v1/utility/endpoints` | 0 | custom | List every available endpoint Free (0 credits) | | `GET /v1/utility/estimate` | 0 | custom | Quote the credit cost of a call or a plan Free (0 credits) | | `GET /v1/utility/explain-error` | 0 | custom | Explain a failed API response Free (0 credits) | | `GET /v1/utility/find` | 0 | custom | Find the endpoint for a task Free (0 credits) | | `GET /v1/utility/llms` | 0 | custom | AI-agent context payload Free (0 credits) | | `GET /v1/utility/plan` | 0 | custom | Plan the calls for a job Free (0 credits) | | `GET /v1/utility/quickstart` | 0 | custom | Get started in one call Free (0 credits) | | `GET /v1/utility/recipes` | 0 | custom | List task recipes with their cost Free (0 credits) | | `GET /v1/utility/resolve` | 0 | custom | Identify a URL, handle or id Free (0 credits) | | `GET /v1/walmart/category` | 5 | advanced | Browse Walmart products in a category | | `GET /v1/walmart/offers` | 5 | advanced | Get every seller offering a Walmart product | | `GET /v1/walmart/product` | 5 | advanced | Get a Walmart product by id | | `GET /v1/walmart/reviews` | 5-9 (metered) | custom | Get Walmart product reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/walmart/search` | 5 | advanced | Search Walmart products by keyword | | `GET /v1/wayfair/product` | 5 | advanced | Get a Wayfair product by SKU | | `GET /v1/wayfair/reviews` | 5-9 (metered) | custom | Get Wayfair product reviews 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/wayfair/search` | 5 | advanced | Search Wayfair products | | `POST /v1/web/agent` | 25 | custom | Start an async web agent job | | `GET /v1/web/extract` | 5 (metered) | custom | Extract structured data from a web page A flat 5 credits. It runs through the metered pricer for consistency with the rest of the web surface, but nothing in your query changes the charge | | `POST /v1/web/sessions` | 5 | custom | Create an interactive web session 20 credits per browser-hour, minimum 5. The hold is taken from `ttl_seconds` when the session is created (60s default = 5, the 3,600s maximum = 20) and settled when it closes | | `GET /v1/web/search` | 2-120 (metered) | custom | Search the web 2 credits per 10 results, so `limit` up to 10 costs 2, 11-20 costs 4, and the 100 maximum costs 20. `include_content=true` adds 1 credit per result, because it scrapes each result page as well as reading the SERP row - that is what takes a 100-result content search to the 120-credit ceiling. The hold settles down to the work actually done | | `POST /v1/web/batch-scrape` | 1 | custom | Start an async batch scrape 1 credit per URL submitted, held up front and refunded down to the URLs actually scraped when the job settles | | `POST /v1/web/crawl` | 1-10000 (metered) | custom | Start an async web crawl 1 credit per page crawled. Submitting holds `limit` credits up front (default limit 10, max 10,000) and the unused portion is refunded when the job settles | | `GET /v1/web/map` | 1 | custom | Map URLs on a site | | `POST /v1/web/parse` | 1 | custom | Parse an uploaded document | | `GET /v1/web/scrape` | 1-5 (metered) | custom | Scrape a web page 1 credit for a standard scrape. `proxy=auto`, `proxy=enhanced` and `pdf_parse=true` hold 5 credits and settle to what the fetch actually used, so a page a plain request could read still costs 1. Nothing else moves the price: screenshots, tag filters, `wait_for` and a mobile viewport are included. A page that comes back as the site's own block or error page (HTTP 400 or more), a CAPTCHA, a sign-in wall or an empty shell is returned with `page_state` saying so and a `_warnings` line, and is not charged | | `GET /v1/web/jobs` | 0 | custom | List async web jobs | | `GET /v1/web/jobs/{job_id}` | 0 | custom | Get an async web job | | `DELETE /v1/web/jobs/{job_id}` | 0 | custom | Cancel an async web job | | `POST /v1/web/monitors` | 0 | custom | Create a web monitor 0 credits to create. Each scheduled check then bills its upstream cost plus 1 credit for orchestration, repeating on `cadence_minutes` until you pause or delete the monitor (a 5-minute cadence is 288 checks a day) | | `GET /v1/web/monitors` | 0 | custom | List web monitors | | `GET /v1/web/monitors/{monitor_id}` | 0 | custom | Get a web monitor | | `PATCH /v1/web/monitors/{monitor_id}` | 0 | custom | Update a web monitor | | `DELETE /v1/web/monitors/{monitor_id}` | 0 | custom | Delete a web monitor | | `GET /v1/web/monitors/{monitor_id}/checks` | 0 | custom | List web monitor checks | | `GET /v1/web/sessions` | 0 | custom | List interactive web sessions | | `GET /v1/web/sessions/{session_id}` | 0 | custom | Get an interactive web session | | `DELETE /v1/web/sessions/{session_id}` | 0 | custom | Close an interactive web session | | `POST /v1/web/sessions/{session_id}/execute` | 0 | custom | Execute an interaction in a web session | | `GET /v1/xiaohongshu/post` | 5 | advanced | Get a Xiaohongshu note | | `GET /v1/xiaohongshu/post/comments` | 5-100 (metered) | custom | Get Xiaohongshu note comments 5 credits per row RETURNED. The call holds `limit x 5` up front and settles down to the rows actually delivered. | | `GET /v1/xiaohongshu/profile` | 5 | advanced | Get a Xiaohongshu creator | | `GET /v1/xiaohongshu/profile/posts` | 5-100 (metered) | custom | List a Xiaohongshu creator's notes 5 credits per row RETURNED. The call holds `limit x 5` up front and settles down to the rows actually delivered. | | `GET /v1/xiaohongshu/search` | 5-100 (metered) | custom | Search Xiaohongshu notes 5 credits per row RETURNED. The call holds `limit x 5` up front and settles down to the rows actually delivered. | | `GET /v1/xiaohongshu/trending` | 5-100 (metered) | custom | Get the Xiaohongshu hot search board 5 credits per row RETURNED. The call holds `limit x 5` up front and settles down to the rows actually delivered. | | `GET /v1/yelp/business/reviews` | 5-9 (metered) | custom | Get Yelp reviews for a business 5 credits per page. The default labels (sentiment, issue) are free. label=reports, incentivized or injection holds 4 extra credits and refunds down to 1 credit per started 25 reviews that were newly judged (the first 100 reviews of a page are judged): reviews already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/yelp/business/info` | 1 | standard | Get a Yelp business by encid | | `GET /v1/yelp/search` | 1 | standard | Search Yelp businesses | | `GET /v1/yelp/search/full` | 1 | standard | Search Yelp businesses with full cards | | `GET /v1/yelp/search/suggestions` | 1 | standard | Get Yelp search suggestions | | `GET /v1/youtube/channel/about` | 25 | custom | Get a YouTube channel's contact email and country. Try the 1-credit youtube/channel first: it already carries the email for some channels, and you are charged here only when an address is returned. A first read of an address behind the View email address button can take up to 5 minutes, so set your HTTP timeout to at least 300s; on a 503, retry after the Retry-After seconds | | `GET /v1/youtube/video/sponsors` | 10 | premium | Detect sponsors of a YouTube video | | `POST /v1/youtube/channels` | 5-100 (metered) | custom | Batch get YouTube channel details (up to 1000) 5 credits per 50-id chunk, so a 50-id batch is 5 credits and the 1,000-id maximum is 100. Batching is what makes this cheap: the same 1,000 channels fetched one at a time through GET /v1/youtube/channel cost 1,000 credits. A chunk is charged whether or not every id in it resolves, so there is no per-id refund; a call that resolves nothing at all is refunded in full | | `GET /v1/youtube/profile/full` | 5 | custom | YouTube profile, recent posts, and computed analytics in one call. | | `GET /v1/youtube/shorts/trending` | 5-15 (metered) | custom | Get trending YouTube shorts 5 credits for the feed. include=channel adds 1 credit per distinct channel filled, at most 5 per 50 channels (the feed carries about 70, so at most 10); channels that could not be read are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/youtube/video/audio` | 5 | advanced | Get a YouTube video's audio file streams | | `GET /v1/youtube/video/files` | 5 | advanced | Get a YouTube video's video file streams | | `POST /v1/youtube/videos` | 5-100 (metered) | custom | Batch get YouTube video details (up to 1000) 5 credits per 50-id chunk, so a 50-id batch is 5 credits and the 1,000-id maximum is 100. Batching is what makes this cheap: the same 1,000 videos fetched one at a time through GET /v1/youtube/video cost 1,000 credits. A chunk is charged whether or not every id in it resolves, so there is no per-id refund; a call that resolves nothing at all is refunded in full | | `POST /v1/youtube/transcripts` | 3-300 (metered) | custom | Up to 100 YouTube video ids → one transcript per row, failed ids refunded. 3 credits per successful transcript. Up to 100 ids per call: the call holds ids × 3 up front (a full batch holds 300) and refunds every not_found, errored and deferred row | | `GET /v1/youtube/video/transcript` | 3 | custom | Get YouTube video transcript | | `GET /v1/youtube/channel` | 1 | standard | Get YouTube channel info | | `GET /v1/youtube/channel/community-posts` | 1 | standard | List a YouTube channel's community posts | | `GET /v1/youtube/channel/lives` | 1-7 (metered) | custom | List a YouTube channel's live streams 1 credit for the page. include=engagement adds 1 credit per distinct stream filled, at most 5 per page; include=channel adds 1 credit for the single channel lookup the page shares. Anything that could not be filled is refunded, so a page with both is at most 7 credits, and a repeat of the same call within the cache window costs 0. | | `GET /v1/youtube/channel/playlists` | 1 | standard | List a YouTube channel's playlists | | `GET /v1/youtube/channel/shorts` | 1-2 (metered) | custom | List YouTube channel shorts 1 credit for the page. include=channel adds 1 credit for the single channel lookup the page shares, refunded if the channel could not be read and free when it was looked up recently. | | `GET /v1/youtube/channel/videos` | 1-2 (metered) | custom | List YouTube channel videos 1 credit for the page. include=channel adds 1 credit for the single channel lookup the page shares, refunded if the channel could not be read and free when it was looked up recently. | | `GET /v1/youtube/community-post` | 1 | standard | Get YouTube community post | | `GET /v1/youtube/playlist` | 1-11 (metered) | custom | Get YouTube playlist 1 credit for the page. include=engagement and include=channel each add 1 credit per distinct video or channel filled, at most 5 per join on a page of up to 50 rows, so a page with both is at most 11 credits; ids that could not be filled are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/youtube/playlist/items` | 1-11 (metered) | custom | List the videos in a YouTube playlist 1 credit for the page. include=engagement and include=channel each add 1 credit per distinct video or channel filled, at most 5 per join on a page of up to 50 rows, so a page with both is at most 11 credits; ids that could not be filled are refunded, and a repeat of the same call within the cache window costs 0. | | `GET /v1/youtube/search` | 1-19 (metered) | custom | Search YouTube 1 credit for the page. include=engagement and include=channel each add 1 credit per distinct video or channel filled, at most 5 per join on a page of up to 50 rows, so a page with both is at most 11 credits; ids that could not be filled are refunded, and a repeat of the same call within the cache window costs 0. Relevance against your query (by default, or with relevance=) is free. Adding relevant_to= holds 4 extra credits and refunds down to 1 credit per started 25 rows that were newly judged: rows already judged for the same topic are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. The default labels (sponsored, intent, niche) are free. label=mention, or label=intent with offer=, holds 4 extra credits and refunds down to 1 credit per started 25 posts that were newly judged: posts already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/youtube/search/advanced` | 1-11 (metered) | custom | Advanced YouTube video search 1 credit for the search page. `includeExtras=true` adds a flat 5 credits for the single hydration call that fills view, like and comment counts and `duration_seconds` on the whole page. The increment never repeats: the page caps at 50 results, which one hydration call covers, so a hydrated page of 50 costs 6 credits and so does a hydrated page of 5. include=channel adds 1 credit per distinct channel filled, at most 5 per page, with channels that could not be read refunded, so a page with both is at most 11 With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/youtube/search/hashtag` | 1-11 (metered) | custom | Search YouTube by hashtag 1 credit for the page. include=engagement and include=channel each add 1 credit per distinct video or channel filled, at most 5 per join on a page of up to 50 rows, so a page with both is at most 11 credits; ids that could not be filled are refunded, and a repeat of the same call within the cache window costs 0. With `max_pages`, each page walked is billed at this price (a cached page is free). With `seen`, a page's price falls with its share of rows you already received under that id; credits for joined data (`include=`) are never discounted. | | `GET /v1/youtube/search/suggestions` | 1 | standard | Get YouTube search suggestions | | `GET /v1/youtube/video` | 1 | standard | Get YouTube video details | | `GET /v1/youtube/video/comment/replies` | 1-5 (metered) | custom | List YouTube comment replies 1 credit per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/youtube/video/comments` | 1-5 (metered) | custom | List YouTube video comments 1 credit per page, with the default labels (sentiment, question, purchase_intent, complaint) included free. label=spam, toxic or low_quality holds 4 extra credits and refunds down to 1 credit per started 25 comments that were newly judged: comments already labelled are free, a page where nothing could be judged refunds the whole extra, and a cached page is free. | | `GET /v1/youtube/video/subtitles` | 1 | standard | Get a YouTube video's subtitle files | | `GET /v1/youtube/video/thumbnails` | 1 | standard | Get a YouTube video's thumbnail files | | `GET /v1/youtube/videos/trending` | 1-6 (metered) | custom | Get trending YouTube videos 1 credit for the page. include=channel adds 1 credit per distinct channel filled, at most 5 per 50 channels; channels that could not be read are refunded, and a repeat of the same call within the cache window costs 0. | ## How a charge is applied | Case | What happens | | ---- | ------------ | | Successful call | The listed credits are deducted when the response is dispatched. | | Cache hit (`"cached": true`) | 0 credits. See [Credits](/docs/credits.md#are-cache-hits-free). | | Upstream error, 5xx, empty-body 404 | The deduction is refunded automatically. See [Credits](/docs/credits.md#when-are-credits-refunded). | | Idempotent retry | Charged once per `Idempotency-Key` for 24 hours. A replay reports `credits_used: 0` and `idempotent_replay: true`. | | Balance check (`GET /v1/credits/balance`) | 0 credits, always. | Two cases work differently and are worth reading before you leave one running. **Async jobs and browser sessions hold, then refund.** `POST /v1/web/crawl`, `POST /v1/web/batch-scrape`, `POST /v1/web/agent` and `POST /v1/web/sessions` deduct an upper-bound hold *before* the upstream call, then refund the unused portion when the job settles or the session closes. Your balance drops at submit time by the hold shown in the table above, not by a flat per-call price. A job that fails upstream is refunded in full. **Monitors bill on every check.** Creating a monitor is free. Each scheduled check bills its upstream cost plus 1 credit for orchestration, and keeps billing on your cadence until you pause or delete it. At the tightest 5-minute cadence that is 288 checks a day. The create response returns `credits_booked`, the upstream cost of one check, so budget `(credits_booked + 1) x checks per month`. On billed responses, `credits_remaining` and `X-Credits-Remaining` are authoritative. Free cache hits return `credits_remaining: null` and omit the header because they do not establish an authoritative post-request balance. Idempotent replays return the current balance when their lookup succeeds; otherwise they return `credits_remaining: null` and omit the header. Routes that explicitly model an unavailable balance, including endpoint-parameter validation and best-effort metadata, omit both fields when their balance read fails. ## Related - [Credits](/docs/credits.md): How charging, refunds, cache hits, and balance checks work. - [Which endpoint should I use?](/docs/choosing-endpoints.md): The endpoint pairs developers confuse, compared side by side with prices. - [Rate limits](/docs/rate-limits.md): Per-key request and concurrency limits, and what a 429 looks like. - [API reference](/docs/api-reference.md): Every endpoint with parameters, response schemas, and a playground.