Your agent finds the creators
Creator search as an MCP server and REST API. Say who you want in plain language; a fresh search checks every candidate against your criteria and shows you the evidence.
Instagram, YouTube and LinkedIn search live · TikTok answers from cache · priced per result, not per seat.
Find handmade jewellery creators I could send samples to.
search_people({
platform: "tiktok",
query: "handmade jewellery creators",
limit: 3
}){
"usage": {
"operation": "cached_result",
"metered_results": 3,
"billed_results": 0,
"cost_usd": "0.00",
"credits": 0,
"plan": "free"
}
}- @nar_jewellery18,828 followers
IG: nar_jewellery & nar_grillz · Toronto Business
last_updated 28 May 2025
- @zoandcojewellery_16,756 followers
✨ A new era of everyday jewellery ✨ High Quality | Affordable Luxury
last_updated 28 May 2025
- @ideas_handmade15,800 followers
Интересные идеи handmade🐰ideas handmade🐰
last_updated 27 May 2025
- Cached rows carry the date they were collected, so you always know how old an answer is. Ask for
fresh: trueand the same call collects them again now.
Recorded 30 July 2026. The first tab is the keyless cache preview — you can run that exact call yourself further down this page.
Connect your agent
One line in your MCP client and your agent does the research itself — searching, verifying, and pricing its own work before it spends anything.
https://stormy.ai/mcpAuthorization: Bearer stm_live_...export STORMY_API_KEY=stm_live_...
claude mcp add --transport http stormy https://stormy.ai/mcp \
--header "Authorization: Bearer $STORMY_API_KEY"Then ask it, in your own words
“Find me 10 Instagram creators under 50k followers who post about other people's handmade jewellery — not brands selling their own — and show the usage receipt.”
Get a key — $10 of credit includedCount the tools yourself — the server lists them without a key:
curl -s https://stormy.ai/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'11 tools your agent can call
read from tools/list on load
search_peopleSearch one social network and return normalized public results, source URLs, and a usage receipt.
get_video_transcriptEverything said in a YouTube video, as text.
lookup_profileLook up one profile URL, handle, or channel ID and return normalized public fields plus a usage receipt.
find_emailsFind verified contact emails for 1-25 Instagram, TikTok, or YouTube profiles.
estimate_priceReturn the authoritative rate card and maximum workflow estimate without spending credits.
account_statusShow entitlements, remaining prepaid usage, and the checkout or top-up URL.
describe_social_dataReturn the machine-readable platform, field, pricing, reliability, and workflow contract.
start_social_jobQueue fresh, bulk, or email work with durable retries and status.
get_social_jobReturn status, progress, exact poll timing, result/error, and the complete timeline.
list_social_jobsList recent durable jobs, optionally filtered by any documented job status.
cancel_social_jobCancel a queued, scheduled, throttled, or retrying job before a worker starts it.
Fewer results, and the reason for each
Every candidate is checked against every criterion you gave, and the ones that fail are thrown away rather than used to reach the number you asked for.
- 01
Expand
Your sentence becomes search terms — every term required, not whichever one is broadest.
- 02
Collect
Candidates come back from the network, plus anything already in the cache from earlier runs.
- 03
Verify
A model checks each candidate against each criterion. Failures are dropped, with the quote that failed them.
- @bolaceyconstruction951 followers
Roofing | Siding | Baths📍Ohio
- is an actual roofing contractor or roofing company — metRoofing | Siding | Baths
- operates in Ohio — met📍Ohio
- posts their own project work — not metnone
- @roofprosplus545 followers
Roof Pros Plus
- is an actual roofing contractor or roofing company — met🛠️ Gutters, Fascias & Soffits
- operates in Ohio — not met🇨🇦 Made in Ontario for Ontario
- posts their own project work — metposts_count: 671
- @roof__expert19,216 followers
Roof_Expert_Dmitry
- is an actual roofing contractor or roofing company — metRoofing content🎥 is here👇🔨
- operates in Ohio — not metSeattle WA📍🇺🇸
- posts their own project work — metNew REELS🎞 every day📆
- @roofingpov_25,008 followers
Bruce P | Roofing POV
- is an actual roofing contractor or roofing company — met23 | SoCal Roofer
- operates in Ohio — not metSoCal Roofer
- posts their own project work — metPOV • Rooftops • Tools
returned as match_evidence on every result from search_people and start_social_job
Every one of those four was dropped. When nothing genuinely matches, the honest answer is an empty list — and that is the answer you get.
Run one yourself
No key, no signup. A real TikTok search against the same API a customer pays for, with the same receipt.
https://stormy.ai/api/v1/search TikTok · cached{
"platform": "tiktok",
"query": "handmade jewelry",
"limit": 3
}Press Run to call the live API.Every row carries last_updated, and the receipt says what it cost: a cached result is $0.01, and the anonymous preview bills you nothing at all.
What a run costs
You are charged per result that comes back, never per seat. Nothing matched means nothing billed, and every call returns a receipt saying exactly what it spent.
Cached result
profiles and posts already indexed
$0.01
Fresh profile
current profile data from the source
$0.05
Fresh discovery
per matching person returned
$0.08
Verified email
charged only when an email is found
$0.15
Live estimate
100 people
$23.00
- Fresh discovery
- $8.00
- Verified emails
- up to $15.00
Maximum shown — an email attempt that finds nothing costs $0.
{
"usage": {
"operation": "cached_result",
"metered_results": 3,
"billed_results": 0,
"cost_usd": "0.00",
"credits": 0,
"plan": "free",
"remaining_usage_usd": null
}
}That is the real receipt from the keyless run above — metered three, billed none. A call on your own key fills the same fields in: billed_results, cost_usd and remaining_usage_usd, so your agent can decide whether the next call is worth making. New accounts start with $10 of credit and no card — about 125 fresh creators, or 66 verified emails.
Where it looks
Four networks carry creator search today, and one of them is not live. You should hear that from this page rather than from your first query.
| Network | Status |
|---|---|
| InstagramBio, follower count, engagement rate, business category, posts with captions. | Live |
| YouTubeSubscribers, video counts and views, plus full transcripts with or without captions. | Live |
| LinkedInHeadline, followers, posting cadence and interaction averages. No email lookup here. | Live |
| TikTokNo live credential right now, so TikTok answers from what was collected earlier. Rows carry the date. | Cache only |
| X and RedditBoth endpoints accept them, neither is tuned for creator discovery — persona 06 in our benchmark is exactly this case. | Not tuned |
Two runs we measured on 30 July 2026: an Instagram search returned 10 of 10 matching profiles in about 29 seconds; the same shape of search on YouTube took about 8. Those are two runs with two queries, not an average and not a promise.
What comes back
Normalized profiles, the posts behind them, and a contact email where one exists. These are the field names your agent receives, per network.
TikTok26 fieldsSearch creators by niche, resolve any @handle to a live profile, read their videos with view and engagement counts, and enrich verified emails.
POST /searchPOST /profilePOST /emails
Search creators by niche, resolve any @handle to a live profile, read their videos with view and engagement counts, and enrich verified emails.
POST /searchPOST /profilePOST /emailsProfile data · 12 fields
Returned by /profile, and on each row of /search results.
idsec_uidhandlenicknameurlsignatureavatar_urlverifiedfollower_countfollowing_countlikes_countvideo_countPost data · 14 fields
Returned when you ask for posts with include_posts.
video_idurldescriptioncreate_timedurationviewslikescommentssharessavesimage_urlis_pinnedmusichashtagsLinkedIn26 fieldsSearch people and companies, resolve a profile URL to headline, follower count and posting cadence, and read posts with interaction breakdowns. No email lookup.
POST /searchPOST /profileno /emails on LinkedIn
Search people and companies, resolve a profile URL to headline, follower count and posting cadence, and read posts with interaction breakdowns. No email lookup.
POST /searchPOST /profileno /emails on LinkedInProfile data · 16 fields
Returned by /profile, and on each row of /search results.
idnamelinkedin_urlheadlinecountryfollowerstotal_postsposts_last_6_monthsposting_frequencyavg_likesavg_commentsavg_repostsavg_total_interactionstop_post_textlast_post_dateai_summaryPost data · 10 fields
Returned when you ask for posts with include_posts.
post_urltextheadlineposted_datetimetotal_interactionsnum_likesnum_commentsnum_repostsposter_nameposter_linkedin_urlYouTube24 fieldsSearch channels by topic, resolve a handle or channel id to subscribers and links, read videos including transcripts where published, and enrich verified emails.
POST /searchPOST /profilePOST /emails
Search channels by topic, resolve a handle or channel id to subscribers and links, read videos including transcripts where published, and enrich verified emails.
POST /searchPOST /profilePOST /emailsProfile data · 13 fields
Returned by /profile, and on each row of /search results.
channel_idhandlenameurlsubscribersdescriptionvideos_counttotal_viewsprofile_image_urlbanner_image_urlcountrykeywordslinksPost data · 11 fields
Returned when you ask for posts with include_posts.
video_idurltitledescriptionpublished_atdurationviewslikescommentsthumbnail_urltranscriptReddit16 fieldsSearch discussions across subreddits and read posts with score and upvote ratio. Author profiles carry karma and account age. No email lookup.
POST /searchPOST /profileno /emails on Reddit
Search discussions across subreddits and read posts with score and upvote ratio. Author profiles carry karma and account age. No email lookup.
POST /searchPOST /profileno /emails on RedditProfile data · 4 fields
Returned by /profile, and on each row of /search results.
authorauthor_urlkarmaaccount_created_atPost data · 12 fields
Returned when you ask for posts with include_posts.
idurlpermalinksubredditauthortitletextcreated_atscoreupvote_ratiocomments_countover_18Instagram22 fieldsSearch creators by niche, resolve a username to follower count, bio links and business category, read posts with engagement, and enrich verified emails.
POST /searchPOST /profilePOST /emails
Search creators by niche, resolve a username to follower count, bio links and business category, read posts with engagement, and enrich verified emails.
POST /searchPOST /profilePOST /emailsProfile data · 13 fields
Returned by /profile, and on each row of /search results.
usernamefull_namebiographyprofile_pic_urlfollower_countfollowing_countposts_countavg_engagement_ratebiolinkscountryis_verifiedis_business_accountbusiness_category_namePost data · 9 fields
Returned when you ask for posts with include_posts.
media_idpost_urlcaptiontaken_atlike_countcomment_countimage_urllocationcommentsMirrors GET https://stormy.ai/api/v1/capabilities → fields_by_platform, which is public and needs no key.
We test in public
Thirteen persona queries live in the repo beside the code that runs them — the exact wording, the network, the target count and the fill floor a run has to clear. Two of the floors are zero, because those queries are supposed to come back empty.
| # | Query | Asked for | Fill floor |
|---|---|---|---|
| 01 | fitness creators who post workout content at least weekly | 10 | 0.80 |
| 02 | roofing contractors in Ohio | 10 | 0.60 |
| 03 | med spas in Scottsdale Arizona doing botox and fillers | 8 | 0.60 |
| 04 | fractional CMO growth operator B2B mid-market | 8 | 0.60 |
| 05 | competitive pinball players who stream tournament runs | 5 | 0.40 |
| 06 | AI agents founders building developer toolsnetwork we do not claim | 5 | 0.00 |
| 07 | creators who post exclusively in Latin about medieval falconry techniqueshould return nobody | 5 | 0.00 |
| 08 | creadores de cocina casera mexicana que publican recetas en español | 8 | 0.60 |
| 09 | Handwerker aus Bayern die ihre Baustellen auf YouTube zeigen | 6 | 0.50 |
| 10 | long-form YouTube channels reviewing home espresso machines | 8 | 0.70 |
| 11 | skincare creators who review products they bought themselves | 20 | 0.75 |
| 12 | home cooking creators who share family recipesplus 500k followers and verified only | 10 | 0.20 |
| 13 | US creators Korean culture kbeauty | 8 | 0.60 |
The fill floor is the share of the target count a run must return to pass. Publishing the two queries we expect to fail is the point: a search product is worth what it refuses to return, and a harness that rewards filling the quota would teach the pipeline to invent matches. We are not publishing per-run scores here until the numbers are stable enough to stand behind — when they are, this table gets two more columns.
There is a REST API too
Same contract, same receipts, for when your own code is doing the calling. Bearer auth, three synchronous endpoints, and durable jobs with idempotency keys for bulk work. Everyone who has used Stormy so far came in through here — it works, it is simply the smaller door now.
curl -X POST 'https://stormy.ai/api/v1/search' \
-H 'Authorization: Bearer stm_live_...' \
-H 'Content-Type: application/json' \
-d '{"platform":"youtube","query":"home espresso reviewers","limit":10,"fresh":true}'Shipped recently
Commit subjects, unedited, with their dates.
- 30 Jul 2026Transcribe a YouTube video whether or not it has captions
- 30 Jul 2026Require every search term, not whichever one is broadest
- 29 Jul 2026Keep the product standing when ten people use it at once
- 28 Jul 2026Restore the 75s batch timeout that measured 6/6
- 26 Jul 2026Actually run a job worker
- 25 Jul 2026Stop the cached TikTok search scanning the table for impossible matches
Questions
What if nothing matches what I asked for?
You get fewer results, or none. Every candidate is checked against every criterion and the ones that fail are dropped rather than used to fill the count — and because you are charged per returned result, a search that finds nobody costs you nothing. Two of the thirteen benchmark personas exist to keep this true: one asks for creators who post exclusively in Latin about medieval falconry, and returning zero is how it passes.
Where does the data come from?
Public profiles and posts on the networks themselves. Anything collected on an earlier run is served from our cache and every row carries a last_updated date so you can see how old it is; ask for fresh: true and it is collected again now. The verification step never comes from cache — your criteria are checked against the profile on every run. Emails are found only where a creator published one.
Where does my API key live?
In your client's config, sent as an Authorization: Bearer header. Never in a URL, a request body, or an MCP tool argument — the server's own capabilities document says so, and no tool on it accepts a key as input. Keys are created in your account, revocation takes effect immediately, and nothing you type into the runner on this page is authenticated at all: it calls the API anonymously.
What does a typical run cost?
A cached result is $0.01. A fresh profile is $0.05. A verified matching person from a fresh search is $0.08, and a contact email is $0.15 charged only when one is found. Ten fresh creators is therefore $0.80, and the $10 you get at signup covers roughly 125 of them. There is no seat price and no minimum.
Is TikTok live?
No. TikTok has no live credential right now, so it answers from data collected earlier — real profiles with real numbers, stamped with the date they were collected. Instagram, YouTube and LinkedIn run live. We would rather label that here than let you find it in your first query.
How do I get help?
Email founders@stormy.ai and one of the two people who built this answers. If your agent is the one that is stuck, point it at llms.txt or have it call describe_social_data on https://stormy.ai/mcp — that returns the whole contract, machine-readable.
Point your agent at it
One line of config, $10 of credit, and creator research stops being your job.
https://stormy.ai/mcp