Influencer marketing API
YouTube sponsorship data, in JSON
Who sponsors whom across 250k+ indexed channels, how often, and what the next placement should cost. Pass a handle like @mkbhd or a brand name like NordVPN. There are no internal IDs to look up first.
Bearer token auth. Lookups are free; only AI search and new emails spend credits.
AI search: describe the list, skip the filters
curl -X POST "https://sponsorship.so/api/v1/searches" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "US tech creators with 100k to 500k subscribers sponsored by AI products",
"search_type": "youtube-channel",
"limit": 20
}'
Request and response
Four calls that do most of the work
Real payloads, trimmed for width. Pick a job and read exactly what comes back.
Who has paid this creator, and how often?
One call returns the channel plus every brand that has sponsored it, ranked by volume. This is the call most people wire into a lead list.
Request
curl "https://sponsorship.so/api/v1/youtube_channels/@mkbhd/sponsors?limit=3" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
{
"channel": {
"name": "Marques Brownlee",
"handle": "@mkbhd",
"subscriber_count": 21100000,
"sponsorship_count": 218,
"has_contact_email": true,
"url": "https://sponsorship.so/youtube-channels/3d2d35ed..."
},
"brands": [
{ "name": "dbrand", "sponsored_videos_count": 111 },
{ "name": "Ridge", "sponsored_videos_count": 18 },
{ "name": "ExpressVPN", "sponsored_videos_count": 10 }
]
}
How much does this brand actually spend on YouTube?
Pass a brand name instead of hunting for an ID. One payload tells you how much they buy, who to email, and where their partner program lives.
Request
curl "https://sponsorship.so/api/v1/brands/NordVPN" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
{
"name": "NordVPN",
"website": "https://nordvpn.com/",
"sponsorships_count": 47759,
"youtube_channel_count": 8240,
"youtube_video_count": 38169,
"emails": ["support@nordvpn.com"],
"sponsorship_url": "https://nordvpn.com/influencers/",
"url": "https://sponsorship.so/brands/e6d2897c..."
}
What should this placement cost?
We read niche, audience split, and format off the channel itself. Override any of them when you know better than we do.
Request
curl "https://sponsorship.so/api/v1/youtube_channels/@Fireship/sponsorship_estimate?sponsorship_type=integration" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
{
"estimate": {
"currency": "USD",
"cost_low": 36696,
"cost_high": 56415,
"cpm_low": 50.4,
"cpm_high": 75.6,
"projected_views_low": 582477,
"projected_views_high": 895474
},
"channel_stats": {
"sponsorship_opportunity_rating": 56,
"engagement_rate_percent": 3.14,
"sponsorship_renewal_rate_percent": 42.86,
"total_sponsoring_brands": 49
},
"pros": ["Large audience reach", "Highly consistent upload schedule"]
}
Describe the list you want. Skip the filters.
Send a sentence and a model turns it into filters — niche, subscriber range, country, sponsor history — across every indexed brand and channel. The search costs 5 credits and comes back with an id we keep on your workspace, so every later refresh re-runs those filters against fresh data for nothing.
Request
# New AI search — 5 credits
curl -X POST "https://sponsorship.so/api/v1/searches" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "query": "brands that sponsor small ai creators", "search_type": "brand" }'
# Re-run it later from the stored filters — free
curl "https://sponsorship.so/api/v1/searches/256?limit=25" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
{
"id": 256,
"name": "Brands sponsoring small AI creators",
"search_type": "brand",
"query": "brands that sponsor small ai creators",
"total_count": 256,
"web_url": "https://sponsorship.so/brands?q[subscriber_count_lteq]=100000...",
"results": [
{ "name": "Squarespace", "sponsorships_count": 35704, "youtube_channel_count": 2696 },
{ "name": "Insta360", "sponsorships_count": 7991, "youtube_channel_count": 1360 },
{ "name": "Beacons AI", "sponsorships_count": 6034, "youtube_channel_count": 631 }
]
}
Trimmed from real responses in August 2026. Your workspace sees today's numbers.
Use cases
What people wire it into
Most of these run on a schedule and never involve a person until there's something worth reading.
Enrich a creator list you already have
Push handles in, get subscriber counts, sponsor history, and whether we hold a contact email. Bulk import handles the channels we have never seen.
Watch what competitors are buying
Poll a brand's recent sponsored videos on a schedule and alert your team the week a rival starts testing a new set of creators.
Score leads before a human reads them
Combine sponsor count, renewal rate, and a price estimate to sort a 500-channel list into the 20 worth a personal email.
Give your own agent a data source
Same endpoints, same token. If you already built an outreach agent, this is the tool call that stops it inventing rates.
Endpoints
Every influencer marketing API endpoint, on one screen
Every :id accepts a UUID, a YouTube channel ID, a handle, or an exact brand name. Ask for a channel we haven't indexed and we import it on the spot.
Creators
-
GET /api/v1/youtube_channels/:idAudience stats and top sponsors -
GET /api/v1/youtube_channels/:id/sponsorsEvery brand that has paid them -
GET /api/v1/youtube_channels/:id/sponsored_videosRecent sponsored uploads -
GET /api/v1/youtube_channels/:id/similarLookalike channels -
GET /api/v1/youtube_channels/:id/sponsorship_estimatePrice, CPM, and CPV -
POST /api/v1/youtube_channels/:id/email_searchContact email -
GET /api/v1/youtube_channels/topRanked creators -
POST /api/v1/youtube_channels/bulkImport handles in bulk
Brands
-
GET /api/v1/brands/:idProfile, emails, and partner page -
GET /api/v1/brands/:id/creatorsCreators the brand has sponsored -
GET /api/v1/brands/:id/videosRecent collaborations -
GET /api/v1/brands/:id/statsCategories, countries, and reach -
GET /api/v1/brands/:id/similarBrands that buy like this one -
GET /api/v1/brands/most_activeWho is buying right now
AI search
-
POST /api/v1/searchesTurn a sentence into a filtered list -
GET /api/v1/searchesEvery search this workspace has run -
GET /api/v1/searches/:idRe-run one free from its stored filters
You pay for thinking, not for reading
An AI search costs 5 credits because a model turns your sentence into filters. A newly found email costs 1. Profiles, sponsor history, similar entities, rankings, price estimates, re-runs of a search you already ran, and bulk import cost nothing.
Rate limits
120 requests per minute and 2,000 per hour per workspace, shared with MCP. Search creation is capped at 10 per minute. Limited responses return 429 with Retry-After, so a well-behaved client just waits.
"Being able to discover creators in bulk, organize campaigns, and estimate charges upfront saves us countless hours every week. It's become an essential tool for our marketing team."
![]()
Nuno Sancha
Marketer at
TRMNL
FAQ
Frequently asked questions
A few minutes. Generate a bearer token in account settings, send one curl request with a channel handle, and the sponsor history comes back as JSON. There is no sandbox to apply for and no onboarding call.
Channel stats and every brand that has sponsored a creator, recent sponsored videos, brand profiles with emails and partner pages, the creators a brand pays, similar channels and brands, price and CPM estimates, and ranked lists. Each record includes a url that opens the same page in the app.
No. Pass @mkbhd, a UC… YouTube ID, our UUID, or a brand name like NordVPN. Ask for a channel we have not indexed and we import it while you wait.
Everything except two things. Channel profiles, sponsor history, brand stats, similar entities, rankings, price estimates, re-runs of a search you already ran, and bulk import are all free. A new AI search costs 5 credits; an email costs 1 credit, and only when we actually find a new one.
We detect sponsorships from videos continuously, and you can force a refresh for any channel you care about with a free fetch call. Estimates are recalculated from the channel's recent views rather than cached indefinitely.
Use REST when your code decides what to call: cron jobs, n8n, Make, enrichment pipelines. Use MCP when a model decides. Same data, same account, same credits, so you can run both.
120 requests per minute and 2,000 per hour per workspace, shared with MCP. Search creation is capped at 10 per minute and video fetches have their own tighter limit. Limited responses return 429 with Retry-After.
It's on the plans that list REST API and MCP access. Once you're on one, generate a bearer token in account settings and start calling. There is no separate API subscription and no per-call invoice.
Get sponsorship data into your stack
Generate a token and pull sponsor history, price ranges, and contact details across 250k+ channels with a single request. Want your assistant making the calls instead? The same data is available over MCP.
Token in one click. No separate API bill. Cancel anytime.