Movie & TV embed API · free, no key

Stream any title with one iframe.

VidNest turns a TMDB or IMDb ID into a ready-to-play HD player. Subtitles, resume and quality memory are built in — you just drop in the URL.

  • Movies & TV ShowsReady to stream
  • Daily updatesNew releases added daily
embed.html
<!-- Movie by TMDB ID -->
<iframe
  src="https://vidnest.pro/movie/533533"
  width="100%" height="100%"
  frameborder="0" allowfullscreen
  allow="autoplay; fullscreen; picture-in-picture">
</iframe>
TMDB & IMDb IDs Auto subtitles postMessage events
01Live demo

Build an embed, see it play.

Pick a title, set a start time or accent color, and copy the URL straight into your page.

02Embed URLs

Three URLs. That's the whole API.

Point an <iframe> at any of these. IDs can be TMDB numbers or IMDb tt… IDs.

Movie

A single film
GEThttps://vidnest.pro/movie/{id} vidnest.pro/movie/533533 ↗

TV episode

Season + episode
GEThttps://vidnest.pro/tv/{id}/{season}/{episode} vidnest.pro/tv/66732/5/3 ↗

TV, short form

Hyphenated variant
GEThttps://vidnest.pro/tv/{id}-{season}-{episode} vidnest.pro/tv/66732-5-3 ↗
id — TMDB ID or IMDb ID (required) season — season number (TV) episode — episode number (TV)
03Player options

Tune it with query params.

All optional and combinable, e.g. ?t=90&theme=16a085. A TV URL plays just that one episode unless you turn on the episode list or auto-next below.

Start time

tstartAt

Jump straight to a timestamp. Accepts plain seconds (90) or a compound duration (1h5m30s, 5m30s). An explicit start time always wins over a viewer's saved position.

https://vidnest.pro/movie/533533?t=1h5m30s

Accent color

theme

Recolor the progress bar, buttons and menus to match your site. A 6-digit hex color, with or without the leading #.

https://vidnest.pro/movie/533533?theme=16a085

Autoplay

autoplay=1

Starts playing as soon as the video is ready — with sound whenever the browser allows it. Browsers block sound until the viewer has clicked something on your site; then the video still starts, muted, with a "Tap to unmute" button. Keep allow="autoplay" on your iframe.

https://vidnest.pro/movie/533533?autoplay=1

Episode list

episodes=1TV

Adds an episode browser to the player — every season, with stills, names and each viewer's progress — plus a next-episode button. Viewers can binge without leaving your embed. Keys: E opens the list, N plays the next episode.

https://vidnest.pro/tv/66732/5/3?episodes=1

Auto next

autonext=1TV

In the last seconds of an episode an "Up next" card counts down and the next episode starts playing on its own — rolling into the next season at a finale. Viewers can cancel it, or click to skip ahead.

https://vidnest.pro/tv/66732/5/3?episodes=1&autonext=1

Auto-resume

Each viewer picks up where they left off on every movie and episode — no parameter needed.

Remembered quality

Adaptive quality by default. If a viewer picks a resolution, the closest one is restored next time.

Automatic subtitles

Extra languages are fetched in the background, and the viewer's language choice carries across titles.

Subtitle style & sync

Presets, font, outline, size and position with a live preview. Out-of-sync files are detected and fixed in about 20 seconds — saved for everyone.

Hold for 2×

Press and hold on the picture to play at double speed; let go to return. Double-tap either side to skip 10 seconds.

Pause screen

Pausing shows the title, episode and time left, and the bar shows when it ends — e.g. "Ends 11:42 PM".

Keyboard shortcuts

Work anywhere in the player once it has focus.

SpaceKPlay / pause
J←Back 10 seconds
L→Forward 10 seconds
↑↓Volume up / down
MMute
FFull screen
CSubtitles on / off
GHSubtitles earlier / later
<>Slower / faster
IPicture-in-picture
EEpisode list · with episodes=1
NNext episode · with episodes=1
04postMessage

Listen to the player. Or drive it.

The player talks to your page over window.postMessage. Every event is tagged source: 'vidnest-player'.

listen.js
window.addEventListener('message', (e) => {
  if (e.data?.source !== 'vidnest-player') return;

  const { event, currentTime, duration } = e.data;
  console.log(event, currentTime, duration);
});
EventPayloadFires when
playcurrentTime, durationPlayback starts or resumes
pausecurrentTime, durationPlayback pauses
endedcurrentTime, durationPlayback reaches the end
seekedcurrentTime, durationViewer jumps more than 3s
timeupdate+ percentageAbout once a second
playerstatus+ paused, percentageReply to getStatus
ready—Player is listening for commands
episodechangeseason, episodeViewer moved to another episode (list or auto-next) — update your page's URL to match
05Catalog API

Know what's available.

JSON endpoints listing every title we can play — use them to build browse pages, "new this week" rails or trending lists.

List movies

GET/api/discover/movies
Query parameters
ParamDescription
pagePage number (default 1)
resultsPerPageResults per page — max 100, default 20
orderingid, title, year, views, views_day, views_week, views_month, created_at, updated_at
directionasc or desc
queryTitle search (min 3 characters)
yearRelease year
imdb_id · tmdbidLook up a single title
slider · featuredOnly slider / featured titles (1, true, yes)

List TV shows

GET/api/discover/tv
Query parameters
ParamDescription
pagePage number (default 1)
resultsPerPageResults per page — max 100, default 20
orderingid, last_upload_date, views, views_day, views_week, views_month
directionasc or desc
queryTitle search (min 3 characters)
imdbid · tmdbidLook up a single show
sliderOnly slider titles (1, true, yes)

Trending

GET/api/discover/views
Query parameters
ParamDescription
typemovie (default) or tv
viewsWindow: day, week, month, total (default)
pagePage number (default 1)
yearRelease year (movies only)
resultsPerPageResults per page — max 100, default 20

Your player is one line away.

No account, no key, no SDK. Copy a URL and ship.

Open the live demo