How do you get Google Trends data via API?
To get Google Trends data via API, call ReefAPI's google-trends interest_over_time action with a keyword, geo and timeframe; the response returns timeline points and relative interest values as JSON.
This guide demonstrates the real Google Trends API engine with a captured response from . The example is only published because the engine passed the SEO snapshot gate.
Trend monitoring, SEO research, market timing and demand forecasting.
Call the live endpoint
- 1
Define keyword, geo and timeframe
Use the same parameters for repeated runs so relative values can be compared over time.
- 2
Call google-trends/v1/interest_over_time
POST the JSON params and parse the returned timeline array.
- 3
Chart values by timestamp
Use formatted_time for display and timestamp or date fields for storage and sorting.
- 4
Pair with SEO workflows
Join the trend values with keyword, SERP or content data when prioritizing topics.
Copy the request
These snippets use the captured request params for google-trends/v1/interest_over_time.
curl -X POST https://api.reefapi.com/google-trends/v1/trending_now \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"keyword":"bitcoin","geo":"US","timeframe":"today 12-m"}'import requests
r = requests.post(
"https://api.reefapi.com/google-trends/v1/trending_now",
headers={"x-api-key": REEF_KEY},
json={
"keyword": "bitcoin",
"geo": "US",
"timeframe": "today 12-m"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/google-trends/v1/trending_now", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"keyword": "bitcoin",
"geo": "US",
"timeframe": "today 12-m"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.google-trends.interest_over_time with {"keyword":"bitcoin","geo":"US","timeframe":"today 12-m"}.Captured output from ReefAPI
Captured on UTC. The response below is the committed snapshot, including the API envelope and metadata.
{
"method": "POST",
"url": "https://api.reefapi.com/google-trends/v1/interest_over_time",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"keyword": "bitcoin",
"geo": "US",
"timeframe": "today 12-m"
}
}{
"ok": true,
"meta": {
"api": "google-trends",
"endpoint": "interest_over_time",
"mode": "live",
"latency_ms": 2226.8,
"record_count": 53,
"bytes": 14239,
"cache_hit": false,
"completeness_pct": 100
},
"data": {
"keywords": [
"bitcoin"
],
"geo": "US",
"timeframe": "today 12-m",
"category": 0,
"property": "",
"timeline": [
{
"date": "[redacted-phone]",
"timestamp": 1752364800,
"formatted_time": "Jul 13 – 19, 2025",
"value": 54,
"has_data": true
},
{
"date": "[redacted-phone]",
"timestamp": 1752969600,
"formatted_time": "Jul 20 – 26, 2025",
"value": 44,
"has_data": true
},
{
"date": "[redacted-phone]",
"timestamp": 1753574400,
"formatted_time": "Jul 27 – Aug 2, 2025",
"value": 48,
"has_data": true
}
]
}
}Why this is hard manually
Google Trends is built for interactive exploration, not unattended product workflows. Manual exports do not scale, and browser automation has to deal with session state, chart hydration and regional parameters.
For a dashboard, the hard part is getting the same keyword, geo and timeframe shape every run so charts and alerts are comparable.
Why ReefAPI solves it
The live snapshot in this guide uses bitcoin, US and today 12-m, returning a timeline of weekly relative interest values. ReefAPI turns the chart into JSON with keywords, geography, timeframe and meta health fields.
That makes it practical to feed trend lines into SEO planning, investment research, content calendars or AI agents that need current demand signals.
Questions developers ask
Are Google Trends values absolute search volume?
No. Trends values are relative interest scores for the requested keyword, region and timeframe.
Can I compare multiple keywords?
Use the current Google Trends docs to confirm supported parameters; this guide demonstrates a single-keyword captured response.
How fresh is the sample?
The page prints the capturedAt timestamp from the committed snapshot so readers can see when the example was collected.
What should I store?
Store keyword, geo, timeframe, timestamp, formatted_time, value and capture time.