HypeStat API
Website statistics, rankings and technologies for your own apps. Free, with a simple JSON API.
Introduction
The HypeStat API gives you the same data you see on HypeStat in your own apps: traffic estimates and history, rankings, website worth, technologies, hosting, DNS, security and email checks, SEO metrics and more, for millions of websites, plus top-site lists by country, category, technology and hosting provider.
All endpoints live under one base URL and return JSON:
https://api.hypestat.com/v1
Every request needs an API key. You can create up to 3 keys for free in your dashboard. The quickest way to try a request is the API Builder, which shows live code and the real response.
Successful responses wrap the result in data and add request details in meta. Numbers are numbers, percentages are on a 0–100 scale, dates are ISO 8601 (UTC), and values we do not have are null.
Authentication
Send your key in the Authorization header as a Bearer token. The X-API-Key header is also accepted. Never put the key in the URL.
Authorization: Bearer hs_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
A key is shown only once, when you create it; we store only a hash of it. If a key leaks, revoke it in your dashboard and create a new one. Requests without a valid key return 401.
Rate limits
The API is free. Each key can make:
- 60 requests per minute
- 1,000 requests per day (the day resets at 00:00 UTC)
For your whole account (all keys together), per day:
- 20 update requests
- 20 new websites – websites that are not in HypeStat yet and are queued for analysis when you request them
Every response includes X-RateLimit-Limit and X-RateLimit-Remaining headers. When you go over a limit you get 429 with a Retry-After header (seconds). Lists return at most 100 results per page and go up to 1,000 results deep.
Errors
Errors use standard HTTP status codes and a JSON body with a machine-readable code and a human-readable message.
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_domain, invalid_country, ... | A parameter is missing or not valid. |
| 401 | missing_key, invalid_key | No key, or the key is wrong or revoked. |
| 404 | not_analyzed_yet | The website is not in HypeStat yet. It is queued for analysis; try again in a few minutes. |
| 404 | not_found | Unknown endpoint, technology or ASN. |
| 409 | recently_updated | The website was analyzed less than 24 hours ago. |
| 410 | removed | The website was removed from HypeStat and is not available. |
| 429 | rate_limited, daily_limit, update_limit | You went over a rate limit. See Retry-After. |
{
"error": {
"code": "missing_key",
"message": "Send your API key in the \"Authorization: Bearer <key>\" header. Create a key in your HypeStat dashboard."
}
}Get a website
GET/domain/{domain}
Everything HypeStat knows about a website, grouped like the sections of its report: domain, site, rank, traffic, earnings, seo, hosting, dns, server, security, email, ai, ads_txt, performance, technologies, similar_sites, whois and archive.
traffic.data_source is google_analytics when the verified owner shows real Google Analytics data, otherwise estimate. When the owner hides estimates, traffic and earnings are null; when the owner hides WHOIS, whois.raw is null. Email addresses in WHOIS records are always hidden. If the website is not in HypeStat yet, you get 404 not_analyzed_yet and it is queued for analysis (up to 100 new websites per key per day).
| Parameter | Type | Description |
|---|---|---|
domain | path | Domain name, for example example.com. www. and https:// are ignored. |
fields | string | Optional. Comma-separated list of sections to return, for example rank,traffic,technologies. domain is always included. |
The example below is shortened: lists show the first two items and long texts are cut.
curl "https://api.hypestat.com/v1/domain/hypestat.com" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/domain/hypestat.com HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/domain/hypestat.com", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/domain/hypestat.com")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/domain/hypestat.com",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/domain/hypestat.com");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/domain/hypestat.com"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/domain/hypestat.com", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"domain": {
"name": "hypestat.com",
"profile_url": "https://hypestat.com/info/hypestat.com",
"updated": "2026-10-29T17:13:24Z",
"adult": false
},
"site": {
"title": "Web Statistics and Analysis | HypeStat",
"description": "HypeStat is free statistics and analytics service, where you can find information about...",
"about": "HypeStat.com is a website that provides information about the traffic and performance o...",
"category": "Computers Electronics and Technology",
"subcategory": "Search Engines",
"tags": [
"hypestat",
"keywords"
],
"screenshot": "https://hypestat.com/screenshot/h/y/p/e/hypestat.com.webp"
},
"rank": {
"hypestat": 52040,
"global": 61175,
"country": {
"rank": 14334,
"country": "Indonesia",
"country_code": "ID"
},
"category": 187,
"semrush": 61865
},
"traffic": {
"data_source": "google_analytics",
"visits_daily": 128399,
"visits_monthly": 3890490,
"pageviews_daily": 141798,
"pages_per_visit": 1.1,
"visit_duration_seconds": 82,
"bounce_rate": 35.51,
"change_vs_previous_month": {
"visits": -5.3,
"users": -12.37,
"visit_duration": -20.32,
"pages_per_visit": -7.78,
"bounce_rate": 3.65
},
"history": [
{
"month": "2026-07",
"visits": 52502990
},
{
"month": "2026-08",
"visits": 4108226
}
],
"sources": {
"direct": 31.55,
"referral": 2.82,
"search": 65.25,
"social": 0.38,
"paid": 0
},
"devices": {
"desktop": 34.84,
"mobile": 65.16
},
"countries": [
{
"country": "United States",
"country_code": "US",
"share": 17.64
},
{
"country": "China",
"country_code": "CN",
"share": 10.31
}
],
"referrers": {
"incoming": [
{
"host": "Direct",
"visits": 232736,
"share": 43.27,
"trend": 21.06
},
{
"host": "Google organic",
"visits": 106542,
"share": 20.19,
"trend": -5.97
}
],
"outgoing": [
{
"host": "seyou.sbs",
"visits": 5847,
"share": 11.33,
"trend": -1.15
},
{
"host": "tbcpl.lol",
"visits": 2298,
"share": 4.54,
"trend": 3491.45
}
]
},
"ai_referrals": [
{
"name": "ChatGPT",
"visits": 20179,
"share": 1.321,
"trend": 31.86
},
{
"name": "growthmarketing.ai",
"visits": 297,
"share": 0.02,
"trend": -1.1
}
]
},
"earnings": {
"ad_revenue_daily_usd": 154.14,
"website_worth_usd": 158295.1
},
"seo": {
"google_index": 271000,
"baidu_index": 34,
"backlinks": {
"total": 263134,
"follow": 0,
"nofollow": 0,
"referring_domains": 9839,
"referring_ips": 10658,
"authority_score": 52,
"by_country": [
{
"country": "United States",
"domains": 2398
},
{
"country": "Singapore",
"domains": 277
}
],
"by_tld": [
{
"tld": ".com",
"domains": 3835
},
{
"tld": ".xyz",
"domains": 1209
}
]
},
"semrush": {
"organic_keywords": 6455,
"organic_traffic": 30508,
"organic_cost_usd": 15000
},
"moz": {
"domain_authority": 0,
"page_authority": 0,
"moz_rank": 0
}
},
"hosting": {
"ip": "188.114.97.9",
"ipv6": null,
"asn": "AS13335",
"provider": "Cloudflare, Inc.",
"provider_website": "https://www.cloudflare.com/",
"cdn": true,
"hosted_behind_cdn": null,
"location": {
"city": null,
"region": null,
"country": null,
"country_code": null,
"latitude": null,
"longitude": null
}
},
"dns": [
{
"type": "HINFO",
"host": "hypestat.com",
"value": null,
"ttl": 3600
}
],
"server": {
"http2": true,
"http3": true,
"compression": "br",
"page_size_bytes": 5413,
"page_size_compressed_bytes": 3017
},
"security": {
"ssl": {
"valid": true,
"issuer": "Google Trust Services",
"expires": "2027-01-09",
"days_left": 70
},
"headers": null,
"safe_browsing": "not_listed",
"reputation": {
"status": "SAFE",
"safety": 87,
"safety_confidence": 35,
"child_safety": 88,
"child_safety_confidence": 36
},
"ad_experience": {
"desktop": {
"status": "passing",
"ad_filtering": "off",
"last_change": "2019-11-08"
},
"mobile": {
"status": "passing",
"ad_filtering": "off",
"last_change": "2019-11-08"
},
"abusive": {
"status": "passing",
"ad_filtering": "off",
"last_change": "2019-11-08"
}
}
},
"email": {
"spf": true,
"spf_record": "v=spf1 include:_spf.google.com ~all",
"dmarc_policy": "quarantine",
"dkim": true,
"mx_provider": "Google Workspace",
"dnssec": false
},
"ai": {
"blocks_all": false,
"blocked": {},
"partially_blocked": {},
"crawlers_checked": 26,
"llms_txt": true
},
"ads_txt": {
"lines": 41,
"direct_lines": 14,
"networks": [
"google.com",
"pubmatic.com"
]
},
"performance": {
"pagespeed_desktop": 58,
"pagespeed_mobile": 44
},
"technologies": [
{
"name": "AddToAny",
"categories": [
"Widgets"
],
"icon": "https://hypestat.com/wappalyzer/st_icons/AddToAny.png"
},
{
"name": "Cloudflare",
"categories": [
"CDN"
],
"icon": "https://hypestat.com/wappalyzer/st_icons/CloudFlare.svg"
}
],
"similar_sites": [
"google.com",
"bing.com"
],
"whois": {
"created": "2011-02-03",
"expires": "2027-02-03",
"updated": "2026-02-17",
"registrar": "Name.com, Inc.",
"raw": "Domain Name: HYPESTAT.COM \nRegistry Domain ID: 1638327027_DOMAIN_COM-VRSN \nRegistrar WH..."
},
"archive": {
"wayback_first_capture": "2011-02-05"
},
"owner_settings": {
"whois_hidden": false,
"estimates_hidden": false
}
},
"meta": {
"updated": "2026-10-29T17:13:24Z",
"requests_left_today": 998
}
}Bulk lookup
GET/domains
Data for up to 50 websites in one request. Each website in the list counts as one request toward your limits (per minute and per day); if the whole list does not fit in what is left, the request is rejected with 429 and nothing is processed. The response has one entry per website with its own status: ok (with data, the same as Get a website), not_analyzed_yet (queued for analysis), removed or invalid_domain.
| Parameter | Type | Description |
|---|---|---|
list | string | Comma-separated domains, up to 50, for example google.com,github.com. |
fields | string | Optional. Sections to return for each website, as in Get a website. |
curl "https://api.hypestat.com/v1/domains?list=google.com,github.com&fields=rank" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/domains?list=google.com,github.com&fields=rank HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/domains?list=google.com,github.com&fields=rank", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/domains?list=google.com,github.com&fields=rank")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/domains?list=google.com,github.com&fields=rank",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/domains?list=google.com,github.com&fields=rank");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/domains?list=google.com,github.com&fields=rank"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/domains?list=google.com,github.com&fields=rank", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"domains": [
{
"domain": "google.com",
"status": "ok",
"data": {
"domain": {
"name": "google.com",
"profile_url": "https://hypestat.com/info/google.com",
"updated": "2026-10-29T19:03:09Z",
"adult": false
},
"rank": {
"hypestat": 1,
"global": 1,
"country": {
"rank": 1,
"country": "United States",
"country_code": "US"
},
"category": 1,
"semrush": 6
}
}
},
{
"domain": "github.com",
"status": "ok",
"data": {
"domain": {
"name": "github.com",
"profile_url": "https://hypestat.com/info/github.com",
"updated": "2026-10-14T03:07:48Z",
"adult": false
},
"rank": {
"hypestat": 72,
"global": 45,
"country": {
"rank": 77,
"country": "United States",
"country_code": "US"
},
"category": 4,
"semrush": 109
}
}
},
{
"domain": "not-a-site-yet.com",
"status": "not_analyzed_yet",
"message": "not-a-site-yet.com is not in HypeStat yet. It is queued for analysis - try again in a few minutes."
}
]
},
"meta": {
"count": 3,
"requests_left_today": 916
}
}Update a website
POST/domain/{domain}/update
Queues a website for a new analysis. Data is not updated instantly: the website is analyzed in the next few minutes, ahead of other queued websites. A website can be updated once every 24 hours; earlier requests return 409 recently_updated. Each key can make 100 update requests per day.
| Parameter | Type | Description |
|---|---|---|
domain | path | Domain name. |
curl -X POST "https://api.hypestat.com/v1/domain/hypestat.com/update" \
-H "Authorization: Bearer YOUR_API_KEY"POST /v1/domain/hypestat.com/update HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/domain/hypestat.com/update", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/domain/hypestat.com/update")
req = Net::HTTP::Post.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.post(
"https://api.hypestat.com/v1/domain/hypestat.com/update",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/domain/hypestat.com/update");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/domain/hypestat.com/update"))
.header("Authorization", "Bearer YOUR_API_KEY")
.POST(HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("POST", "https://api.hypestat.com/v1/domain/hypestat.com/update", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"domain": "example.com",
"status": "queued",
"message": "example.com is queued for analysis. New data is usually available within a few minutes."
},
"meta": {
"requests_left_today": 997
}
}Top sites
GET/top-sites
The most popular websites worldwide or in a country, optionally in one category, like the Rankings on HypeStat.
| Parameter | Type | Description |
|---|---|---|
country | string | Two-letter country code, for example us. Omit for worldwide. See Countries. |
category | string | Category slug, for example news_and_media. See Categories. |
sort | string | rank (default), visits or worth. |
min_visits | integer | Minimum daily visits. |
max_visits | integer | Maximum daily visits. |
page | integer | Page number, starting at 1. Default 1. |
limit | integer | Results per page, 1–100. Default 50. |
curl "https://api.hypestat.com/v1/top-sites?country=us&limit=3" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/top-sites?country=us&limit=3 HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/top-sites?country=us&limit=3", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/top-sites?country=us&limit=3")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/top-sites?country=us&limit=3",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/top-sites?country=us&limit=3");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/top-sites?country=us&limit=3"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/top-sites?country=us&limit=3", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"country": {
"code": "US",
"name": "United States"
},
"category": null,
"sort": "rank",
"sites": [
{
"position": 1,
"domain": "google.com",
"title": "Google",
"hypestat_rank": 1,
"visits_daily": 2895210054,
"website_worth_usd": 51364124212.4,
"adult": false
},
{
"position": 2,
"domain": "youtube.com",
"title": "YouTube",
"hypestat_rank": 2,
"visits_daily": 978322700,
"website_worth_usd": 22374838197.56,
"adult": false
}
]
},
"meta": {
"page": 1,
"limit": 3,
"has_more": true,
"requests_left_today": 959
}
}Categories
GET/categories
All website categories with the slugs to use in category of Top sites.
curl "https://api.hypestat.com/v1/categories" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/categories HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/categories", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/categories")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/categories",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/categories");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/categories"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/categories", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"categories": [
{
"slug": "adult",
"name": "Adult",
"parent": "Adult"
},
{
"slug": "animation_and_comics",
"name": "Animation and Comics",
"parent": "Arts and Entertainment"
}
]
},
"meta": {
"requests_left_today": 958
}
}Countries
GET/countries
All countries with the codes to use in country of Top sites.
curl "https://api.hypestat.com/v1/countries" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/countries HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/countries", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/countries")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/countries",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/countries");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/countries"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/countries", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"countries": [
{
"code": "AF",
"name": "Afghanistan"
},
{
"code": "AX",
"name": "Aland Islands"
}
]
},
"meta": {
"requests_left_today": 957
}
}Technologies
GET/technologies
Technologies HypeStat detects (CMS, frameworks, analytics, ad networks, CDN, web servers and more), ordered by the number of websites that use them.
| Parameter | Type | Description |
|---|---|---|
category | string | Optional technology category slug, for example cms. |
page | integer | Page number, starting at 1. Default 1. |
limit | integer | Results per page, 1–100. Default 100. |
curl "https://api.hypestat.com/v1/technologies?limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/technologies?limit=2 HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/technologies?limit=2", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/technologies?limit=2")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/technologies?limit=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/technologies?limit=2");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/technologies?limit=2"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/technologies?limit=2", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"technologies": [
{
"name": "Nginx",
"slug": "nginx",
"categories": [
"Web Servers",
"Reverse proxies"
],
"sites": 8322051,
"website": "http://nginx.org/en",
"icon": "https://hypestat.com/wappalyzer/st_icons/Nginx.svg"
},
{
"name": "PHP",
"slug": "php",
"categories": [
"Programming Languages"
],
"sites": 6809204,
"website": "http://php.net",
"icon": "https://hypestat.com/wappalyzer/st_icons/PHP.svg"
}
]
},
"meta": {
"page": 1,
"limit": 2,
"has_more": true,
"requests_left_today": 956
}
}Sites by technology
GET/technology/{slug}
A technology and the most valuable websites that use it.
| Parameter | Type | Description |
|---|---|---|
slug | path | Technology slug from Technologies, for example wordpress. |
page | integer | Page number, starting at 1. Default 1. |
limit | integer | Results per page, 1–100. Default 50. |
curl "https://api.hypestat.com/v1/technology/wordpress?limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/technology/wordpress?limit=2 HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/technology/wordpress?limit=2", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/technology/wordpress?limit=2")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/technology/wordpress?limit=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/technology/wordpress?limit=2");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/technology/wordpress?limit=2"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/technology/wordpress?limit=2", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"technology": {
"name": "WordPress",
"slug": "wordpress",
"categories": [
"CMS",
"Blogs"
],
"sites": 4513161,
"website": "https://wordpress.org",
"icon": "https://hypestat.com/wappalyzer/st_icons/WordPress.svg"
},
"sites": [
{
"position": 1,
"domain": "asuratoon.com",
"title": "Asura Scans – Read Comics",
"hypestat_rank": 102,
"visits_daily": 12895262,
"website_worth_usd": 125988819.34,
"adult": false
},
{
"position": 2,
"domain": "tumblr.com",
"title": "Tumblr",
"hypestat_rank": 160,
"visits_daily": 4214212,
"website_worth_usd": 79270427.3,
"adult": false
}
]
},
"meta": {
"page": 1,
"limit": 2,
"has_more": true,
"requests_left_today": 955
}
}Sites by hosting
GET/hosting/{asn}
A hosting provider (network) and the most valuable websites hosted there, including websites behind a CDN whose real host we detected.
| Parameter | Type | Description |
|---|---|---|
asn | path | Autonomous system number, for example AS13335 or 13335. |
page | integer | Page number, starting at 1. Default 1. |
limit | integer | Results per page, 1–100. Default 50. |
curl "https://api.hypestat.com/v1/hosting/AS13335?limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/hosting/AS13335?limit=2 HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/hosting/AS13335?limit=2", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/hosting/AS13335?limit=2")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/hosting/AS13335?limit=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/hosting/AS13335?limit=2");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/hosting/AS13335?limit=2"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/hosting/AS13335?limit=2", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"hosting": {
"asn": "AS13335",
"provider": "Cloudflare, Inc.",
"website": "https://www.cloudflare.com/",
"cdn": true,
"sites": 2903921
},
"sites": [
{
"position": 1,
"domain": "x.com",
"title": "X. It’s what’s happening / X",
"hypestat_rank": 5,
"visits_daily": 140731064,
"website_worth_usd": 5885802881.38,
"adult": false
},
{
"position": 2,
"domain": "chatgpt.com",
"title": "chatgpt - latest news and chat about ai",
"hypestat_rank": 11,
"visits_daily": 201300307,
"website_worth_usd": 1306051209.38,
"adult": false
}
]
},
"meta": {
"page": 1,
"limit": 2,
"has_more": true,
"requests_left_today": 954
}
}Sites on an IP address
GET/ip/{ip}
Websites hosted on the same IP address (reverse IP lookup), the most valuable first, with the network that owns the address. Shared hosting and CDN addresses can have thousands of websites.
| Parameter | Type | Description |
|---|---|---|
ip | path | IPv4 or IPv6 address. |
page | integer | Page number, starting at 1. Default 1. |
limit | integer | Results per page, 1–100. Default 50. |
curl "https://api.hypestat.com/v1/ip/104.21.8.165?limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/ip/104.21.8.165?limit=2 HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/ip/104.21.8.165?limit=2", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/ip/104.21.8.165?limit=2")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/ip/104.21.8.165?limit=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/ip/104.21.8.165?limit=2");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/ip/104.21.8.165?limit=2"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/ip/104.21.8.165?limit=2", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"ip": {
"address": "104.21.8.165",
"asn": "AS13335",
"provider": "Cloudflare, Inc.",
"cdn": true
},
"sites": [
{
"position": 1,
"domain": "suika-game.io",
"title": "Suika Game | Play Watermelon Game Web Version ",
"hypestat_rank": 291130,
"visits_daily": 1584,
"website_worth_usd": 7290.74,
"adult": false
},
{
"position": 2,
"domain": "gpto.ng",
"title": "Get Paid To Nigeria - GPTo",
"hypestat_rank": 473363,
"visits_daily": 146,
"website_worth_usd": 2577.32,
"adult": false
}
]
},
"meta": {
"page": 1,
"limit": 2,
"has_more": true,
"requests_left_today": 915
}
}Sites by tag
GET/tag/{tag}
Websites with a tag (a keyword from their content), the most valuable first, like the tag pages on HypeStat.
| Parameter | Type | Description |
|---|---|---|
tag | path | Tag with spaces written as hyphens, for example search-engine. |
page | integer | Page number, starting at 1. Default 1. |
limit | integer | Results per page, 1–100. Default 50. |
curl "https://api.hypestat.com/v1/tag/search-engine?limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/tag/search-engine?limit=2 HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/tag/search-engine?limit=2", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/tag/search-engine?limit=2")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/tag/search-engine?limit=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/tag/search-engine?limit=2");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/tag/search-engine?limit=2"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/tag/search-engine?limit=2", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"tag": {
"name": "search engine",
"slug": "search-engine"
},
"sites": [
{
"position": 1,
"domain": "google.com",
"title": "Google",
"hypestat_rank": 1,
"visits_daily": 2895210054,
"website_worth_usd": 51364124212.4,
"adult": false
},
{
"position": 2,
"domain": "bing.com",
"title": "Search - Microsoft Bing",
"hypestat_rank": 8,
"visits_daily": 121124074,
"website_worth_usd": 1683635967.48,
"adult": false
}
]
},
"meta": {
"page": 1,
"limit": 2,
"has_more": true,
"requests_left_today": 914
}
}Ad Experience
GET/ad-experience
Websites with issues in the Google Ad Experience Report (Better Ads Standards), the latest changes first, for desktop and mobile. status is passing, warning or failing; ad_filtering tells whether Chrome blocks ads on the site (on, off, paused, pending). For one website, see security.ad_experience in Get a website.
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number, starting at 1. Default 1. |
limit | integer | Results per page, 1–100. Default 50. |
Domains in the example are replaced with placeholders.
curl "https://api.hypestat.com/v1/ad-experience?limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/ad-experience?limit=2 HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/ad-experience?limit=2", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/ad-experience?limit=2")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/ad-experience?limit=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/ad-experience?limit=2");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/ad-experience?limit=2"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/ad-experience?limit=2", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"sites": [
{
"position": 1,
"domain": "example1.com",
"desktop": {
"status": "failing",
"ad_filtering": "on",
"last_change": "2026-10-30",
"enforcement": "2026-10-30"
},
"mobile": {
"status": "failing",
"ad_filtering": "pending",
"last_change": "2026-10-01",
"enforcement": "2026-10-31"
}
},
{
"position": 2,
"domain": "example2.com",
"desktop": {
"status": "failing",
"ad_filtering": "on",
"last_change": "2026-10-30",
"enforcement": "2026-10-30"
},
"mobile": {
"status": "failing",
"ad_filtering": "pending",
"last_change": "2026-10-01",
"enforcement": "2026-10-31"
}
}
]
},
"meta": {
"page": 1,
"limit": 2,
"has_more": true,
"requests_left_today": 913
}
}Abusive Experience
GET/abusive-experience
Websites with issues in the Google Abusive Experience Report (misleading or abusive ads and pages), the latest changes first.
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number, starting at 1. Default 1. |
limit | integer | Results per page, 1–100. Default 50. |
Domains in the example are replaced with placeholders.
curl "https://api.hypestat.com/v1/abusive-experience?limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/abusive-experience?limit=2 HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/abusive-experience?limit=2", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/abusive-experience?limit=2")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/abusive-experience?limit=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/abusive-experience?limit=2");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/abusive-experience?limit=2"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/abusive-experience?limit=2", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"sites": [
{
"position": 1,
"domain": "example1.com",
"status": "failing",
"ad_filtering": "pending",
"last_change": "2026-10-30",
"enforcement": "2026-11-29"
},
{
"position": 2,
"domain": "example2.com",
"status": "failing",
"ad_filtering": "pending",
"last_change": "2026-10-30",
"enforcement": "2026-11-29"
}
]
},
"meta": {
"page": 1,
"limit": 2,
"has_more": true,
"requests_left_today": 912
}
}Trending
GET/trending
The 100 websites with the biggest change in monthly visits, last month compared with the month before.
| Parameter | Type | Description |
|---|---|---|
type | string | up (default) for the biggest growth, down for the biggest drop. |
curl "https://api.hypestat.com/v1/trending?type=up" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/trending?type=up HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/trending?type=up", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/trending?type=up")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/trending?type=up",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/trending?type=up");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/trending?type=up"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/trending?type=up", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"type": "up",
"month": "2026-09",
"sites": [
{
"position": 1,
"domain": "cinejoy.pk",
"title": "Cinejoy",
"visits_previous_month": 26,
"visits": 86922307,
"change": 334316465.38
},
{
"position": 2,
"domain": "topcinema.io",
"title": "",
"visits_previous_month": 90,
"visits": 60858853,
"change": 67620847.78
}
]
},
"meta": {
"requests_left_today": 953
}
}Usage
GET/usage
Your limits and how much of them you have used: requests for this key, updates and new websites for your whole account. Calls to this endpoint count as requests too.
curl "https://api.hypestat.com/v1/usage" \
-H "Authorization: Bearer YOUR_API_KEY"GET /v1/usage HTTP/1.1
Host: api.hypestat.com
Authorization: Bearer YOUR_API_KEYconst res = await fetch("https://api.hypestat.com/v1/usage", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);require "net/http"
require "json"
uri = URI("https://api.hypestat.com/v1/usage")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body)import requests
res = requests.get(
"https://api.hypestat.com/v1/usage",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(res.json())$ch = curl_init("https://api.hypestat.com/v1/usage");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.hypestat.com/v1/usage"))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.hypestat.com/v1/usage", nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body)){
"data": {
"key": "hs_live_a1b2…",
"limits": {
"requests_per_minute": 60,
"requests_per_day": 1000,
"updates_per_day": 20,
"new_websites_per_day": 20
},
"used": {
"this_minute": 1,
"today": 40,
"updates_today": 0,
"new_websites_today": 0
},
"resets_at": "2026-10-31T00:00:00Z"
},
"meta": {
"requests_left_today": 960
}
}