Google Trends API endpoint
Returns Google Trends Trending Now for a country or territory (`geo`, default `US`): each trend's query, rank, search traffic, status, start and update time, related terms and news articles, with explore and share links. Filter by time window, category and status, and choose the sort order.
/google/trends/trendingQuery parameters:
geo: optional country/territory location code. Defaults to US. Allowed values: AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BA, BW, BV, BR, IO, VG, BN, BG, BF, BI, KH, CM, CA, CV, BQ, KY, CF, TD, CL, CN, CX, CC, CO, KM, CG, CD, CK, CR, CI, HR, CU, CW, CY, CZ, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, SZ, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, XK, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, KP, MK, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, RE, RO, RU, RW, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, KR, SS, ES, LK, BL, SH, KN, LC, MF, PM, VC, SD, SR, SJ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TR, TM, TC, TV, UM, VI, UG, UA, AE, GB, US, UY, UZ, VU, VA, VE, VN, WF, EH, YE, ZM, ZW.hl: optional locale. Defaults to en-US.tz: optional timezone offset in minutes. Defaults to 0.window: optional trend window. Allowed values: 4h, 24h, 48h, 7d. Defaults to 24h.time_range: optional alias for window.category: optional Trends category id. Allowed values: 0, 3, 47, 44, 22, 12, 5, 7, 71, 8, 45, 65, 11, 13, 958, 19, 16, 299, 14, 66, 29, 533, 174, 18, 20, 67. Defaults to 0.status: optional status filter. Allowed values: all, active, ended. Defaults to all.sort_by: optional sort mode. Allowed values: relevance, title, recency, search_volume. Defaults to relevance.limit: optional maximum rows to return. Defaults to 20, maximum 100.Example HK request:
GET /api/v1/google/trends/trending?geo=HK&hl=en-US&time_range=24h&limit=10
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| rank | 20 | 1 to 20, median 10 |
| title | 20 | “rj mitte” and 19 other values |
| query | 20 | “rj mitte” and 19 other values |
| traffic | 20 | “rj mitte cause of death” and 19 other values |
| status | 20 | active in all 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| geo | string | No | Country/territory location code Allowed values: AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BA, BW, BV, BR, IO, VG, BN, BG, BF, BI, KH, CM, CA, CV, BQ, KY, CF, TD, CL, CN, CX, CC, CO, KM, CG, CD, CK, CR, CI, HR, CU, CW, CY, CZ, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, SZ, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, XK, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, KP, MK, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, RE, RO, RU, RW, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, KR, SS, ES, LK, BL, SH, KN, LC, MF, PM, VC, SD, SR, SJ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TR, TM, TC, TV, UM, VI, UG, UA, AE, GB, US, UY, UZ, VU, VA, VE, VN, WF, EH, YE, ZM, ZW. | ||
| hl | string | No | Google Trends UI locale | ||
| tz | integer | No | Timezone offset minutes | ||
| window | string | No | Trend window Allowed values: 4h, 24h, 48h, 7d. | ||
| time_range | string | No | Alias for window Allowed values: 4h, 24h, 48h, 7d. | ||
| category | integer | No | Trending category id Allowed values: 0, 3, 47, 44, 22, 12, 5, 7, 71, 8, 45, 65, 11, 13, 958, 19, 16, 299, 14, 66, 29, 533, 174, 18, 20, 67. | ||
| status | string | No | Trend status filter Allowed values: all, active, ended. | ||
| sort_by | string | No | Sort mode Allowed values: relevance, title, recency, search_volume. | ||
| limit | integer | No | Maximum rows to return | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/google/trends/trending?geo=AF&window=4h&time_range=4h&category=0&status=all&sort_by=relevance&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"geo": "US",
"hl": "en-US",
"window": "24h",
"time_range": "24h",
"category": 0,
"status": "all",
"sort_by": "relevance",
"items": [
{
"rank": 1,
"title": "chatgpt",
"query": "chatgpt",
"traffic": "200K+",
"status": "active",
"explore_url": "https://trends.google.com/trends/explore?q=chatgpt&geo=US"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/trends.trendingResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | trends.TrendingResponse | No | ||||
| data.category | integer | No | 0 | Trends category ID that was applied. `0` means all categories. | ||
| data.geo | string | No | US | Country code the trends cover, such as `US`. | ||
| data.hl | string | No | en-US | Locale that was applied, such as `en-US`. | ||
| data.items | array | No | Trending searches, one entry per trend. | |||
| data.items[].articles | array | No | News articles linked to the trend. | |||
| data.items[].articles[].source | string | No | Example News | Name of the news outlet that published the article. | ||
| data.items[].articles[].time | string | No | 2 hours ago | When the article was published, as Google words it, such as `2 hours ago`. | ||
| data.items[].articles[].title | string | No | Why chatgpt is trending | Headline of the news article. | ||
| data.items[].articles[].url | string | No | https://example.com/news | URL of the news article. | ||
| data.items[].explore_url | string | No | https://trends.google.com/trends/explore?q=chatgpt&geo=US | Google Trends Explore URL for the trend. | ||
| data.items[].query | string | No | chatgpt | Search query behind the trend. | ||
| data.items[].rank | integer | No | 1 | Rank of the trend in the list, with `1` as the top entry. | ||
| data.items[].related_terms | array | No | Related search terms listed for the trend. | |||
| data.items[].share_url | string | No | Link for sharing the trend. | |||
| data.items[].started_unix | integer | No | 1777075200 | Time the trend started, in Unix seconds. | ||
| data.items[].status | string | No | active | Whether the trend is `active` or `ended`. | ||
| data.items[].title | string | No | chatgpt | Title of the trend. | ||
| data.items[].traffic | string | No | 200K+ | Approximate search volume label for the trend, such as `200K+`. | ||
| data.items[].updated_unix | integer | No | 1777078800 | Time the trend was last updated, in Unix seconds. | ||
| data.sort_by | string | No | relevance | Sort order that was applied: `relevance`, `title`, `recency` or `search_volume`. | ||
| data.status | string | No | all | Status filter that was applied: `all`, `active` or `ended`. | ||
| data.time_range | string | No | 24h | Time window that was applied. Same value as `window`. | ||
| data.tz | integer | No | 0 | Timezone offset in minutes that was applied. | ||
| data.window | string | No | 24h | Time window that was applied: `4h`, `24h`, `48h` or `7d`. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Invalid input | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
| 503 | Google Trends upstream request failed | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/google/trends/trending?geo=AF&window=4h&time_range=4h&category=0&status=all&sort_by=relevance&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"