Outlier video search

Search stored data by keyword, niche, region, and views-to-subscribers ratio.

POST
https://api.shortsmonkey.com/v1/videos/outliers/search

2 credits per actual 1–20 items

Outlier video search#

Search stored data by keyword, niche, region, and views-to-subscribers ratio.

Authentication#

Send Authorization: Bearer sm_live_.... Never place the full key in URLs, cookies, bodies, logs, or analytics.

Data freshness#

Rankings read stable snapshots published by the worker. Public reads never trigger a YouTube refresh.

Request#

ItemValueDescription
MethodPOSTHTTP request method
Full URLhttps://api.shortsmonkey.com/v1/videos/outliers/searchProduction API URL
AuthenticationAuthorization: Bearer sm_live_...Send the full key only in the header
Content typeapplication/jsonThe request body uses JSON
Credits2 credits per actual 1–20 itemsError responses cost 0 credits

Request parameters#

NameLocationTypeRequiredDefaultValues or limitsDescription
keywordJSON bodystringNo1–120 charactersKeyword matched against stored title or niche text
nicheJSON bodystringNo1–80 charactersNiche or category filter
video_typeJSON bodystringNoallshorts / long / allVideo type
regionJSON bodystringNo2–16 charactersRegion code
max_channel_subscribersJSON bodyintegerNo0–10,000,000Maximum channel subscriber count
min_viewsJSON bodyintegerNo0–1,000,000,000Minimum view count
min_vs_ratioJSON bodynumberNo100–100,000Minimum views-to-subscribers ratio
time_windowJSON bodystringNo7d24h / 3d / 7d / 30dVideo publication window
limitJSON bodyintegerNo201–50Maximum number of items on this page
all_cursorJSON bodystringNodata.all_data.next_cursorFetch the next unfiltered page
filter_cursorJSON bodystringNodata.filter_data.next_cursorFetch the next filtered page without changing filters
cursorJSON bodystringNoDeprecated compatibility parameterAlias for filter_cursor; do not send both

Success response fields#

all_data is an unfiltered page from the stable snapshot; filter_data is a page from the same snapshot after endpoint defaults and request filters. Each result paginates independently.

Dot notation represents nested objects and [] represents array items. Unknown subscriber counts are null with subscriber_count_hidden: true. One request is billed once using the larger returned item count, never the sum of both sets.

Field pathTypeNullableDescription
data.all_data.itemsarray<object>NoUnfiltered video items on the current page
data.all_data.items[].video_idstringNoYouTube video ID
data.all_data.items[].titlestringNoVideo title
data.all_data.items[].video_urlstringNoYouTube video URL
data.all_data.items[].channel.idstringYesChannel ID
data.all_data.items[].channel.titlestringNoChannel title
data.all_data.items[].channel.subscribersintegerYesSubscriber count; null when hidden
data.all_data.items[].channel.subscriber_count_hiddenbooleanNoWhether the subscriber count is hidden
data.all_data.items[].viewsintegerNoView-count snapshot
data.all_data.items[].views_to_subscribers_rationumberYesViews-to-subscribers ratio
data.all_data.items[].opportunity_scorenumberYesOpportunity score
data.all_data.items[].duration_secondsintegerNoVideo duration in seconds
data.all_data.items[].published_atstring(date-time)YesVideo publication time in UTC ISO 8601
data.all_data.items[].snapshot_atstring(date-time)YesData collection time
data.all_data.items[].nichestringYesNiche or category
data.all_data.items[].trackstringYesDataset track identifier
data.all_data.items[].regionstringYesRegion code
data.all_data.items[].reasonsarray<string>NoRanking reasons
data.all_data.items[].video_typestringNoshorts or long
data.all_data.next_cursorstringYesNext-page cursor for this result set; null when finished
data.filter_data.itemsarray<object>NoVideo items after defaults and request filters
data.filter_data.items[].video_idstringNoYouTube video ID
data.filter_data.items[].titlestringNoVideo title
data.filter_data.items[].video_urlstringNoYouTube video URL
data.filter_data.items[].channel.idstringYesChannel ID
data.filter_data.items[].channel.titlestringNoChannel title
data.filter_data.items[].channel.subscribersintegerYesSubscriber count; null when hidden
data.filter_data.items[].channel.subscriber_count_hiddenbooleanNoWhether the subscriber count is hidden
data.filter_data.items[].viewsintegerNoView-count snapshot
data.filter_data.items[].views_to_subscribers_rationumberYesViews-to-subscribers ratio
data.filter_data.items[].opportunity_scorenumberYesOpportunity score
data.filter_data.items[].duration_secondsintegerNoVideo duration in seconds
data.filter_data.items[].published_atstring(date-time)YesVideo publication time in UTC ISO 8601
data.filter_data.items[].snapshot_atstring(date-time)YesData collection time
data.filter_data.items[].nichestringYesNiche or category
data.filter_data.items[].trackstringYesDataset track identifier
data.filter_data.items[].regionstringYesRegion code
data.filter_data.items[].reasonsarray<string>NoRanking reasons
data.filter_data.items[].video_typestringNoshorts or long
data.filter_data.next_cursorstringYesNext-page cursor for this result set; null when finished
meta.request_idstringNoRequest trace ID
meta.snapshot_idstringNoStable snapshot ID
meta.snapshot_atstring(date-time)NoSnapshot timestamp
meta.data_statusstringNoDataset status
credits.costintegerNoActual credits charged
credits.remainingintegerNoRemaining account credits
credits.period_ends_atstring(date-time)NoCurrent credit-period end

Pagination and cursors#

Send all_data.next_cursor as all_cursor and filter_data.next_cursor as filter_cursor. The cursors are independent, opaque, signed, and valid for 24 hours; legacy cursor is only an alias for filter_cursor.

ETag#

Rankings support If-None-Match. A hit returns HTTP 304 with X-Credits-Cost: 0.

Errors and rate limits#

Every error contains code, stable English message, request_id, and details. All 4xx/5xx responses cost zero credits.

HTTP statusCodeCauseSuggested action
400INVALID_REQUESTInvalid parameter format, combination, or rangeCorrect the parameters using details.issues
401INVALID_API_KEYThe key is invalid or inactiveCheck the Bearer header and key status
402SUBSCRIPTION_REQUIRED / CREDITS_EXHAUSTEDSubscription or credits are unavailableCheck the plan, balance, and key safety budget
429RATE_LIMITEDRate or concurrency limit exceededRetry after the Retry-After interval
503DATA_STALE / SERVICE_UNAVAILABLEData or service is temporarily unavailableRetry later and retain request_id
curl -X POST "https://api.shortsmonkey.com/v1/videos/outliers/search" \
  -H "Authorization: Bearer $SHORTSMONKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keyword":"finance","video_type":"all","time_window":"7d","min_vs_ratio":10,"limit":20}'