Short Video Search API avatar

Short Video Search API

Pricing

from $5.63 / 1,000 results

Go to Apify Store
Short Video Search API

Short Video Search API

Short Video Search API turns one keyword into canonical public video links from two independent short-video search indexes, returning deduplicated 12-field JSON rows with title, thumbnail, source, creator, duration, view text and recency text.

Pricing

from $5.63 / 1,000 results

Rating

0.0

(0)

Developer

TrueFetch

TrueFetch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Short Video Search API is a short video search API that resolves one keyword into canonical public video links across two independent short-video indexes and returns them as deduplicated 12-field JSON rows, built for developers and data teams.

  • One call, two indexes: both short-video surfaces are queried in the same run and merged on canonical URL before any row is returned.
  • Fixed 12-key row shape: every item carries the same keys — including which engine found it and its rank there — with null where a result card did not display a value.
  • Public destination URLs: each row resolves to the video's own public page rather than a search-result redirect.
  • Row-based billing: a Result event is charged only for an item actually written to the default Dataset.

Run a one-result test · View API

A first call with max_results: 1 costs at most $0.025 on the FREE tier — $0.01 for the run start plus $0.0075 for each of up to two returned rows, one per index — so the API can be verified end to end for under three cents.

What does Short Video Search API do?

It converts a keyword into a list of public short-video destinations with their card metadata: distinct canonical video URLs annotated with title, source platform, creator, duration, thumbnail, and the view and recency text the originating result card displayed.

Two independent short-video indexes are queried in the same run, or one of them when the call selects it. Each selected index is walked page by page until it fills its own max_results budget or runs out of new destinations. Results merge on canonical URL, so a video both indexes return is one billed row, not two.

It is a discovery layer: every row is a public destination link with the metadata its result card displayed, drawn from what the two indexes currently rank for the keyword. Media files, transcripts and live engagement counters are the next step, and the platform-specific Actors under Related take a returned url for exactly that.

How do I run Short Video Search API?

Send a keyword and a result budget, optionally pick one index, wait for the run to finish, and read the Dataset.

  1. Set keyword to one topic, phrase, creator name, or public video identifier, 1 to 200 characters.
  2. Set max_results to the number of unique video links the call should return from each selected index. The minimum is 1 and there is no ceiling.
  3. Optionally set platforms to ["google"] or ["bing"] to query one index; omitting it or sending [] queries both.
  4. Start the run through the Console, the API, or MCP. Each selected index gets the full max_results budget, so a two-index call returns up to twice it.
  5. Read the default Dataset when the run reaches SUCCEEDED.
{
"keyword": "morning routine",
"max_results": 40
}

The result limit applies per index and is counted in saved Dataset rows, which is also the billing unit — a max_results: 40 call can return up to 80 links and bills one Result event per link actually returned, regardless of how many pages produced them.

What data does Short Video Search API return?

Each row is one distinct public video destination described by 12 fields.

FieldTypeDescription
search_enginestring or nullWhich search engine returned the card: Bing or Google
search_indexinteger or nullThe card's rank in the sequence its engine returned, starting at 1 per engine; numbers can skip where the other engine returned the same video first
sourcestring or nullVideo website or publisher platform the card credits
titlestring or nullVideo title displayed on the result card
urlstring or nullCanonical public video page URL
thumbnail_urlstring or nullThumbnail image URL supplied with the card
durationstring or nullDisplayed duration text
channel_namestring or nullDisplayed creator, channel, or publisher name
views_textstring or nullRounded view-count text when the card carries one
published_textstring or nullRelative publication text when the card carries one
processorstring or nullStore URL of the Actor that produced the row
processed_atstring or nullUTC timestamp for when the row was produced

The item below is one real row from a morning routine call; every other row has exactly this shape.

{
"search_engine": "Bing",
"search_index": 1,
"source": "TikTok",
"title": "Morning routine for happiness and joy",
"url": "https://www.tiktok.com/@baileybeefsteak/video/7680206581262241054",
"thumbnail_url": "https://th.bing.com/th/id/OVF.vY7Yl59CYk1bP9QPwejtmw?w=262&h=354&c=8&rs=1",
"duration": "1:25",
"channel_name": "baileybeefsteak",
"views_text": "115.6K views",
"published_text": "4 days ago",
"processor": "https://apify.com/truefetch/short-video-search-api",
"processed_at": "2026-09-05T03:49:31+00:00"
}

Values a result card does not display remain null. Nothing is estimated, back-filled, or inferred from another field. The processor value carries a publisher referral parameter in real output, which is left off the sample above.

What inputs can I configure?

Three inputs in schema order: two required, one optional.

InputTypeRequiredNotes
keywordstringYesOne topic, phrase, creator name, or public video identifier. 1 to 200 characters; surrounding whitespace is trimmed and empty or multi-line values are rejected.
platformsarray of stringsNoWhich search indexes to query: google, bing, or both. Omitted or empty queries both.
max_resultsintegerYesMaximum unique video links to return from each selected index, so a two-index call returns up to twice this. Minimum 1, no maximum. A link found in both is returned once.

The optional platforms array is the API's one selector, and it chooses the search index rather than the destination site. The surface is deliberately three fields wide so that a call can be constructed from a keyword list without a configuration layer.

What platforms and markets does Short Video Search API cover?

Coverage is defined by what the two indexes rank, not by a fixed platform list. Rows resolve to public destinations on YouTube, TikTok, Instagram, Facebook, Vimeo, and Dailymotion, and the mix shifts with the keyword — a recipe phrase skews toward Shorts and TikTok, a product phrase toward Reels and Facebook.

The short vertical format the API discovers is defined by the destination platforms themselves; YouTube's official Shorts help page documents what qualifies there. Queries are issued against US-facing index results, so ranking reflects that market; keywords in any language are accepted and non-Latin scripts return results normally.

The platform mix for a given search is whatever the two indexes currently rank for that keyword, so a platform's share rises and falls with the topic.

Why use Short Video Search API?

Because cross-platform short-video discovery is otherwise a per-platform integration problem, and this collapses it into one keyword-in, rows-out call.

CapabilityWhat it gives a developer
Two indexes merged on canonical URLWider destination coverage than a single-index query, with no client-side deduplication step
Fixed 12-key row shapeRows load into a table or a warehouse without a normalization layer, run after run
Per-index selectionplatforms narrows a call to one index when a workflow wants that index's ranking alone
Result-event billingSpend is a linear function of rows delivered, so a per-keyword budget is calculable before the call
No credentials requiredNo platform accounts, tokens, or session cookies to provision, rotate, or expire
processed_at on every rowRun-to-run diffs stay interpretable without a separate ingestion timestamp

Each row carries what the result card displayed — title, source, creator, duration, thumbnail, and the card's view and recency text — so this is the discovery stage of a pipeline whose engagement-analytics stage belongs to a platform-specific tool.

Who is Short Video Search API for?

Developers and data teams building content-discovery pipelines, trend dashboards, creator-sourcing tools, or brand-monitoring workflows that need short-video coverage across platforms rather than inside one.

  • A growth team feeding a weekly keyword list in and diffing url sets between runs.
  • An agency building a creator shortlist from channel_name and source before outreach.
  • A media desk collecting links and thumbnails into an editorial review queue.
  • An agent workflow that discovers candidates here and passes each url to a transcript step.

It fits the workflows above because they start from a keyword and need public coverage across platforms; a workflow whose next step is engagement analytics, media files, or a platform-native filter such as a hashtag pairs this call with the platform-specific Actor that carries those.

How can I use Short Video Search API through the API or MCP?

Call it as truefetch/short-video-search-api, start the run asynchronously, then read the Dataset the run created.

# 1. start the run
curl -X POST "https://api.apify.com/v2/acts/truefetch~short-video-search-api/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword":"morning routine","max_results":40}'
# 2. poll until "status" is "SUCCEEDED", or register an ACTOR.RUN.SUCCEEDED webhook
curl "https://api.apify.com/v2/actor-runs/RUN_ID?token=$APIFY_TOKEN"
# 3. read the rows
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=$APIFY_TOKEN"

RUN_ID is the data.id returned by step 1 and DATASET_ID is its data.defaultDatasetId; both are available the moment the start call returns. A run-sync* endpoint is a quick-test shortcut only: Apify closes a synchronous connection after 300 seconds without aborting the run, a client-side timeout never stops a run that is already billing, and each retry starts another billed run.

For MCP, expose the Actor through Apify's MCP integration, select truefetch/short-video-search-api, and pass keyword and max_results — plus platforms when one index is wanted — as tool arguments, the same object the HTTP body carries. Generated SDK snippets and the OpenAPI definition are on the API page.

How much does Short Video Search API cost?

Each returned row costs $0.0075 on the FREE tier and each call adds one $0.01 run start, so the smallest verifiable test — one returned link — totals $0.0175.

Event or tierPriceBilling unit
Actor Start$0.01Once per run; Apify counts one start event per allocated GB, minimum one
Result — FREE$0.00750Per row returned in the default Dataset
Result — BRONZE$0.00675Per row returned in the default Dataset
Result — SILVER$0.00600Per row returned in the default Dataset
Result — GOLD$0.00563Per row returned in the default Dataset
Result — PLATINUM$0.00563Per row returned in the default Dataset
Result — DIAMOND$0.00563Per row returned in the default Dataset

The Actor runs at 512 MB, so the start event is charged once per call — Apify counts one start event per GB with a minimum of one. Billing follows delivered rows, never attempted requests, so a keyword returning 12 links against max_results: 40 bills 12 Results, and a single-index call (platforms: ["bing"] or ["google"]) bills at most max_results rows plus the start. Batching a larger max_results into one call is therefore cheaper than splitting the same links across several. See current pricing; prices can change.

How does Short Video Search API compare with alternatives?

Against a manual search it wins as soon as the query repeats: a browser answers faster once, but offers no pagination, no export, no canonical deduplication, and nothing to diff next week.

Against per-platform integrations it trades depth for reach. Each platform's own official API returns richer records for its own content and is the better choice once the workflow knows which platform matters. This API answers the earlier question: which public short videos exist on this topic anywhere, in one list, with one billing unit.

Against a general web-search tool, the difference is what reaches the Dataset — a general tool returns articles, listings, and ads alongside videos, while this returns only short-video result cards.

What are the limits and troubleshooting steps?

  • Zero rows returned. The keyword may have no ranked short-video results, or one index may be briefly unavailable. Re-run with a broader public phrase; the smallest reproducible input is {"keyword":"morning routine","max_results":1}.
  • Fewer rows than max_results from one index. Delivered volume is bounded by what each index ranks for that keyword; a narrow phrase can leave either index short. max_results is a per-index budget, not a guarantee.
  • A full call takes a few minutes. A max_results: 100 call walks both indexes to their budgets and typically completes in two to four minutes; poll the run or use the ACTOR.RUN.SUCCEEDED webhook rather than a synchronous call.
  • Counts differ between identical calls. Index contents and ranking change continuously. Use url as the stable key and retain processed_at.
  • views_text or published_text is null. These are card display strings, not computed metrics, and Bing rows supply them far more often than Google ones. Treat null as absence, never as zero.
  • thumbnail_url is null on some rows. Bing rows ship thumbnails and Google rows usually omit them; filter on search_engine when the image is required. url is always present.
  • Two rows look like the same video. A repost and an original upload are different public URLs and stay distinct rows by design.
  • A returned URL no longer opens. Index entries outlive removed, private, or renamed pages. Validate links before publishing them downstream.

For a reproducible defect, open an Actor Issue with the run ID, the exact input object, the expected behavior, and one affected url.

Frequently asked questions

Is there a free short video search API?

The Actor is pay-per-event at $0.01 per run start plus $0.0075 per returned row on FREE, and those events are billed against the platform credits included with an Apify plan, so a small evaluation typically consumes plan credits rather than a separate invoice.

Issue one run per keyword with the max_results budget you want for that phrase, and parallelize at the API layer rather than inside a single call — the input takes exactly one keyword. Each run pays its own $0.01 start event, so a larger max_results per keyword is cheaper than splitting one keyword across several runs.

Can I schedule runs to monitor short-video results over time?

Yes. Point an Apify Schedule at a fixed input, then compare url sets and processed_at across the produced Datasets, or route each ACTOR.RUN.SUCCEEDED webhook into your own store and diff there.

Why do rows from one index carry more metadata than rows from the other?

The search_engine value names which engine produced the row, and the two describe their cards differently. Bing rows consistently supply thumbnails, view text, and relative dates; Google rows supply titles, durations, creators, and links but usually omit display metrics. The row shape stays identical across both — the difference appears as null values, never as missing keys — and search_index is each engine's own rank, so sorting on search_engine then search_index restores either engine's order.

How is a video that both indexes return billed?

Once. Canonical URLs are compared across both indexes before anything is written, so a video ranked by both produces exactly one Dataset row and exactly one Result event, under the engine that reached it first.

Which credentials does the API need?

Only your Apify API token. The API takes a keyword and a limit; the two search surfaces it reads are public, so platform tokens, cookies and logins play no part in a call.

What happens if one index fails mid-run?

The other continues and the run still returns rows. Whatever the failing index already delivered is kept. A call in which a selected index failed and nothing at all was returned finishes with a failed run status, so a scheduler or webhook can retry it, while a keyword with genuinely no matches finishes successfully with an empty Dataset.

Can I query a single search index?

Yes. Set platforms to ["google"] or ["bing"] and that index receives the whole max_results budget, so the call returns up to max_results rows from it; omit platforms or send [] to query both. For one destination site only, such as TikTok links, filter the returned rows on source, and use a platform-specific Actor when the workflow needs that platform's native filters and engagement data.

  • Multi Engine Search API — choose this when the same keyword also needs ordinary web results, not short-video cards alone.
  • Best Video Downloader — choose this to turn a returned url into a downloaded media file where that is lawful for your use.
  • Video To Text — choose this to convert a discovered public video into searchable transcript text.

Support

Product questions, coverage questions, and integration help go to the TrueFetch community on Telegram; reproducible defects belong in an Actor Issue with the run ID and the exact input. The Store page carries live pricing and the API page carries generated SDK snippets.

Run a one-result test · View API

Last Updated: September 5, 2026