Retrieve interest by region for a keyword: the relative search interest per region on a 0-100 scale, like the Google Trends "Interest by region" map. Compare up to 5 keywords in one request by separating them with commas (e.g. "coffee,tea"); every compared keyword shares one 0-100 scale per region, so the values are directly comparable. Use region=COUNTRY with an empty geo for the worldwide country list.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
1 required parameter needed before sending a request.
7 optional filters available.
string
Required
The search keyword to analyze (e.g., "coffee"). To compare keywords, pass up to 5 terms separated by commas (e.g., "coffee,tea"). Each term can be up to 100 characters.
coffee
string
Optional
Geographic location code (e.g., "US", "DE", "GB"). Leave empty for the worldwide list (250 countries).
US
string
Optional
REGION (default) returns sub-national regions for the geo (e.g., 51 states for US). COUNTRY returns the worldwide country list and requires an empty geo.
REGION
string
Optional
Time period: a relative token (today 12-m, today 3-m, today 1-m, now 1-d, now 7-d, now 4-h) or an absolute range (YYYY-MM-DD YYYY-MM-DD).
today 12-m
integer
Optional
Google Trends category id (0 for all categories)
0
string
Optional
Search property: images, news, youtube or froogle (empty for web search)
example
integer
Optional
Timezone offset in minutes
0
string
Optional
Language code for results (e.g., en, en-US, de-DE)
en-US
Request Examples
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: YOUR_API_KEY_HERE"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
<?php
use Illuminate\Support\Facades\Http;
$response = Http::timeout(30)
->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
->get('https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m');
if ($response->successful()) {
echo $response->body();
} else {
echo "Error: " . $response->status();
}
const options = {
method: 'GET',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE'
}
};
fetch('https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m', options)
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const axios = require('axios');
const options = {
method: 'GET',
url: 'https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m',
headers: {
x-api-key: 'YOUR_API_KEY_HERE',
}
};
try {
const response = await axios(options);
console.log(response.data);
} catch (error) {
console.error('Error:', error.message);
}
require 'net/http'
require 'uri'
uri = URI.parse("https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'
begin
response = http.request(request)
puts response.body
rescue => e
puts "Error: #{e.message}"
end
import http.client
import json
conn = http.client.HTTPSConnection("scrappa.co")
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
conn.request("GET", "/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
except Exception as e:
print(f"Error: {e}")
finally:
conn.close()
import requests
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
response = requests.get('https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m', headers=headers)
response.raise_for_status()
print(response.text)
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class ApiExample {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m")
.addHeader("x-api-key", "YOUR_API_KEY_HERE")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
System.out.println(response.body().string());
} else {
System.out.println("Error: " + response.code());
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m", nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
#!/bin/bash
curl -X GET \
-H "x-api-key: YOUR_API_KEY_HERE" \
"https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m"
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");
try
{
var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m"));
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
import axios from 'axios';
async function run(): Promise<void> {
try {
const response = await axios({
method: 'GET',
url: 'https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE',
},
});
console.log(response.data);
} catch (error) {
console.error('Error:', error);
}
}
void run();
use reqwest::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let response = client
.get("https://scrappa.co/api/google-trends/interest-by-region?q=coffee&geo=US&date=today+12-m")
.header("x-api-key", "YOUR_API_KEY_HERE")
.send()
.await?;
println!("{}", response.text().await?);
Ok(())
}
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
interest_by_region
queries
geo
date
response_time_ms
Common interest_by_region fields
geo
location
value
max_value_index
{
"interest_by_region": [
{
"geo": "US-WY",
"location": "Wyoming",
"value": 100,
"max_value_index": 0,
"formatted_value": "100",
"has_data": true
}
],
"queries": [
"coffee"
],
"geo": "US",
"date": "today 12-m",
"response_time_ms": 412
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
HTTP 400
Missing required query parameter
HTTP 422
Invalid geo, region, date, cat, gprop, tz or hl parameter
HTTP 503
Upstream service error
Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
Try It Live
Test this endpoint in our interactive playground with real data.