Rotating Proxy Network
Our API includes a built-in rotating proxy system that automatically changes IP addresses for every request.
Get Google Trends data at scale using Scrapingdog's API. The API manages proxy management & all other corner cases to get blockage-free data.
"interest_over_time": {
"timerange_data": [],
"timeline_data": [
{
"date": "Jan 28 – Feb 3, 2024",
"timestamp": "1706400000",
"values": [
{ "query": "coffee", "value": 83, "extracted_value": "83" }
]
},
{
"date": "Feb 4 – 10, 2024",
"timestamp": "1707004800",
"values": [
{ "query": "coffee", "value": 84, "extracted_value": "84" }
]
},
{
"date": "Feb 11 – 17, 2024",
"timestamp": "1707609600",
"values": [
{ "query": "coffee", "value": 81, "extracted_value": "81" }
]
}
]
}import requests
api_key = "5eaa61a6e562fc52fe763tr516e4653"
url = "https://api.scrapingdog.com/google_trends/"
params = {
"api_key": api_key,
"query": "coffee",
"data_type": "TIMESERIES"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Request failed with status code: {response.status_code}")import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
// Set the API key and request parameters
String apiKey = "5eaa61a6e562fc52fe763tr516e4653";
String query = "coffee";
String dataType = "TIMESERIES";
// Construct the API endpoint URL
String apiUrl = "https://api.scrapingdog.com/google_trends/?api_key=" + apiKey
+ "&query=" + query
+ "&data_type=" + dataType;
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
System.out.println(response.toString());
} else {
System.out.println("HTTP request failed with response code: " + responseCode);
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}<?php
// Set the API key and request parameters
$api_key = '5eaa61a6e562fc52fe763tr516e4653';
$query = 'coffee';
$data_type = 'TIMESERIES';
// Set the API endpoint
$url = 'https://api.scrapingdog.com/google_trends/?api_key=' . $api_key . '&query=' . $query . '&data_type=' . $data_type;
// Initialize cURL session
$ch = curl_init($url);
// Set cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute the cURL request
$response = curl_exec($ch);
// Check if the request was successful
if ($response === false) {
echo 'cURL error: ' . curl_error($ch);
} else {
echo $response;
}
// Close the cURL session
curl_close($ch);require 'net/http'
require 'uri'
# Set the API key and request parameters
api_key = '5eaa61a6e562fc52fe763tr516e4653'
query = 'coffee'
data_type = 'TIMESERIES'
# Construct the API endpoint URL
url = URI.parse("https://api.scrapingdog.com/google_trends/?api_key=#{api_key}&query=#{query}&data_type=#{data_type}")
# Create an HTTP GET request
request = Net::HTTP::Get.new(url)
# Create an HTTP client
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true # Enable SSL (https)
# Send the request and get the response
response = http.request(request)
# Check if the request was successful
if response.is_a?(Net::HTTPSuccess)
puts response.body
else
puts "HTTP request failed with code: #{response.code}, message: #{response.message}"
endconst axios = require('axios');
const api_key = '5eaa61a6e562fc52fe763tr516e4653';
const url = 'https://api.scrapingdog.com/google_trends/';
const params = {
api_key: api_key,
query: 'coffee',
data_type: 'TIMESERIES',
};
axios
.get(url, { params: params })
.then(function (response) {
if (response.status === 200) {
const data = response.data;
console.log(data);
} else {
console.log('Request failed with status code: ' + response.status);
}
})
.catch(function (error) {
console.error('Error making the request: ' + error.message);
});interest_over_timetimeline_datatimerange_datadatetimestampvaluesqueryvalueextracted_valueinterest_by_regiongeocompared_breakdown_by_regionquerygeoregiondata_typedatelanguagecatgproptzGoogle Trends has no official public API, so teams fight the throttled web UI, brittle unofficial endpoints, index normalization, and quota lockouts.
Google never shipped a public Trends API, so you reverse-engineer the internal widget endpoints and tokens that break without notice.
Every series is normalized against its own peak, so comparing keywords pulled in separate calls produces misleading numbers.
Trends throttles hard after a few requests from one IP, returning 429s and empty payloads that stall any batch job.
Region codes, the timezone offset, and predefined date ranges each reshape the payload, so a small input mistake returns the wrong trend.
With Scrapingdog, one API call handles proxies, CAPTCHA, parsing, and scaling, so you focus on the trends data.
Access real-time search data to spot emerging trends the moment they start to move.
Refine campaigns using trends data to time your messaging around peak interest periods.
Monitor competitor search frequency and context to understand shifting demand.
Integrate trends data into your stack to adapt quickly to market changes.
Our API includes a built-in rotating proxy system that automatically changes IP addresses for every request.
Scrapingdog automatically bypasses CAPTCHA and anti-bot protection used by Google, so you can send requests without worrying about blocks.
Extract interest data by geographic origin, from entire countries down to individual cities, in structured JSON.
Pull interest over time, interest by region, and compared breakdown by region from one endpoint.
Narrow results with the cat parameter and pivot gprop across web, news, images, or youtube.
Receive trends data in just a few seconds with our high-performance Google scraping API.
Track shifts in what people search for over time to understand changing consumer interests and demand.
Measure how launches, news, or campaigns move search interest before, during, and after an event.
Forecast seasonal spikes by analyzing historical interest patterns across recurring periods.
Optimize content strategy around rising queries and topics your audience is actively searching for.
Compare interest by region and city to prioritize markets and localize your go-to-market.
Evaluate the reach and momentum of brands, topics, or creators to inform partnership decisions.
Sign up and get free credits to start testing the Trends API.
Access your unique API key from the dashboard and use it to scrape the data.
Call /google_trends with a query, a geo code, and a data_type.
Get clean JSON back, ready to chart or forecast the trend you need.
Start your web scraping journey with 200 free credits. Test our service and upgrade to one of the plans below. Cancel anytime.

I got the free trial and in less than a minute I already integrated with their API to scrape Google, matter of fact they had all the plug-and-play codes ready for me, It was seamless. I am about to upgrade as I have used up my trial credits.
United States
I love how you can use it to scrape data from Google.
Oslo, Norway
Scrapingdog is an awesome service. I use it with my Local Leads Sniper system and thanks to it I have been able to land a few clients since it gave me all the info that my client's Google Business Profile was missing. Great service!
Mexico
Their API success rate is 100% on the tests that I have done. The service seems very reliable.
Manila, Philippines
Yes, the API has a rate limit depending on your chosen subscription plan. For detailed information on request limits and how to manage them efficiently, please refer to the documentation or message us on live chat.
The API allows you to extract real-time insights on what people are searching for globally. You can gather data such as keyword interest over time, regional search trends, related queries, and rising topics. It's ideal for seasonal analysis, tracking emerging trends, managing brand reputation during a crisis, and optimizing marketing or ad campaigns.
Yes, in addition to data from Google Trends, we have dedicated APIs for Google Scholar, Google Images, Google Lens & Google Search API, etc.
Our development team continuously monitors changes in Google Trends and updates accordingly to ensure consistent and reliable data extraction.
Each API request consumes a certain number of credits based on the dedicated API you're using. For example the Google Search API costs 5 credits per request. So, if you make one request to the Google Search API, it will deduct 5 credits from the available credits in your account. The number of credits required per request can vary depending on the specific API you're using. You can find more details about the credit usage for each API in the documentation.
No, Google does not provide an official public API for Google Trends. The best way to scale is by using a third party API.
Get 200 free credits to spin the API. No credit card required!