Skip to main content

Overview

CreatorDB supports searching YouTube, Instagram, and TikTok content. Search for specific videos, shorts, streams, reels, and image posts across every creator in the CreatorDB database. Each result carries the content’s own metadata and engagement metrics, plus a short summary about the content creator. This is the inverse of creator search.
  • Creator search: Answers “which creators match my criteria?” and returns a list of creators.
  • Content search: Answers “which posts match my criteria?” and returns a list of posts.
Use content search when the thing you are looking for is a post: a video sponsored by a competitor’s brand, a reel using a hashtag you are tracking, or the top-performing shorts in a category this week. To find creators instead, see Configuring Custom Search Filters and Examples. To pull a known creator’s recent posts, use that platform’s content-detail endpoint.

Before you start

  • Get an API key. For details, see Authentication.
  • Check your credit balance. Content search costs significantly more per call than creator search because each query scans every piece of content in the database rather than one creator’s recent posts. Read Credit cost before your first call.
  • Decide which platform you are searching. Cross-platform content search is not supported. Each platform has its own endpoint and its own filter allowlist.

How content search works

Send a POST request to the content-search endpoint for the platform you want:
Every request requires a filters array, a pageSize, and an offset. By default, results are sorted by publishTime in descending order (newest first). Set sortBy to change the order.

Request parameters

These parameters are the same on YouTube, Instagram, and TikTok.
Important: Request parameter limits
  • Filter count: Maximum of 10 filter objects per request.
  • Array value limit: When using the in operator, the array can contain a maximum of 100 string values.
  • Page size: The upper limit for pageSize is 100.
  • Fuzzy search: isFuzzySearch: true is only available on string fields.

Two kinds of filters

Every content-search allowlist is split into two groups, and you can combine them freely in a single request.
  • Content-level filters apply to the post itself: how many views it got, when it was published, which hashtags it uses, whether it is sponsored.
  • Creator-level filters apply to the account that published it: follower count, country, niche, audience demographics.
Combining the two is what makes the endpoint useful. “Reels with over 5,000 likes” is a content-level query. Adding “posted by US creators with a majority-female audience aged 18-24” layers creator-level filters onto the same call.

Filter behavior to know before you start

Five filters behave differently from what their names suggest. Read these before building a query.

publishTime counts days, not timestamps

The publishTime filter accepts a number of days ago, not a Unix timestamp. To find content from the last 30 days, use { "filterName": "publishTime", "op": "<", "value": 30 }. The publishTime field in the response is a Unix timestamp in milliseconds. The filter and the response field use different units.

Performance ratios compare a creator against themselves

performanceViews, performanceLikes, performanceDiggs, and performanceEngagement are ratios against that creator’s own average, not against the platform, the category, or any other creator. A value of 1.5 means the content performed 50% above the average for the account that posted it. Filtering on performanceEngagement > 1.2 finds posts that outperformed their own channel, which surfaces breakout content from small accounts as readily as from large ones.

partneredBrands accepts a brand ID, not a brand name

Brand IDs are typically the brand’s primary domain. Filter for Acer with "value": "acer.com", not "Acer". The same IDs are returned in the partneredBrands response field.

Post types differ per platform

The postType filter accepts different values on YouTube and Instagram, and TikTok has no postType filter at all because it returns only videos. On Instagram, both single-image posts and multi-image carousels are returned as slideshow. The postType value alone can’t tell them apart; to distinguish them, check the length of the carousel media array in the response.

Credit cost

Content search is priced per call, and the price does not depend on the number of results returned. Every page of a paginated result set is a fresh search and bills at the full rate. There is no discount after the first page.
On YouTube, including a description filter in any request doubles the cost of that call from 50 to 100 credits. The tier is set by whether any filter targets description, not by the number of filters you send. Searching video descriptions is more expensive than scanning other text fields.If you only need to match the title text, use the title filter instead to stay on the 50-credit tier.
For all endpoint pricing, see API Credit Usage.

What you get back

All three platforms return the same envelope: a contentList array, plus pagination fields. Each item in contentList includes a creator object. This is a lightweight summary that includes the handle or channel ID, display name, avatar, and follower count. For full creator details, call the {platform}/profile endpoint with the ID returned here.
CreatorDB excludes content published in the last 4 days from aggregated performance metrics, but that exclusion does not apply to content search. Recently published content does appear in your results.

Content search by platform

Method: POST
Endpoint: https://apiv3.creatordb.app/youtube/content-search

Content-level filters

Creator-level filters

YouTube engagement rate is calculated as (likes + comments + views) / subscribers, and the response rounds engagementRate to four decimal places.
Find high-performing sponsored videos from the last 30 days:
Find every video sponsored by a specific brand in the last 90 days:
Find trending shorts carrying a hashtag, from creators reaching a specific audience:

Paginating results

Send offset: 0 on your first call. If the response has hasNextPage: true, send the returned nextOffset as the offset of your next request, keeping every other parameter the same.
Every page bills at the full per-call rate. Paginating through 10 pages of YouTube results costs 500 credits, not 50. Use the largest pageSize you can (up to 100) so that you make as few calls as possible, and check totalResults on your first call to see how deep the result set goes before you commit to paging through it.

Platform differences at a glance

Troubleshooting

For error codes and the response envelope, see Error Codes. The most common content-search mistakes are:
  • Passing a timestamp to publishTime. The filter takes a number of days ago.
  • Sorting on a field that is not sortable. Check the Sortable column in the tables above.
  • Using a brand name in partneredBrands. Use the brand ID, typically a domain such as acer.com.
  • Sending more than 10 filters, or an in array longer than 100 values.
  • Filtering on isSponsored for TikTok. It is not implemented on that platform.
Last modified on September 9, 2026