Extract videos
extract_videosUse when the user wants the videos on a page: / files, og:video, YouTube/Vimeo/Wistia/Loom embeds, direct video links and the JSON-LD VideoObject a page declares (source: "structured-data", how news sites describe a JS-mounted video), each tagged by source with a poster when declared. source: "embed" is a player page, not a downloadable file; a URL that is itself a video file comes back as the single result (source file). A YouTube, Vimeo, TikTok, Dailymotion or Loom video URL is answered from the URL alone with its player embed (source: "platform", no fetch, never pass render for these) - tell the user the file itself cannot be downloaded through MiroMiro. When any other page loads a JS player and declares nothing else, the hint names the player: call again with render=true (+5 credits) then. Returns up to 40 by default; pass limit (up to 200) for more.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website URL | |
| fresh | No | Skip the 24-hour cache and re-extract the live page - use when the site just changed and a cached result would be stale. Charged normally; the fresh result replaces the cached copy. | |
| limit | No | Max videos to return (default 40, up to 200). | |
| render | No | Force a real browser so the page's JavaScript runs before it is read. Slower, and adds 5 credits. Usually not needed: when the plain read comes back as a JavaScript app shell or the site refuses it (401/403/406) or timed out, the server already re-runs the page in a browser by itself at no extra cost, and usage.autoRender says so. Pass it for images, videos or Lottie that only load on scroll, with screenshot=true, or when a result is still thin after that automatic pass. If a 403 says the browser was refused too, the site cannot be extracted - do not retry. extract_code always runs in a real browser at no extra cost, so render=true is not needed there (only together with screenshot=true). On extract_design_tokens, render=true only permits the browser: the plain read still runs first, and the 5 credits are charged only if the browser was actually needed. | |
| screenshot | No | Requires render=true. Adds a screenshot field to the result: a public URL of a capture of the page (live 7 days), taken by the same browser that rendered it. Pass true for the 1440x900 viewport or 'full' for the entire page height. No extra credits beyond the render surcharge. Useful for showing the user what the extracted site looks like. | |
| full_output | No | Skip long-string trimming. Responses still cap at ~100KB total. | |
| response_format | No | How much to return. 'concise' keeps lists to 10 entries and strings short - right for a summary or a chat answer. 'detailed' returns everything the tool has (same as limit=200 + full_output=true). Omit for the default, which fits a typical chat context. The generated code is never trimmed in any mode. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| note | No | Coverage caveat: only videos declared in the initial HTML are found - use render=true for JS-mounted players | |
| count | No | Total videos found (before any trimming) | |
| usage | No | Credit usage for the authed key (spent, remaining, monthly limit). | |
| videos | No | ||
| truncation_note | No | Present when the result was trimmed to fit chat context - says what was dropped and how to get more (limit / full_output arguments, or the REST API). |