Maton

YouTube

Access the YouTube Data API v3 with managed OAuth authentication. Search videos, manage playlists, access channel information, and interact with comments and subscriptions.

Reference

Search Videos, Channels, or Playlists

GET /youtube/youtube/v3/search
maton youtube search videos 'machine learning' --limit 10 --order viewCount

Query parameters:

  • part - Required: snippet
  • q - Search query
  • type - Filter by type: video, channel, playlist
  • maxResults - Results per page (1-50, default 5)
  • order - Sort order: date, rating, relevance, title, viewCount
  • publishedAfter - Filter by publish date (RFC 3339)
  • publishedBefore - Filter by publish date (RFC 3339)
  • channelId - Filter by channel
  • videoDuration - short (<4min), medium (4-20min), long (>20min)
  • pageToken - Pagination token
maton youtube search channels 'rob pike'
maton youtube search playlists 'study music'

Get Video Details

GET /youtube/youtube/v3/videos?part=snippet,statistics,contentDetails&id=dQw4w9WgXcQ
maton youtube video view dQw4w9WgXcQ

Parts available:

  • snippet - Title, description, thumbnails, channel info
  • statistics - View count, likes, comments
  • contentDetails - Duration, dimension, definition
  • status - Upload status, privacy status
  • player - Embedded player HTML

Get My Videos (Uploaded)

GET /youtube/youtube/v3/search?part=snippet&forMine=true&type=video&order=viewCount&maxResults=25
maton youtube search mine --order viewCount --limit 25

Rate Video (Like/Dislike)

POST /youtube/youtube/v3/videos/rate?id=dQw4w9WgXcQ&rating=like
maton youtube video rate dQw4w9WgXcQ --rating like

Rating values: like, dislike, none

GET /youtube/youtube/v3/videos?part=snippet,statistics&chart=mostPopular&regionCode=US&maxResults=10
maton youtube video list --region US --limit 10

Get Video Categories

GET /youtube/youtube/v3/videoCategories?part=snippet&regionCode=US
maton youtube video-category list --region US

Get Channel Details

GET /youtube/youtube/v3/channels?part=snippet,statistics,contentDetails&id=UCBJycsmduvYEL83R_U4JriQ
maton youtube channel view UCBJycsmduvYEL83R_U4JriQ

Get My Channel

GET /youtube/youtube/v3/channels?part=snippet,statistics,contentDetails&mine=true
maton youtube channel mine

Response:

{
  "items": [
    {
      "id": "UCxyz123",
      "snippet": {
        "title": "My Channel",
        "description": "Channel description",
        "customUrl": "@mychannel",
        "publishedAt": "2020-01-01T00:00:00Z",
        "thumbnails": {...}
      },
      "statistics": {
        "viewCount": "1000000",
        "subscriberCount": "50000",
        "videoCount": "100"
      },
      "contentDetails": {
        "relatedPlaylists": {
          "uploads": "UUxyz123"
        }
      }
    }
  ]
}

Get Channel by Username

GET /youtube/youtube/v3/channels?part=snippet,statistics&forUsername=GoogleDevelopers
maton youtube channel view --username GoogleDevelopers

To look up by @handle instead, use maton youtube channel view --handle GoogleDevelopers.

List My Playlists

GET /youtube/youtube/v3/playlists?part=snippet,contentDetails&mine=true&maxResults=25
maton youtube playlist list --limit 25

Get Playlist

GET /youtube/youtube/v3/playlists?part=snippet,contentDetails&id={playlistId}
maton youtube playlist view {playlistId}

Create Playlist

POST /youtube/youtube/v3/playlists?part=snippet,status
Content-Type: application/json

{
  "snippet": {
    "title": "My New Playlist",
    "description": "A collection of videos",
    "defaultLanguage": "en"
  },
  "status": {
    "privacyStatus": "private"
  }
}
maton youtube playlist create --title 'My New Playlist' --description 'A collection of videos' --privacy private

Privacy values: public, private, unlisted

Update Playlist

PUT /youtube/youtube/v3/playlists?part=snippet,status
Content-Type: application/json

{
  "id": "PLxyz123",
  "snippet": {
    "title": "Updated Playlist Title",
    "description": "Updated description"
  },
  "status": {
    "privacyStatus": "public"
  }
}
maton youtube playlist update PLxyz123 --title 'Updated Playlist Title' --description 'Updated description' --privacy public

Delete Playlist

DELETE /youtube/youtube/v3/playlists?id=PLxyz123
maton youtube playlist delete PLxyz123

List Playlist Items

GET /youtube/youtube/v3/playlistItems?part=snippet,contentDetails&playlistId={playlistId}&maxResults=50
maton youtube playlist items {playlistId} --limit 50

Add Video to Playlist

POST /youtube/youtube/v3/playlistItems?part=snippet
Content-Type: application/json

{
  "snippet": {
    "playlistId": "PLxyz123",
    "resourceId": {
      "kind": "youtube#video",
      "videoId": "abc123xyz"
    },
    "position": 0
  }
}
maton youtube playlist add-video --playlist PLxyz123 --video abc123xyz --position 0

Remove from Playlist

DELETE /youtube/youtube/v3/playlistItems?id=UEx5dGVzdAAA
maton youtube playlist remove-video UEx5dGVzdAAA

The argument is the playlistItem ID (from maton youtube playlist items {playlistId}), not the video ID.

List My Subscriptions

GET /youtube/youtube/v3/subscriptions?part=snippet&mine=true&maxResults=50
maton youtube subscription list --limit 50

Check Subscription to Channel

GET /youtube/youtube/v3/subscriptions?part=snippet&mine=true&forChannelId={channelId}
maton youtube subscription list --for-channel {channelId}

The response is empty when no subscription exists.

Subscribe to Channel

POST /youtube/youtube/v3/subscriptions?part=snippet
Content-Type: application/json

{
  "snippet": {
    "resourceId": {
      "kind": "youtube#channel",
      "channelId": "UCxyz123"
    }
  }
}
maton youtube subscription create --channel UCxyz123

Unsubscribe

DELETE /youtube/youtube/v3/subscriptions?id={subscriptionId}
maton youtube subscription delete {subscriptionId}

The argument is the subscription ID (from maton youtube subscription list), not the channel ID.

List Video Comments

GET /youtube/youtube/v3/commentThreads?part=snippet,replies&videoId={videoId}&order=time&maxResults=100
maton youtube comment list --video {videoId} --order time --limit 100

Add Comment to Video

POST /youtube/youtube/v3/commentThreads?part=snippet
Content-Type: application/json

{
  "snippet": {
    "videoId": "{videoId}",
    "topLevelComment": {
      "snippet": {
        "textOriginal": "Great video!"
      }
    }
  }
}
maton youtube comment create --video {videoId} --text 'Great video!'

Reply to Comment

POST /youtube/youtube/v3/comments?part=snippet
Content-Type: application/json

{
  "snippet": {
    "parentId": "{commentId}",
    "textOriginal": "Thanks for your comment!"
  }
}
maton youtube comment create --parent {commentId} --text 'Thanks for your comment!'

Delete Comment

DELETE /youtube/youtube/v3/comments?id={commentId}
maton youtube comment delete {commentId}

Daily Quota

Maton enforces a daily request quota of 3,000 requests per account, weighted by upstream request cost. The quota resets every 24 hours in a rolling window. To increase this limit, reach out to support@maton.ai.

Resources

On this page