Media

YouTube Video Data API

Every YouTube watch page carries a rich block of public metadata: title and description, the channel behind it, view, like and comment totals, publish date, duration, category, keyword tags, thumbnails and the available caption tracks. The everydata.io YouTube Video Data API returns that block as one JSON object for any video ID or URL. There is no OAuth consent screen, no Google Cloud project and no daily unit quota to ration – just an HTTPS GET with your everydata.io key, answered from the live page.

100 free requests every month · realtime JSON · one API key for all platforms

What you get

YouTube data, ready to use

GET /ytb/youtube-video-details accepts id as a bare video ID (kJQP7kiw5Fk), a youtu.be short link or a full watch URL, so you can feed it whatever your users paste. The response has videoId, title, description, channelId, channelName, channelUrl and subscriberCountText for the uploader, then the engagement numbers as integers: viewCount, likeCount and commentCount, with likeCountText for the rounded display value. publishedAt and uploadDate are ISO timestamps with offset, duration is in seconds with durationText as m:ss, and category, keywords and tags carry the classification the uploader chose.

Boolean flags describe the state of the video: isLive, isLiveNow, isFamilySafe, isUnlisted, isPrivate, isShortsEligible and allowRatings. availableCountries lists where playback is allowed, embedUrl is ready for an iframe, and captions[] holds every subtitle track with languageCode, name and isTranslatable.

  • Video ID, youtu.be link or full watch URL accepted in the same id parameter
  • viewCount, likeCount, commentCount as plain integers plus human-readable *Text variants
  • publishedAt, uploadDate, duration, durationText, category, keywords[] and tags[]
  • Channel context inline: channelId, channelName, channelUrl, channelThumbnails, subscriberCountText
  • Status flags: isLive, isLiveNow, isFamilySafe, isUnlisted, isPrivate, isShortsEligible, allowRatings
  • thumbnails[] in multiple sizes, embedUrl, availableCountries[] and captions[] with language and translatability
  • Companion endpoints for keyword search, related videos and trending – all cursor-paged, no Google API key

How it works

Example request and response

A single call returns the whole watch-page block; the example uses Despacito, so the counters are real and large. For discovery, GET /ytb/youtube-search-videos?query=lofi+hip+hop returns items[] with videoId, title, channelName, viewCount, duration and isLive plus a cursor; /ytb/youtube-video-related-contents lists the sidebar recommendations for a video, and /ytb/youtube-trending-videos returns the trending tab.

GET /ytb/youtube-video-details

curl "https://api.everydata.io/ytb/youtube-video-details?id=kJQP7kiw5Fk&languageCode=en&countryCode=US" \
  -H "x-api-key: YOUR_API_KEY"

Response (shortened)

200 OK · application/json
{
  "responseStatus": "PAGE_FOUND",
  "responseMessage": "Page successfully found!",
  "videoId": "kJQP7kiw5Fk",
  "title": "Luis Fonsi - Despacito ft. Daddy Yankee",
  "channelId": "UCLp8RBhQHu9wSsq62j_Md6A",
  "channelName": "LuisFonsiVEVO",
  "subscriberCountText": "32.5M subscribers",
  "viewCount": 9125159593,
  "likeCount": 56673581,
  "likeCountText": "56M",
  "commentCount": 4300000,
  "publishedAt": "2017-01-12T21:00:02-08:00",
  "duration": 282,
  "durationText": "4:42",
  "category": "Music",
  "keywords": [
    "Luis",
    "Fonsi"
  ],
  "tags": [
    "Calypso",
    "Despacito"
  ],
  "thumbnails": [
    {
      "url": "https://i.ytimg.com/vi/kJQP7kiw5Fk/hqdefault.jpg",
      "width": 168,
      "height": 94
    }
  ],
  "isLive": false,
  "isFamilySafe": true,
  "embedUrl": "https://www.youtube.com/embed/kJQP7kiw5Fk"
}

responseStatus is PAGE_FOUND when the watch page rendered. A private, deleted or region-blocked video produces a 404 with a vnd.error body instead of a half-filled object, so check the HTTP status before parsing. viewCount is the exact figure from the page at request time; YouTube itself updates it with a small lag, so two calls minutes apart may return the same number for slow-moving videos.

Search and related-content responses are paged with an opaque cursor string. Pass the cursor value from one response as the cursor parameter of the next call to continue; omit it for page one. Each page is one request. estimatedResults on search is YouTube's own rough total, not a guarantee of how many pages you can walk.

languageCode and countryCode (defaults en, US) influence what YouTube renders: localised titles where the uploader supplied translations, and the country's trending list. Every request is realtime; there is no cacheTtl on YouTube endpoints because counters move constantly.

Related endpoints

GET/ytb/youtube-video-details

Video details. Metadata for a video id or URL.

GET/ytb/youtube-search-videos

Search videos. Keyword search with cursor paging.

GET/ytb/youtube-video-related-contents

Related videos. Related content for a video.

GET/ytb/youtube-trending-videos

Trending. Trending videos.

Full API reference

Use cases

What teams build with this

Influencer and campaign reporting

Fetch viewCount, likeCount and commentCount for sponsored videos on a schedule and chart the curve from publish date onwards – with no unit budget to split across clients.

Content monitoring and brand safety

Resolve every URL a user submits, store title, channelName, category and isFamilySafe, and flag videos that later turn private or unlisted via the 404 response.

Search and trend tracking

Run the same keyword through youtube-search-videos daily with different countryCode values and measure which channels and formats dominate the results in each market.

Link previews and embeds

Turn a pasted YouTube link into a card with thumbnail, title, channel and duration, and embed with embedUrl – the classic oEmbed use case without Google credentials.

Pricing

Pay per request, every platform included

One video detail call, one search page or one related-content page equals one request. Because there is no separate Google quota, the only limit is your everydata.io plan: the free tier's 100 requests a month cover an integration test; Starter (5,000 requests, €30) tracks about 160 videos daily; Production (50,000, €80) supports agency-scale reporting across hundreds of channels. Upstream 5xx errors are never deducted.

Free
100 req / month
Starter
5,000 req · €30
Production
50,000 req · €80
Business
300,000 req · €300

FAQ

YouTube Video Data API: frequently asked questions

Related

Related use cases

All use cases

Look up your first video

Create a free account and call GET /ytb/youtube-video-details?id=kJQP7kiw5Fk – full metadata in one JSON response, 100 requests a month on us.

Get your free API key