Find an API

Search public APIs with auth details & Postman guides

← All APIs

Web Risk API

googleapis · Analytics

Analytics No Auth Free & Open analytics media

Web Risk API API

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET webrisk.hashes.search

Gets the full hashes that match the requested hash prefix. This is used after a hash prefix is looked up in a threatList and there is a match. The client side threatList only holds partial hashes so the client must query this method to determine if there is a full hash match of a threat.

https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/hashes:search?alt=json&key=YOUR_API_KEY&fields=example&$.xgafv=1&callback=example&quotaUser=example&hashPrefix=example&uploadType=example&oauth_token=example&prettyPrint=true&threatTypes=example&access_token=example&upload_protocol=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/hashes:search?alt=json&key=YOUR_API_KEY&fields=example&$.xgafv=1&callback=example&quotaUser=example&hashPrefix=example&uploadType=example&oauth_token=example&prettyPrint=true&threatTypes=example&access_token=example&upload_protocol=example"
import requests
params = {
    "alt": "json",
    "key": "YOUR_API_KEY",
    "fields": "example",
    "$.xgafv": "1",
    "callback": "example",
    "quotaUser": "example",
    "hashPrefix": "example",
    "uploadType": "example",
    "oauth_token": "example",
    "prettyPrint": "true",
    "threatTypes": "example",
    "access_token": "example",
    "upload_protocol": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/hashes:search",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/hashes:search');
url.searchParams.set('alt', 'json');
url.searchParams.set('key', 'YOUR_API_KEY');
url.searchParams.set('fields', 'example');
url.searchParams.set('$.xgafv', '1');
url.searchParams.set('callback', 'example');
url.searchParams.set('quotaUser', 'example');
url.searchParams.set('hashPrefix', 'example');
url.searchParams.set('uploadType', 'example');
url.searchParams.set('oauth_token', 'example');
url.searchParams.set('prettyPrint', 'true');
url.searchParams.set('threatTypes', 'example');
url.searchParams.set('access_token', 'example');
url.searchParams.set('upload_protocol', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/hashes:search")
	q := baseURL.Query()
	q.Set("alt", "json")
	q.Set("key", "YOUR_API_KEY")
	q.Set("fields", "example")
	q.Set("$.xgafv", "1")
	q.Set("callback", "example")
	q.Set("quotaUser", "example")
	q.Set("hashPrefix", "example")
	q.Set("uploadType", "example")
	q.Set("oauth_token", "example")
	q.Set("prettyPrint", "true")
	q.Set("threatTypes", "example")
	q.Set("access_token", "example")
	q.Set("upload_protocol", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/hashes:search")
uri.query = URI.encode_www_form({
  "alt" => "json",
  "key" => "YOUR_API_KEY",
  "fields" => "example",
  "$.xgafv" => "1",
  "callback" => "example",
  "quotaUser" => "example",
  "hashPrefix" => "example",
  "uploadType" => "example",
  "oauth_token" => "example",
  "prettyPrint" => "true",
  "threatTypes" => "example",
  "access_token" => "example",
  "upload_protocol" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/hashes:search?" . http_build_query([
    "alt" => "json",
    "key" => "YOUR_API_KEY",
    "fields" => "example",
    "$.xgafv" => "1",
    "callback" => "example",
    "quotaUser" => "example",
    "hashPrefix" => "example",
    "uploadType" => "example",
    "oauth_token" => "example",
    "prettyPrint" => "true",
    "threatTypes" => "example",
    "access_token" => "example",
    "upload_protocol" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET webrisk.threatLists.computeDiff

Gets the most recent threat list diffs. These diffs should be applied to a local database of hashes to keep it up-to-date. If the local database is empty or excessively out-of-date, a complete snapshot of the database will be returned. This Method only updates a single ThreatList at a time. To updat

https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/threatLists:computeDiff?alt=json&key=YOUR_API_KEY&fields=example&$.xgafv=1&callback=example&quotaUser=example&threatType=THREAT_TYPE_UNSPECIFIED&uploadType=example&oauth_token=example&prettyPrint=true&access_token=example&versionToken=example&upload_protocol=example&constraints.maxDiffEntries=1&constraints.maxDatabaseEntries=1&constraints.supportedCompressions=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/threatLists:computeDiff?alt=json&key=YOUR_API_KEY&fields=example&$.xgafv=1&callback=example&quotaUser=example&threatType=THREAT_TYPE_UNSPECIFIED&uploadType=example&oauth_token=example&prettyPrint=true&access_token=example&versionToken=example&upload_protocol=example&constraints.maxDiffEntries=1&constraints.maxDatabaseEntries=1&constraints.supportedCompressions=example"
import requests
params = {
    "alt": "json",
    "key": "YOUR_API_KEY",
    "fields": "example",
    "$.xgafv": "1",
    "callback": "example",
    "quotaUser": "example",
    "threatType": "THREAT_TYPE_UNSPECIFIED",
    "uploadType": "example",
    "oauth_token": "example",
    "prettyPrint": "true",
    "access_token": "example",
    "versionToken": "example",
    "upload_protocol": "example",
    "constraints.maxDiffEntries": "1",
    "constraints.maxDatabaseEntries": "1",
    "constraints.supportedCompressions": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/threatLists:computeDiff",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/threatLists:computeDiff');
url.searchParams.set('alt', 'json');
url.searchParams.set('key', 'YOUR_API_KEY');
url.searchParams.set('fields', 'example');
url.searchParams.set('$.xgafv', '1');
url.searchParams.set('callback', 'example');
url.searchParams.set('quotaUser', 'example');
url.searchParams.set('threatType', 'THREAT_TYPE_UNSPECIFIED');
url.searchParams.set('uploadType', 'example');
url.searchParams.set('oauth_token', 'example');
url.searchParams.set('prettyPrint', 'true');
url.searchParams.set('access_token', 'example');
url.searchParams.set('versionToken', 'example');
url.searchParams.set('upload_protocol', 'example');
url.searchParams.set('constraints.maxDiffEntries', '1');
url.searchParams.set('constraints.maxDatabaseEntries', '1');
url.searchParams.set('constraints.supportedCompressions', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/threatLists:computeDiff")
	q := baseURL.Query()
	q.Set("alt", "json")
	q.Set("key", "YOUR_API_KEY")
	q.Set("fields", "example")
	q.Set("$.xgafv", "1")
	q.Set("callback", "example")
	q.Set("quotaUser", "example")
	q.Set("threatType", "THREAT_TYPE_UNSPECIFIED")
	q.Set("uploadType", "example")
	q.Set("oauth_token", "example")
	q.Set("prettyPrint", "true")
	q.Set("access_token", "example")
	q.Set("versionToken", "example")
	q.Set("upload_protocol", "example")
	q.Set("constraints.maxDiffEntries", "1")
	q.Set("constraints.maxDatabaseEntries", "1")
	q.Set("constraints.supportedCompressions", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/threatLists:computeDiff")
uri.query = URI.encode_www_form({
  "alt" => "json",
  "key" => "YOUR_API_KEY",
  "fields" => "example",
  "$.xgafv" => "1",
  "callback" => "example",
  "quotaUser" => "example",
  "threatType" => "THREAT_TYPE_UNSPECIFIED",
  "uploadType" => "example",
  "oauth_token" => "example",
  "prettyPrint" => "true",
  "access_token" => "example",
  "versionToken" => "example",
  "upload_protocol" => "example",
  "constraints.maxDiffEntries" => "1",
  "constraints.maxDatabaseEntries" => "1",
  "constraints.supportedCompressions" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/threatLists:computeDiff?" . http_build_query([
    "alt" => "json",
    "key" => "YOUR_API_KEY",
    "fields" => "example",
    "$.xgafv" => "1",
    "callback" => "example",
    "quotaUser" => "example",
    "threatType" => "THREAT_TYPE_UNSPECIFIED",
    "uploadType" => "example",
    "oauth_token" => "example",
    "prettyPrint" => "true",
    "access_token" => "example",
    "versionToken" => "example",
    "upload_protocol" => "example",
    "constraints.maxDiffEntries" => "1",
    "constraints.maxDatabaseEntries" => "1",
    "constraints.supportedCompressions" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET webrisk.uris.search

This method is used to check whether a URI is on a given threatList. Multiple threatLists may be searched in a single query. The response will list all requested threatLists the URI was found to match. If the URI is not found on any of the requested ThreatList an empty response will be returned.

https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/uris:search?alt=json&key=YOUR_API_KEY&uri=example&fields=example&$.xgafv=1&callback=example&quotaUser=example&uploadType=example&oauth_token=example&prettyPrint=true&threatTypes=example&access_token=example&upload_protocol=example

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/uris:search?alt=json&key=YOUR_API_KEY&uri=example&fields=example&$.xgafv=1&callback=example&quotaUser=example&uploadType=example&oauth_token=example&prettyPrint=true&threatTypes=example&access_token=example&upload_protocol=example"
import requests
params = {
    "alt": "json",
    "key": "YOUR_API_KEY",
    "uri": "example",
    "fields": "example",
    "$.xgafv": "1",
    "callback": "example",
    "quotaUser": "example",
    "uploadType": "example",
    "oauth_token": "example",
    "prettyPrint": "true",
    "threatTypes": "example",
    "access_token": "example",
    "upload_protocol": "example"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/uris:search",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/uris:search');
url.searchParams.set('alt', 'json');
url.searchParams.set('key', 'YOUR_API_KEY');
url.searchParams.set('uri', 'example');
url.searchParams.set('fields', 'example');
url.searchParams.set('$.xgafv', '1');
url.searchParams.set('callback', 'example');
url.searchParams.set('quotaUser', 'example');
url.searchParams.set('uploadType', 'example');
url.searchParams.set('oauth_token', 'example');
url.searchParams.set('prettyPrint', 'true');
url.searchParams.set('threatTypes', 'example');
url.searchParams.set('access_token', 'example');
url.searchParams.set('upload_protocol', 'example');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/uris:search")
	q := baseURL.Query()
	q.Set("alt", "json")
	q.Set("key", "YOUR_API_KEY")
	q.Set("uri", "example")
	q.Set("fields", "example")
	q.Set("$.xgafv", "1")
	q.Set("callback", "example")
	q.Set("quotaUser", "example")
	q.Set("uploadType", "example")
	q.Set("oauth_token", "example")
	q.Set("prettyPrint", "true")
	q.Set("threatTypes", "example")
	q.Set("access_token", "example")
	q.Set("upload_protocol", "example")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/uris:search")
uri.query = URI.encode_www_form({
  "alt" => "json",
  "key" => "YOUR_API_KEY",
  "uri" => "example",
  "fields" => "example",
  "$.xgafv" => "1",
  "callback" => "example",
  "quotaUser" => "example",
  "uploadType" => "example",
  "oauth_token" => "example",
  "prettyPrint" => "true",
  "threatTypes" => "example",
  "access_token" => "example",
  "upload_protocol" => "example"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/googleapis.com/webrisk/v1/v1/uris:search?" . http_build_query([
    "alt" => "json",
    "key" => "YOUR_API_KEY",
    "uri" => "example",
    "fields" => "example",
    "$.xgafv" => "1",
    "callback" => "example",
    "quotaUser" => "example",
    "uploadType" => "example",
    "oauth_token" => "example",
    "prettyPrint" => "true",
    "threatTypes" => "example",
    "access_token" => "example",
    "upload_protocol" => "example"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with Web Risk API?

Web Risk API is a Analytics API. Developers commonly use analytics APIs for:

  • tracking product usage and user behaviour
  • building custom reporting and BI dashboards
  • measuring marketing and campaign performance
  • running funnel, retention, and cohort analysis
  • aggregating metrics from multiple data sources

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Web Risk API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide

Open documentation ↗