# Social Listening Leads API: Commenters Who Want to Buy (https://www.socialcrawl.dev/blog/social-listening-leads-api) > A social listening leads api returned 0 leads from 25 Figma comments, 14 serum leads (10 were price asks or pp), 20 ranked pages, and labels on 20 rows. A social listening leads api is four Prism calls. On 2026-10-12 a Figma comment search returned 0 leads from 25 judged comments, and a serum search returned 14 leads from 117 judged comments. Ten of those 14 are price asks or exactly "pp". Pages that rank for social listening api, such as [API Direct's 2026 list](https://apidirect.io/blog/social-listening-api), rank vendor APIs and do not show these four calls. The routes are `GET /v1/prism/comment-leads`, `GET /v1/prism/leads`, `GET /v1/prism/mentions`, and `GET /v1/prism/brand-mentions`. The captures used a dev key. The design-tool calls used the public brand Figma, and one later call used a consumer serum offer. TikTok is the only network the comment route searches. It opens some posts and reads comments on those posts alone. The buyer feed, the handle page, and the brand label pass are separate calls. Read the rows before you write to anyone. The serum line "Adding to my cart!!" sits next to price asks, and the top ranked page is a Notion notes article. Comment leads from a short-video search: a few opened posts sit beside a small stack of shopping tags, while most videos stay closed. ## How do you find social media lead generation in comments? `GET /v1/prism/comment-leads` searches TikTok posts, opens some of them, and reads comments on the opened posts only. Comment leads are comments that clear the offer you pass in. Posts left closed contribute no comments to the result. Two calls from 2026-10-12 show a tight open cap on a design-tool query, and a wider open cap on a serum query. ### What did `figma alternative` return with `open=1`? The offer was "A collaborative interface design tool for product teams." The query was `figma alternative`. The caps were `posts=30`, `open=1`, and `comments_per_post=25`. ```bash curl -G "https://www.socialcrawl.dev/v1/prism/comment-leads" \ -H "x-api-key: $SOCIALCRAWL_API_KEY" \ --data-urlencode "query=figma alternative" \ --data-urlencode "offer=A collaborative interface design tool for product teams." \ --data-urlencode "posts=30" \ --data-urlencode "open=1" \ --data-urlencode "comments_per_post=25" ``` The call charged 3 credits. It held 3 and refunded 0. It judged 25 comments on the one opened post and returned 0 leads. `gate_skip_below` was 0.3. With `open=1`, a post can clear that gate and still stay closed. One skipped post had `buyer_comments` 0.3 and 68 reported comments. Another skipped post had `buyer_comments` 0.11 and 63 reported comments, under the gate, and stayed closed. The warning `post_gate_partial` is the skip with 9 reported comments and a null gate, closed as `over_open_limit`. ```json { "credits_used": 3, "economics": { "posts_searched": 30, "posts_opened": 1, "comments_judged": 25, "leads": 0, "credits": { "held": 3, "refunded": 0, "total": 3 } }, "_warnings": ["post_gate_partial"], "gate_skip_below": 0.3 } ``` Those 25 comments are the only ones this request judged. This request never read the closed posts, including the one with 68 reported comments. A larger `open` would fetch a different set. ### What did a vitamin C serum offer return with `open=5`? The later call used a consumer offer, "A vitamin C serum for acne." The query was `vitamin c serum acne`. The caps were `posts=20`, `open=5`, and `comments_per_post=30`. The Figma counts are a separate call. ```bash curl -G "https://www.socialcrawl.dev/v1/prism/comment-leads" \ -H "x-api-key: $SOCIALCRAWL_API_KEY" \ --data-urlencode "query=vitamin c serum acne" \ --data-urlencode "offer=A vitamin C serum for acne." \ --data-urlencode "posts=20" \ --data-urlencode "open=5" \ --data-urlencode "comments_per_post=30" ``` It searched 20 posts, opened 5, and judged 117 comments. Leads came back as 14. The envelope held 12, charged 11, and refunded 1. The hold had assumed 150 comments. The call judged 117, and one label credit came back. ```json { "credits_used": 11, "economics": { "posts_searched": 20, "posts_opened": 5, "comments_judged": 117, "leads": 14, "credits": { "held": 12, "refunded": 1, "total": 11 } }, "_warnings": ["post_gate_partial"] } ``` @lifeewithalliee wrote "Adding to my cart!!" on 2026-10-09, with `purchase_intent` 0.93, `fits_offer` 0.8, `spam` 0.04, and 0 likes. The post under that comment had `buyer_comments` 0.91. ```json { "username": "lifeewithalliee", "text": "Adding to my cart!!", "kind": "buyer", "likes": 0, "purchase_intent": 0.93, "fits_offer": 0.8, "spam": 0.04 } ``` Ten of the 14 leads came from one opened post whose gate was null. That post is @sannie.ugc. It reported 21 comments, the call fetched 12, and the missing gate is why `post_gate_partial` is on this body too. The busiest opened post reported 161 comments. The call fetched 30 of them and took 0 of the 14 leads from that video. Ten of the 14 texts are price asks or exactly "pp". Three of those texts are the two letters alone. They cleared `purchase_intent` at or above 0.5, `spam` under 0.5, and `fits_offer` at or above 0.5, and every returned `kind` is `buyer`. Read the price asks and the "pp" lines before you treat the 14 as qualified buyers. Scoring every comment for sentiment is covered in [comment sentiment analysis](/blog/comment-sentiment-analysis-api). [YouScan](https://youscan.io/blog/boolean-operators) still writes buying intent as a product name plus words such as "recommend". The "pp" texts and the price asks still cleared the probability rule on this call. ## What ranked first on the Figma buyer feed? `GET /v1/prism/leads` ranks web pages for a competitor, a product category, and an offer. This 2026-10-12 call set `competitor=figma`, `product_category=design tool`, `limit=20`, and `freshness=30d`. The offer was the same design-tool sentence as the Figma comment search. ```bash curl -G "https://www.socialcrawl.dev/v1/prism/leads" \ -H "x-api-key: $SOCIALCRAWL_API_KEY" \ --data-urlencode "competitor=figma" \ --data-urlencode "product_category=design tool" \ --data-urlencode "offer=A collaborative interface design tool for product teams." \ --data-urlencode "limit=20" \ --data-urlencode "freshness=30d" ``` The registry list price is 50 credits. This call charged 25. Coverage was 1/3 and `partial_failure` was true. The feed kept 20 web pages. `dropped_ids` holds 36 URLs. The body does not say why each URL was dropped. `author_handle` is null on all 20 kept rows, so there is no handle to contact. No Reddit row and no Hacker News row stayed in the kept feed. Seven Reddit URLs sit in `dropped_ids`. The top `lead_score` is 0.405. The label is `uncertain`. The title is "Why Notion is the #1 Notes & Productivity Application". `phrase_matched` is `switching from figma`. The excerpt starts "In my personal and professional career in the creative space, I was consistently craving for an all-around solution to handle all my notes, todo lists, image archives, Moodboards,". The page is about Notion as a notes app, and `author_handle` is null. ```json { "lead_score": 0.405, "title": "Why Notion is the #1 Notes & Productivity Application", "phrase_matched": "switching from figma", "author_handle": null, "intent": { "label": "uncertain", "about": 0.77, "fits_offer": 0.6, "seller": 0.13 } } ``` No kept row is labelled `asking_for_recommendation` or `switching_away`. The labels on the 20 rows are `news_or_discussion` (7), `comparing_options` (6), `uncertain` (4), `other` (2), and `promoting` (1). The next two titles are Canva seat-pricing pages, scores 0.368 and 0.357, both `comparing_options`. `phrase_matched` is `switching from figma` on 10 rows, `figma vs` on 7, and `alternative to figma` on 3. People who say they left a named competitor are covered in [finding switchers](/blog/find-customers-switching-from-competitors). This feed labelled nobody `switching_away`. ## How do you look up a handle, a URL, or a name? `GET /v1/prism/mentions` accepts a handle, a url, or a name. This 2026-10-12 run passed `handle=figma` with no @ sign, and `platforms=twitter`. It did not pass `url` or `name`, so there is no captured page for those two modes. A brand mention api response here is one code-checked handle page. The charge was 1 credit. A call that omits `platforms` holds 3. Naming Twitter held 1. ```bash curl -G "https://www.socialcrawl.dev/v1/prism/mentions" \ -H "x-api-key: $SOCIALCRAWL_API_KEY" \ --data-urlencode "handle=figma" \ --data-urlencode "platforms=twitter" ``` Twenty rows came back, all on Twitter, from 17 authors. Nineteen are `match_kind` mention and one is a reply. Every text contains `@figma`. `dropped_unverified` is an empty object, which is not a measured zero on a named platform. `not_covered` lists 9 gaps even though the request named only Twitter. Facebook, Threads, and TikTok are not searched. Bluesky and LinkedIn are not covered, and neither are private or deleted posts. Instagram comments on posts you do not already know, Instagram caption mentions, and TikTok comment search are absent from this result. The rows run from 2026-10-11T13:37:23Z through 2026-10-11T15:41:21Z. That span is the first page of the search, not a mention volume. @as_if_so, a mention at 2026-10-11T15:41:21Z, wrote "Folder - Hover animation Made in @figma and @motiondotdev https://t." @hellonearthis, the reply at 2026-10-11T15:25:51Z, wrote "@figma @grok review this product, be honest and blunt". Building your own monitor is covered in [the monitoring write-up](/blog/social-media-monitoring-api). This section is one handle page. Brand mentions sorted on a table: a few design-tool artboards set apart from a larger pile of action-figure boxes that share the same name. ## Which brand mentions are about the design tool? `GET /v1/prism/brand-mentions` takes a keyword, a window, and a brand description, then scores recent rows. This 2026-10-12 call labelled brand mentions for `keyword=figma`, from 2026-09-12 to 2026-10-12, with the description "Figma is a collaborative interface design tool for product teams." The envelope charged 50 credits. Rows under the cutoff stay in the array. ```bash curl -G "https://www.socialcrawl.dev/v1/prism/brand-mentions" \ -H "x-api-key: $SOCIALCRAWL_API_KEY" \ --data-urlencode "keyword=figma" \ --data-urlencode "date_from=2026-09-12" \ --data-urlencode "date_to=2026-10-12" \ --data-urlencode "brand_description=Figma is a collaborative interface design tool for product teams." ``` Of 20 recent rows, 4 have `about_brand` at or above 0.5 and 16 do not. Those 16 were not removed from `recent_mentions`. Their URLs remain in that array and in `not_about_brand_ids`. `about_brand_share` on this page is 0.2, which is 4 of these 20 rows, not a share of `total_count`. ```json { "credits_used": 50, "total_count": 3931232, "count_scope": { "total_count": "all_time, all page_types" }, "windowed_total_count": 0, "trajectory": { "volume_direction": "flat", "window": { "from": "2026-09-12", "to": "2026-10-12", "buckets": 0 } }, "mention_labels": { "rows": 20, "about_brand": 4, "not_about_brand": 16, "about_brand_share": 0.2, "about_brand_at_or_above": 0.5 } } ``` The 0.93 row is English, "Test every breakpoint at once." Its snippet says "Overlay your Figma mockups directly over live responsive breakpoints to inspect sub-pixel alignment, typography baselines, and element sizing." The 0.78 row is Polish, "Projektowanie stron Szczecin". Its snippet says "Jednym z najpopularniejszych narzędzi jest Adobe XD lub Figma, które pozwalają na tworzenie prototypów oraz makiet stron internetowych." The 0.53 row is Japanese. The title is a Monster Hunter figure listing ("モンハン フィギュア"). The snippet also contains "figma NieR Automata Ver1.1a 2B", a figure line. The 0.57 row is Chinese, a Toys "R" Us 1/12 store-scene set. The snippet uses "figma" for the action figure ("讓你的 figma 出去上班"). Two of the four titles at or above 0.5 are action figures. The other 16 rows stayed in `recent_mentions`. ### Why is 3,931,232 not a 30-day brand total? `total_count` is 3,931,232. The response scopes it as all-time, all page types. The window on the request was 2026-09-12 through 2026-10-12. The number is also not limited to rows about the design tool. The keyword collides with the figma figure line, which is the Monster Hunter title and the Toys "R" Us title on this page of 20. [Talkwalker](https://www.talkwalker.com/blog/perfect-social-listening-query) describes the same collision when a brand name is also a colour or a fruit. The trend leg returned HTTP 400. `windowed_total_count` is 0 and the timeline is empty. `volume_direction` is the string "flat" on a window with 0 buckets. Flat here is that empty window. It is not a measured month of volume, and 3,931,232 is not a 30-day total. ## How do you start using this? Create a [SocialCrawl key](/auth/register). Put one API key in the header as `$SOCIALCRAWL_API_KEY`. Start with `GET /v1/prism/comment-leads` and an offer that describes what you sell. Swap the query and the offer. ```bash curl -G "https://www.socialcrawl.dev/v1/prism/comment-leads" \ -H "x-api-key: $SOCIALCRAWL_API_KEY" \ --data-urlencode "query=YOUR_QUERY" \ --data-urlencode "offer=YOUR_OFFER" \ --data-urlencode "posts=30" \ --data-urlencode "open=1" \ --data-urlencode "comments_per_post=25" ``` The other three calls in this post were leads with `competitor=figma`, `product_category=design tool`, the design-tool offer, `limit=20`, and `freshness=30d`; mentions with `handle=figma` and `platforms=twitter`; and brand-mentions with `keyword=figma`, `date_from=2026-09-12`, `date_to=2026-10-12`, and the same design-tool sentence as `brand_description`. The indexes move, so a replay will not return these rows. Envelope `credits_used` on this 2026-10-12 run was 3 for the Figma comment search (held 3, refunded 0), 25 for leads, 1 for mentions, and 50 for brand-mentions. Those four sum to 79. The serum comment search was 11 more (held 12, refunded 1). The leads registry list price is 50. Coverage was 1/3 and `partial_failure` was true, so that call charged 25. Catalogue prices are on the [SocialCrawl API pricing page](/docs/endpoint-pricing). The written guide for these Prism composites is the [Prism docs](/docs/prism). The reference entries are [comment-leads](/docs/api-reference#tag/prism/GET/prism/comment-leads), [leads](/docs/api-reference#tag/prism/GET/prism/leads), [mentions](/docs/api-reference#tag/prism/GET/prism/mentions), and [brand-mentions](/docs/api-reference#tag/prism/GET/prism/brand-mentions). Packaged products and their list prices are a different job, covered in [the tools roundup](/blog/best-social-listening-tools). Send `GET /v1/prism/comment-leads` with the query and the offer you sell. The rows will differ from the 0 and the 14 in this post. ## Frequently asked questions ### What did the 2026-10-12 calls return? On 2026-10-12 the Figma comment search returned 0 leads from 25 judged comments. The serum comment search returned 14 leads from 117 judged comments. Ten of those 14 came from a post whose gate was null, and 10 of the texts are price asks or exactly "pp". The buyer feed kept 20 web pages, with `author_handle` null on every row. The handle call returned 20 Twitter rows. The brand call returned 20 recent rows, 4 of them with `about_brand` at or above 0.5. ### How do comment leads differ from people posting about a brand? Comment-leads reads TikTok comments on the posts it opened and returns a username with the comment text. The brand call scores web pages and leaves rows under the cutoff inside `recent_mentions`. One object is a commenter on a video. The other is a page in a web index. A null handle on a web page is a different outbound step from a TikTok username, so the two arrays stay separate. ### Can brand mentions drop same-name noise? On this call, no. Sixteen of the 20 recent rows stayed in the array. `about_brand` is a label, and `about_brand_share` on that page of 20 was 0.2. Two of the four rows at or above 0.5 are action-figure titles, a Monster Hunter listing and a Toys "R" Us scene set. `total_count` is 3,931,232, scoped as all-time and all page types. The 30-day trend leg returned HTTP 400. ### Which call finds a handle, a link, or a name? `GET /v1/prism/mentions` accepts a handle, a url, or a name. This run sent `handle=figma` and `platforms=twitter` only, and charged 1 credit. You get 20 rows, 19 mention and 1 reply, from 17 authors. `dropped_unverified` was an empty object. `not_covered` listed 9 gaps. The body is the first page of that search, not an index, and it has no Instagram caption mentions and no TikTok comment search. This run did not send a url or a name. ### Where do you read the credit cost before you call? The catalogue is [endpoint pricing](/docs/endpoint-pricing), and the credit rules are [credits](/docs/credits). This run's envelopes charged 3 (held 3, refunded 0), 11 (held 12, refunded 1), 25, 1, and 50. The 25 is what the buyer feed charged. The registry list price was 50, and coverage was 1/3 with `partial_failure` true. The Figma comment search, the leads call, the mentions call, and brand-mentions sum to 79. The serum comment search adds 11. Rate limits are documented at [rate limits](/docs/rate-limits). This pull did not measure one. ### How is this different from a packaged listening tool? Vendor roundups rank products and list prices. This post is five envelopes from 2026-10-12. You get a Figma comment search with 0 leads, a serum comment search with 14 leads, 20 ranked web pages, 20 Twitter rows for one handle, and labels on 20 recent rows. You can replay the requests with your own key. A packaged product's dashboard is a different job from these calls.