Apinoa Docs

Profile

Get a YouTube channel.

View raw .mdx
GET | POST /v1/youtube/profile

Send parameters as a query string with GET, or as a JSON body with POST. Both are equivalent.

What to Pass

PassReadsNotes
username or userIdThe channelusername is the @handle; userId is the UC… id

Pass one source per call. Every identifier also takes the page URL.

Parameters

ParameterTypeRequiredNotes
includestring listabout: also read the channel's About panel — join date (createdAt), exact video count, total views, country and every link (+1 unit).
userIdstringChannel id (UC…).
usernamestringChannel @handle (with or without @), or the channel URL (/@handle, /channel/UC…, /c/…, /user/…).

Request

curl "https://gateway.apinoa.com/v1/youtube/profile?username=%40mkbhd" \
  -H "x-api-key: $APINOA_API_KEY"

Response

Returns Account in data. A real response, shortened: arrays keep their first entries and long text is cut.

{
  "success": true,
  "data": {
    "platform": "youtube",
    "id": "UCBJycsmduvYEL83R_U4JriQ",
    "handle": "mkbhd",
    "displayName": "Marques Brownlee",
    "bio": "MKBHD: Quality Tech Videos | YouTuber | Geek | Consumer Electronics | Tech Head | Internet Personality!\n\nbusiness@MKBHD…",
    "url": "https://www.youtube.com/channel/UCBJycsmduvYEL83R_U4JriQ",
    "avatarUrl": "https://yt3.googleusercontent.com/qu4TmIaYUlS41-dJ9gZ7DUR3nilvmB5_11i6OKSdvNnBNiyOusZP1bMN6ICnuxtjFBb6ioKgRQ=s900-c-k-c…",
    "bannerUrl": "https://yt3.googleusercontent.com/zi_48HwHU4s0Hnb6tZuvRzTfCPHrLEnrtIMDLzMauDEyDmURh9JZ4wrNd3lKr7m9uVnT4YjYKw=w2560-fcro…",
    "verified": true,
    "counts": {
      "followers": 21400000,
      "posts": 1800
    },
    "links": [
      {
        "url": "http://twitter.com/MKBHD",
        "title": "X"
      }
    ],
    "ext": {
      "keywords": [
        "MKBHD",
        "MarquesBrownlee"
      ],
      "vanityUrl": "http://www.youtube.com/@mkbhd",
      "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCBJycsmduvYEL83R_U4JriQ",
      "availableCountryCodes": [
        "BH",
        "GG"
      ],
      "isFamilySafe": true
    }
  }
}

Errors

StatusCodeMeaning
400INVALID_PARAMSA parameter is missing, unknown or out of range. The message names it.
401UNAUTHORIZEDThe x-api-key header is missing, or the key is revoked or unknown.
402INSUFFICIENT_BALANCEThe balance does not cover this call. Top up in the dashboard.
404NOT_FOUNDThe account, post or group does not exist, or is private, deleted or age-restricted.
429MARKETPLACE_SATURATEDToo many concurrent calls. Retry after the Retry-After seconds.
502UPSTREAM_ERRORThe platform answered with something unusable. Retry with backoff.

Every code is listed in Errors. Failed calls are not billed.

Pricing

Price $0.001 per call, plus $0.001 for each extra call it makes — at most 2 more, so $0.003 in total. List price; the rate steps down above 1,000 calls a day.

On this page