Creator discovery
Search public profiles by niche, topic or brand phrase before qualifying them.
YouTube creator search API
Search public YouTube creators or channels by keyword, then use the returned profiles as inputs for profile and posts APIs.
Input: Creator keyword. Returns: a page of results with a cursor for the next, in YouTube's own field names. Price: 1 credit per call; failed reads are free.
GET /v1/youtube/creators/search
See it in action
The snippets use q for the search term. Replace the sample keyword with the phrase your workflow is tracking.
Start from a valid shape, then replace the sample value with your public target.
Selected coffee creator
Open
Use a server-side key and send parameters as query values.
https://api.sourcevine.io/v1/youtube/creators/search curl -G 'https://api.sourcevine.io/v1/youtube/creators/search' \
-H 'Authorization: Bearer sv_live_...' \
--data-urlencode 'q=coffee creator' \
--data-urlencode 'limit=20' const params = new URLSearchParams({
"q": "coffee creator",
"limit": "20",
});
const res = await fetch('https://api.sourcevine.io/v1/youtube/creators/search?' + params, {
headers: { Authorization: 'Bearer sv_live_...' },
});
const body = await res.json();
console.log(body.data); import requests
r = requests.get(
"https://api.sourcevine.io/v1/youtube/creators/search",
params={"q": "coffee creator", "limit": "20"},
headers={"Authorization": "Bearer sv_live_..."},
)
body = r.json()
print(body["data"]) Every success includes availability, a fetch timestamp and billing context.
Hit Show sample response to see the response.
A real YouTube Channel Search API response, recorded against the public target above.
{
"data": {
"items": [
{
"url": "https://www.youtube.com/@CoffeeTheCreator",
"cached": false,
"handle": "CoffeeTheCreator",
"verified": false,
"avatarUrl": null,
"channelId": "UC5LjU7GKfAgKft0zY0nPHTA",
"fetchedAt": "2026-09-02T16:33:00Z",
"viewCount": null,
"videoCount": null,
"channelName": "CoffeeTheCreator",
"cacheAgeSeconds": null,
"sourceTimestamp": null,
"subscriberCount": null
},
{
"url": "https://www.youtube.com/@CoffeeCreator08",
"cached": false,
"handle": "CoffeeCreator08",
"verified": false,
"avatarUrl": null,
"channelId": "UClawJFpCUjPkkWL4qeYM6fA",
"fetchedAt": "2026-09-02T16:33:00Z",
"viewCount": null,
"videoCount": null,
"channelName": "Coffee Creator ",
"cacheAgeSeconds": null,
"sourceTimestamp": null,
"subscriberCount": null
},
{
"url": "https://www.youtube.com/@brewedbyanna",
"cached": false,
"handle": "brewedbyanna",
"verified": false,
"avatarUrl": null,
"channelId": "UCdG8NKn8LCC8aDM54xU0S7A",
"fetchedAt": "2026-09-02T16:33:00Z",
"viewCount": null,
"videoCount": null,
"channelName": "Anna | Coffee Creator",
"cacheAgeSeconds": null,
"sourceTimestamp": null,
"subscriberCount": null
}
],
"cached": false,
"fetchedAt": null,
"nextCursor": null,
"cacheAgeSeconds": null
},
"success": true,
"available": true
} Ship it anywhere
We build and maintain theseFirst-party surfaces, versioned with the API.
Works anywhere that can make an HTTP requestNo plugin to install, and none to wait for.
Response
Each response includes typed availability, a fetch timestamp, and only the public fields this API promises.
| Field | Type | Meaning |
|---|---|---|
| items | array | Public YouTube profiles or channels matching the keyword. |
| items[].url | string | Canonical public profile or channel URL. |
| items[].username | string | Platform handle or channel handle. |
| items[].subscriberCount | integer | null | Public audience count when available. |
| items[].cached | boolean | Matches the page provenance on cached reads. |
| nextCursor | string | null | Pass as cursor to request the next page. |
| fetchedAt | ISO datetime | When Sourcevine read the public page. |
| sourceTimestamp | ISO datetime | null | The platform timestamp when it is available. |
| cached | boolean | True when this answer repeats an identical request made moments earlier. |
| cacheAgeSeconds | integer | Seconds since the reading was taken. |
Request flow
Send a creator keyword. Sourcevine normalizes the query and returns a cursor page.
A missing or empty keyword is refused before any fetch, and not charged.
The public data is read when you call. An identical request moments earlier is answered again, free.
Deleted, private and unsupported resources return explicit statuses, so clients can stop retrying facts about the world.
YouTube names stay intact, so your code reads subscriberCount instead of reverse-engineering a generic schema.
fetchedAtcreditsChargedavailableEvery response carries fetchedAt and the platform timestamp, so you know how old a reading is before you act on it. YouTube Channel Search API fits recurring creator search checks in dashboards, spreadsheets, workflows and agents.
Boundaries
Bios, email addresses, phone numbers, postal addresses and messenger handles are outside the response contract.
Private accounts, restricted content and unavailable resources return typed availability instead of guessed data.
Creator search returns public profile identity and metrics, not email discovery, bio scraping or audience demographics.
Use cases
Search public profiles by niche, topic or brand phrase before qualifying them.
Attach public profile URLs and audience counts to research queues.
Build a first-pass list, then call profile and posts APIs on the accounts that fit.
Give an agent a scoped creator-search endpoint rather than open-ended browsing.
Pricing
The response and X-Credits-Charged header tell you what
happened, including when it is zero.
Charged1 credit
Not charged0 credits
FAQ
Search public YouTube creators or channels by keyword, then use the returned profiles as inputs for profile and posts APIs.
A call costs 1 credit, including an empty result. Retrieval failures are not charged.
The request returns available=false with a typed availability status. Not-found and private results are charged like any lookup; unsupported URLs and retrieval failures are not.
No. Bios, emails, phone numbers, postal addresses and private or restricted content are outside the public response contract.
No. Your integration authenticates with a Sourcevine API key. You do not need to supply YouTube credentials or a session.