Not logged in - Login

Media (video) services supported by VocaDB

Media streaming service support on VocaDB is very extendable. New services can be added as long as there's a way to get the embeddable video ID. Other information such as video duration and author information is optional.

ServiceID formatID sourceHas API for media infoEmbed format
YouTubekKjtPMktA3QURLX (full)HTML5 (iframe)
Vimeo1234567URLX (full)HTML5 (iframe)
SoundCloud244504967 hightrancesea/mirror-songAPIX (full)HTML5 (iframe)
NicoNicoDougasm28107817URLX (limited)HTML5 (iframe)
BiliBili4176277URLX (limited)Flash
Piaproqmlyzf3njdljhayxHTML Flash
Creofuga1234567URL HTML5 (iframe)
Ideally the PV ID and other metadata can be parsed from the URL and metadata (such as video title) can be parsed from the API.

API calls are generally cheap, while downloading and parsing HTML is more costly.

For SoundCloud we're saving both the internal media ID and the URL, because conversion between those would not be possible without additional API calls. There is no easy way to navigate to SoundCloud by knowing just the media ID.

Potential media services


There's a lot of Vocaloid music on Bandcamp, and they offer embeddable player. Unfortunately, Bandcamp doesn't offer an API of any kind, parsing the ID from the URL is not possible, and getting the embeddable media ID from the HTML is not straightforward.


In order to add support for a new service to be embedded, we need a reliable way to get the embed code from the media URL (which is what Bandcamp is lacking). Usually the URL contains the ID that is also required by the embed code.

For example, YouTube URLs look like this

The embed code is

This is the only mandatory thing. Additionally, VocaDB supports loading metadata for the media:

  • Title
  • Thumbnail
  • Upload date
  • Length
  • Author

This metadata is preferable, but not mandatory. In the optimal case, the service has a programmatic API for loading that metadata. HTML parsing may work if the HTML structure is simple enough, but there is always a risk of the parser breaking when the layout changes.