Outlier video search

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

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

0 Credits

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
Credits0 CreditsAll operations cost 0 credits. There is no monthly credit grant or commercial credit deduction.

Request parameters#

NameLocationTypeRequiredDefaultValues or limitsDescription
keywordJSON bodystringNo—1–120 charactersKeyword matched against stored title or niche text
nicheJSON bodystringNo—1–80 charactersNiche or category filter
video_typeJSON bodystringNoallshorts / long / allVideo type
regionJSON bodystringNo—2–16 charactersRegion code
max_channel_subscribersJSON bodyintegerNo—0–10,000,000Maximum channel subscriber count
min_viewsJSON bodyintegerNo—0–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 bodystringNo—data.all_data.next_cursorFetch the next unfiltered page
filter_cursorJSON bodystringNo—data.filter_data.next_cursorFetch the next filtered page without changing filters
cursorJSON bodystringNo—Deprecated 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.

All operations cost 0 credits. There is no monthly credit grant or commercial credit deduction.

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.costintegerNoAll operations cost 0 credits. There is no monthly credit grant or commercial credit deduction.
credits.remaininginteger | nullYesnull
credits.period_ends_atstring(date-time) | nullYesnull
credits.unlimitedbooleanNotrue

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
429API_DAILY_LIMIT_REACHEDAll API keys on an account share 10 daily REST data calls. The allowance resets at 00:00 Asia/Shanghai. The website has its own separate allowance of 10 searches per day. MCP uses neither allowance.API_DAILY_LIMIT_REACHED returns HTTP 429 after 10 REST data calls. Wait until 00:00 Asia/Shanghai; creating or rotating a key does not reset the account allowance.
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}'