Social Listening Leads API: Commenters Who Want to Buy
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, 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.
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.
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.
{
"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.
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.
{
"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.
{
"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. YouScan 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.
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.
{
"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. 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.
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. This section is one handle page.
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.
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.
{
"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 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. 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.
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. The written guide for these Prism composites is the Prism docs. The reference entries are comment-leads, leads, mentions, and brand-mentions.
Packaged products and their list prices are a different job, covered in the tools roundup.
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, and the credit rules are 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. 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.
Related posts
Best API for product review sentiment: 5 credits
Ten Amazon reviews came back labelled at 5 credits. The best API for product review sentiment is that review page, and turning labels off still cost 5.
Best influencer outreach API: accounts, email, and id
Seven calls cost 48 credits. The best influencer outreach api leaves contact_email null when a bio has no address, and stores the stable YouTube channel id.
Best Multi-Platform Social Search API: 129 Rows, 4 Credits
Best multi-platform social search API: one coldplay call returned 129 rows from TikTok, Instagram, YouTube, and Reddit. Four sources were billed 1 credit each.
