List alerts API
curl --request GET \
--url https://api.technologychecker.io/v1/alerts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.technologychecker.io/v1/alerts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.technologychecker.io/v1/alerts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.technologychecker.io/v1/alerts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.technologychecker.io/v1/alerts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.technologychecker.io/v1/alerts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.technologychecker.io/v1/alerts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"alerts": [
{
"id": "alrt_9f2c4a1e",
"name": "Who leaves Shopify (US, 51-200)",
"signal_types": [
"switch"
],
"scope": {
"kind": "technology",
"technology_id": 2184,
"technology_name": "Shopify",
"category_id": 123,
"domains": [
"<string>"
],
"segment_id": "<string>"
},
"direction": "from",
"missing_category_id": 123,
"filters": {
"min_confidence": 0.5,
"churn_reliability": [
"high",
"medium"
],
"min_confidence_label": "medium",
"country": "united states",
"city": "<string>",
"state": "<string>",
"industry": "<string>",
"industry_code": 123,
"employees": "51-200",
"company_type": "<string>",
"founded_min": 123,
"founded_max": 123,
"company": true,
"has_email": true,
"has_phone": true,
"social": "<string>",
"language": "<string>",
"web_country": "<string>"
},
"webhook_url": "https://example.com/hooks/tc",
"status": "active",
"delivery_frequency": "daily",
"crawl_cadence": "monthly",
"last_fired_at": "2026-06-10 17:39:39",
"consecutive_failures": 0,
"created_at": "2026-06-10T16:39:39.000Z",
"updated_at": "2026-06-10T16:39:39.000Z"
}
],
"count": 3,
"limit": 5
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key"
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key"
}
}Alerts
List alerts API
List every alert on your API key with status, last fire time, failure count and your plan’s alert limit. Free — alert management never consumes credits.
GET
/
v1
/
alerts
List alerts API
curl --request GET \
--url https://api.technologychecker.io/v1/alerts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.technologychecker.io/v1/alerts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.technologychecker.io/v1/alerts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.technologychecker.io/v1/alerts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.technologychecker.io/v1/alerts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.technologychecker.io/v1/alerts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.technologychecker.io/v1/alerts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"alerts": [
{
"id": "alrt_9f2c4a1e",
"name": "Who leaves Shopify (US, 51-200)",
"signal_types": [
"switch"
],
"scope": {
"kind": "technology",
"technology_id": 2184,
"technology_name": "Shopify",
"category_id": 123,
"domains": [
"<string>"
],
"segment_id": "<string>"
},
"direction": "from",
"missing_category_id": 123,
"filters": {
"min_confidence": 0.5,
"churn_reliability": [
"high",
"medium"
],
"min_confidence_label": "medium",
"country": "united states",
"city": "<string>",
"state": "<string>",
"industry": "<string>",
"industry_code": 123,
"employees": "51-200",
"company_type": "<string>",
"founded_min": 123,
"founded_max": 123,
"company": true,
"has_email": true,
"has_phone": true,
"social": "<string>",
"language": "<string>",
"web_country": "<string>"
},
"webhook_url": "https://example.com/hooks/tc",
"status": "active",
"delivery_frequency": "daily",
"crawl_cadence": "monthly",
"last_fired_at": "2026-06-10 17:39:39",
"consecutive_failures": 0,
"created_at": "2026-06-10T16:39:39.000Z",
"updated_at": "2026-06-10T16:39:39.000Z"
}
],
"count": 3,
"limit": 5
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key"
}
}{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key"
}
}Frequently asked questions
Do alerts cost credits?
Do alerts cost credits?
No. Creating, listing, editing and firing alerts is free — alerts are a plan entitlement capped by count rather than metered per call. The only alert-related charge is crawl cadence on a domains-scope alert, which costs 1 credit per dispatched domain crawl.
How many alerts can I have?
How many alerts can I have?
The
limit field in the response tells you. Free plans get 1, Pro 5, Scale 15 and Enterprise 50. The cap counts every saved alert regardless of status, so pausing one does not free a slot — delete it instead.What does consecutive_failures mean?
What does consecutive_failures mean?
How many deliveries in a row your endpoint has rejected or timed out on. At 10 consecutive failures the alert flips to
disabled and stops sweeping. Patch it back to active to re-enable it; the resumed sweep reaches back at most 7 days.Was this page helpful?
⌘I