YouTube search volume in a scheduler usually dies on Data API quota. search.list has its own daily bucket. That is the wrong meter for a 0-100 interest series. Trends API takes source youtube on get_growth or get_time_series. The caller's YouTube project is never billed. body is a JSON string and must be parsed a second time. Docs: the API reference. YouTube notes: the YouTube guide. Caps: pricing.
search.list sits in its own daily bucket
Google's current quota text gives search.list and videos.insert separate daily caps (default 100 each) and 10,000 units per day for other methods. Even a cheap search.list page burns the search bucket. A trend job that pages search results will empty that bucket before lunch. Check the quota calculator if a Data API path is still required for comments or uploads.
source youtube is interest, not a Data API page
POST https://api.trendsapi.ai/api
Authorization: Bearer <api_key>
Content-Type: application/json
{"mode":"get_growth","source":"youtube","keyword":"air fryer recipes","percent_growth":["3M","12M"]}
air fryer recipes is a labeled sample. The source string is youtube, not google search with a leftover gprop. A second POST is required to compare web search and YouTube on the same term.
YouTube Trending is a watch board
{"mode":"get_top_trends","type":"YouTube Trending","limit":25}
No keyword. This feed is what is trending to watch now. It is not a search-volume table and it is not a substitute for source youtube. Do not sort a watch board and call the result "search demand."
Growth windows on a video title
percent_growth presets (3M, 6M, 12M, YTD) are the point-to-point job. get_time_series is the chart. A video id (dQw4w9WgXcQ) is a poor keyword. Use the title people search. If the inner payload is empty, the title is too exact. Broaden it. The product MCP server at https://api.trendsapi.ai/mcp uses the same source string.