A Lua job talks to Trends API with one POST to https://api.trendsapi.ai/api, a Bearer key, and a JSON body that names a mode. There is no official Lua rock. LuaSocket sends the request. dkjson parses the envelope, then parses the body string a second time. Pulled on 2026-09-26, Google Search for lua programming scored 36.0 for the week of 2026-09-19, down 10.0% from 40.0. Bare lua scored 38.0, flat versus 38.0. lua programming 12M was 36.0 versus 62.0, down 41.94%. Bare lua 12M was 38.0 versus 37.0, up 2.7%. Do not copy 38.0 onto 36.0. Do not treat lua 5 Search 24.0, down 25.0% from 32.0, as the language phrase. The same helper that stores those rows also pulls a live Google Trends board; a rank-10 token that weekly Search printed at 12.0 versus 0.0 is documented in Caleb Flynn live rank versus weekly Search.

How does a Lua client call Trends API?

POST https://api.trendsapi.ai/api
Authorization: Bearer <api_key>
Content-Type: application/json

{"mode":"get_growth","source":"google search","keyword":"lua programming","percent_growth":["7D","30D","3M","12M"]}
local http = require("socket.http")
local ltn12 = require("ltn12")
local json = require("dkjson")

local payload = json.encode({
    mode = "get_growth",
    source = "google search",
    keyword = "lua programming",
    percent_growth = { "7D", "30D", "3M", "12M" },
})
local chunks = {}
local _, status = http.request({
    url = "https://api.trendsapi.ai/api",
    method = "POST",
    headers = {
        Authorization = "Bearer " .. os.getenv("TRENDSAPI_API_KEY"),
        ["Content-Type"] = "application/json",
        ["Content-Length"] = tostring(#payload),
    },
    source = ltn12.source.string(payload),
    sink = ltn12.sink.table(chunks),
})
local envelope = json.decode(table.concat(chunks))
-- body is a JSON string; parse it a second time
local inner = json.decode(envelope.body)

Lua has no HTTP client in the standard library. LuaSocket and dkjson are the rocks this helper uses. Module docs live at:

https://lunarmodules.github.io/luasocket/http.html
https://luarocks.org/modules/dhkolf/dkjson

The response envelope is {"statusCode": int, "body": string}. body is a JSON string and must be parsed a second time before reading recent_value. A Perl client that does the same double parse is on Perl Trends API. A Python client is on Python Trends API.

What did get_growth return for Lua language tokens?

get_growth for lua programming on google search tips on 2026-09-19. Store the exact strings. The language name, the version token, the JIT name, and the registry name are different series.

Keyword Period Recent date Recent Baseline date Baseline Growth
lua programming 7D 2026-09-19 36.0 2026-09-12 40.0 -10.0%
lua programming 14D 2026-09-19 36.0 2026-09-05 43.0 -16.28%
lua programming 30D 2026-09-19 36.0 2026-08-22 32.0 +12.5%
lua programming 3M 2026-09-19 36.0 2026-06-20 96.0 -62.5%
lua programming 12M 2026-09-19 36.0 2025-09-20 62.0 -41.94%
lua programming YTD 2026-09-19 36.0 2026-01-03 47.0 -23.4%
lua 7D 2026-09-19 38.0 2026-09-12 38.0 0.0%
lua 14D 2026-09-19 38.0 2026-09-05 41.0 -7.32%
lua 30D 2026-09-19 38.0 2026-08-22 42.0 -9.52%
lua 3M 2026-09-19 38.0 2026-06-20 61.0 -37.7%
lua 12M 2026-09-19 38.0 2025-09-20 37.0 +2.7%
lua YTD 2026-09-19 38.0 2026-01-03 47.0 -19.15%
lua 5 7D 2026-09-19 24.0 2026-09-12 32.0 -25.0%
lua 5 14D 2026-09-19 24.0 2026-09-05 43.0 -44.19%
lua 5 3M 2026-09-19 24.0 2026-06-20 73.0 -67.12%
lua 5 YTD 2026-09-19 24.0 2026-01-03 29.0 -17.24%
luajit 7D 2026-09-19 9.0 2026-09-12 12.0 -25.0%
luajit 3M 2026-09-19 9.0 2026-06-20 100.0 -91.0%
luarocks 7D 2026-09-19 12.0 2026-09-12 1.0 +1100.0%
luarocks 14D 2026-09-19 12.0 2026-09-05 18.0 -33.33%
luarocks YTD 2026-09-19 12.0 2026-01-03 20.0 -40.0%

get_time_series for lua programming on Google Search closed at 36 on 2026-09-19, matching get_growth 36.0. Adjacent weeks: 40 on 2026-09-12, 43 on 2026-09-05, 36 on 2026-08-29, 32 on 2026-08-22. Peak in this pull is 100 on 2026-06-06, with 96 on 2026-06-20, 94 on 2026-05-16, and 92 on 2026-04-04. Tip 36 is a slide off that June 2026 high, not a new peak. 3M printed -62.5% versus 96.0. 30D printed +12.5% versus 32.0. 7D printed -10.0% versus 40.0. A job that alerts on 7D -10.0% while 30D sits at +12.5% is reading a one-week dip, not a 30-day drop.

Bare lua closed at 38.0, flat versus 38.0. 14D was 38.0 versus 41.0 (-7.32%). 30D was 38.0 versus 42.0 (-9.52%). 3M was 38.0 versus 61.0 (-37.7%). 12M was 38.0 versus 37.0 (+2.7%). YTD was 38.0 versus 47.0 (-19.15%). The language name and the programming phrase do not share a 7D sign or a 12M sign. Do not copy 38.0 onto 36.0.

lua 5 closed at 24.0, down 25.0% from 32.0. 14D was 24.0 versus 43.0 (-44.19%). 3M was 24.0 versus 73.0 (-67.12%). 12M was 24.0 versus 41.0 (-41.46%). YTD was 24.0 versus 29.0 (-17.24%). Do not treat a version 7D -25.0% as language adoption. The programming phrase closed at 36.0 versus 40.0 (-10.0%).

luajit closed at 9.0, down 25.0% from 12.0. 14D was 9.0 versus 14.0 (-35.71%). 3M was 9.0 versus 100.0 (-91.0%). 12M was 9.0 versus 10.0 (-10.0%). YTD was 9.0 versus 12.0 (-25.0%). That JIT name closed far below lua programming 36.0. Store it as its own series. Do not copy 9.0 onto 36.0. Do not alert Lua adoption off a JIT 3M -91.0%.

luarocks closed at 12.0, up 1100.0% from 1.0. 14D was 12.0 versus 18.0 (-33.33%). 3M was 12.0 versus 100.0 (-88.0%). 12M was 12.0 versus 36.0 (-66.67%). YTD was 12.0 versus 20.0 (-40.0%). 7D and 14D signs diverge. The registry name spiked the week the programming phrase fell 10.0%. That registry name is a Search series, not package-download volume. There is no LuaRocks source on this API.

Neighbor languages on the same pull, same source, same 7D window:

Keyword 7D recent 7D baseline 7D growth 3M recent 3M baseline 3M growth
lua programming 36.0 40.0 -10.0% 36.0 96.0 -62.5%
lua 38.0 38.0 0.0% 38.0 61.0 -37.7%
python programming 47.0 39.0 +20.51% 47.0 88.0 -46.59%
perl programming 18.0 20.0 -10.0% 18.0 59.0 -69.49%
php programming 6.0 8.0 -25.0% 6.0 26.0 -76.92%

Do not copy python programming 47.0 or perl programming 18.0 onto lua programming 36.0. python programming 12M was 47.0 versus 24.0 (+95.83%). lua programming 12M was 36.0 versus 62.0 (-41.94%). Same calendar, opposite 12M sign. python programming YTD was 47.0 versus 21.0 (+123.81%). perl programming 12M was 18.0 versus 52.0 (-65.38%). php programming 12M was 6.0 versus 11.0 (-45.45%). A Perl Trends API helper stores that neighbor on the same 7D window. A PHP Trends API helper stores a scripting-language string the same way.

What did YouTube, News, and Wikipedia return?

YouTube for lua programming rose the week Search fell. Keyword Google News printed zeros. Wikipedia titles resolve on their own. Compare Wikipedia on volume.

YouTube get_growth for lua programming tipped 47.0 on 2026-09-19 versus 7.0 on 7D (+571.43%). 14D was 47.0 versus 48.0 (-2.08%). 30D was 47.0 versus 33.0 (+42.42%). 3M was 47.0 versus 83.0 (-43.37%). 12M was 47.0 versus 50.0 (-6.0%). YTD printed growth 999999 versus 0.0. Report 47.0 versus 0.0. get_time_series closed at 47 on 2026-09-19, matching get_growth. Adjacent weeks: 7 on 2026-09-12, 48 on 2026-09-05, 48 on 2026-08-29, 33 on 2026-08-22. Peak in this pull is 100 on 2022-09-17, with 96 on 2025-03-15, 94 on 2022-02-19, and 92 on 2025-12-27. Tip 47 is not that September 2022 spike. YouTube 47.0 is not Search 36.0. Do not treat a YouTube 7D +571.43% as the Search 7D -10.0%. The 7D signs are opposite.

Keyword Google News for lua programming tipped 0.0 versus 0.0 on 7D through YTD. The payload marked data_quality low with a warning that the underlying signal is over 90% zeros. Store the zeros. Do not fill News from Search 36.0. Keyword News and the Google News Top News board are different feeds. Mode docs sit at https://trendsapi.ai/docs.

Wikipedia for Lua resolved to Lua. 7D and 14D collapsed (collapsed_range: recent and baseline resolved to the same monthly point). August 2026 scored 87.0 with 15,905 pageviews versus July 80.2 with 14,676 (score +8.48%, volume +8.37%). 3M was 87.0 / 15,905 versus May 87.4 / 15,976 (volume -0.44%). 12M was 87.0 / 15,905 versus August 2025 92.1 / 16,831 (volume -5.5%). YTD was 87.0 / 15,905 versus January 85.7 / 15,670 (volume +1.5%). Peak in this pull is 100.0 / 18,255 in November 2025, with 97.7 / 17,843 in May 2025, 97.0 / 17,715 in October 2025, and 92.1 / 16,831 in August 2025. Tip 15,905 views is not that November 2025 high. Compare Wikipedia on volume. Do not join 15,905 views onto Search 36.0. Wikipedia source docs sit at https://trendsapi.ai/trends/wikipedia-trends.

There is no LuaRocks registry source on this API. npm covers npmjs. python covers PyPI. A Lua watchlist that wants rock-install counts has no third source to join onto Search 36.0. luarocks Search 12.0 is still a Search series, not registry volume.

How does a watchlist store live boards next to weekly scores?

get_top_trends has no keyword. Pair the live Google Trends board with get_growth on the exact board string. Live rank, 1-day rank_change, and 7-day rank_change are three feeds.

POST https://api.trendsapi.ai/api
Authorization: Bearer <api_key>
Content-Type: application/json

{"mode":"get_top_trends","type":"Google Trends","limit":25}

On 2026-09-26T10:01:42Z the live Google Trends board ranked caleb flynn at 10. The 1-day rank_change sort returned 19 rows (baseline 2026-09-25T02:01:37Z) and printed +11 from prev_rank 21. The 7-day sort returned 5 rows (baseline 2026-09-19T02:01:45Z) and printed +124 from prev_rank 134. Weekly Search for that exact string scored 12.0 versus 0.0. Growth printed 999999. Report 12.0 versus 0.0. The helper that stores those rows is the blog in this batch: Caleb Flynn live rank versus weekly Search. Board-shape notes for Google Trends live feeds sit at https://trendsapi.ai/trends/google-trends.

Free tier is 100 successful 200s per month. Only 200 responses count against quota. Six language tokens plus one live board is 7 calls. A Monday run that also pulls YouTube and Wikipedia for the programming phrase is 9 calls. Four weeks is 36 calls and still fits the free cap. Starter is 5,000, Pro 25,000, Business 100,000.

Envelope checklist

  1. POST https://api.trendsapi.ai/api with Authorization: Bearer <api_key>.
  2. Parse the transport JSON, then parse the body string a second time.
  3. Store lua, lua programming, lua 5, luajit, and luarocks as separate series.
  4. Compare Wikipedia Lua on volume (15,905 August views), not on 87.0.
  5. Pair get_top_trends rank with both rank_change windows and get_growth on the exact board string.

A PHP client that uses the same envelope is on PHP Trends API.