Ranked feed of public conversations where people seek alternatives to or are switching from a competitor.
Runs three exact-intent phrases ('alternative to X', 'X vs', 'switching from X') through content_analysis search in parallel, plus a Reddit (sort=new) and a Hacker News leg, then dedupes them into one feed. Since methodology leads/2 the ranking is judged: an AI classifier reads each candidate and answers five narrow questions (what the author is doing, whether the row is about the competitor product rather than a namesake, whether the author is a vendor, whether your offer would help them, how urgent the need is), and code combines those answers with recency and engagement into lead_score = (0.35 x P(asking, comparing or switching) + 0.20 x P(fits offer) + 0.15 x urgency/3 + 0.15 x recency + 0.15 x engagement) x P(about) x (1 - P(vendor)). Each lead carries intent { label, probabilities, about, seller, fits_offer, urgency, confidence } and lead_score; the label reads 'uncertain' when the classifier has no clear winner. Rows with P(about) below 0.3 (the snowflake on a Christmas jumper) are removed and their URLs listed in dropped_ids. The keyword intent_score and phrase_matched from leads-v1 are still on every row, and if the classifier is unavailable the feed falls back to that keyword order with _warnings: ['intent_unavailable'], intent: null and lead_score: null ('intent_partial' when only some rows could be judged). Conversation-level intent only: page-level matching, no author PII harvesting (web leads carry no handle by design, and no handle is sent to the classifier). Coverage spine is the three CA legs and does not depend on the classifier: <0.5 succeed → 50% refund; all five legs fail → full refund. Registers cleanly for a recurring-lead-feed monitor.
Request
- Base URL: https://www.socialcrawl.dev/v1
- URL: https://www.socialcrawl.dev/v1/prism/leads
- Auth: API key in header x-api-key
Query parameters
The competitor/product to mine alternative-seeking conversations for (≤80 chars).
Optional disambiguator appended to the social queries to cut cross-domain noise (e.g. 'project management').
Recency floor. Nd/Nw/Nm (e.g. 30d) or an ISO date. Default 30d.
Set comments to attach top-thread Reddit comments to the top leads.
Max leads in the fused feed (1-100, default 50).
What you sell, in one or two plain sentences (max 300 chars). Used to judge whether each author would plausibly be helped by it (intent.fits_offer). Default: 'alternatives to {competitor}'.
Headers
Send no-cache to bypass the response cache and force a live fetch. Billed at the normal endpoint cost; the fresh result is written back to cache for the next caller. Only the no-cache directive triggers this. See the Response Schema guide for details.
Optional UUID that makes the request safely retriable. The key is reserved atomically per account before billing. A concurrent retry receives 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After of 1 second while the original is young, growing to a quarter of the time it has been running (at most 30); a crashed reservation expires after 5 minutes. A replay keeps the cached payload immutable except for billing metadata: credits_used becomes 0, idempotent_replay becomes true, and credits_remaining is refreshed to the current balance. A known current balance appears in both the body and X-Credits-Remaining header; no balance row resolves to 0. On a transient lookup failure, body credits_remaining is null and X-Credits-Remaining is omitted. Completed outcomes expire after 24 hours. If the claim store is unavailable, the request fails closed before billing. GET endpoints do not combine idempotent replay with Server-Sent Events: use Accept: application/json when sending this header. The unsupported key-plus-SSE combination is rejected before billing.
Response
Successful response
Example response
{
"success": true,
"platform": "prism",
"endpoint": "/v1/prism/leads",
"credits_used": 1,
"credits_remaining": 4999,
"request_id": "req-abc123",
"idempotent_replay": true,
"meta": {
"hint": {
"code": "search_multi",
"message": "You searched \"matcha\" on 3 platforms one call at a time; /v1/search/multi returns each platform's own search rows in one call at the same price per platform, and a platform with no rows is not charged.",
"method": "GET",
"path": "/v1/search/multi?query=matcha&platforms=instagram,tiktok,youtube"
}
}
}Changes
No recorded changes to this operation across all 1 revision of this API.