Track Data Breaches and Lawsuits
Use event.type to follow news about data-breach, lawsuit and regulatory-action events. Together, they help you track an incident and later legal or regulatory coverage.
Step 1: Pull the breach feed
event.type accepts up to 5 comma-separated values with OR logic. Start with breaches alone, newest first.
curl "https://api.apitube.io/v1/news/everything?event.type=data-breach&sort.by=published_at&sort.order=desc&per_page=20&api_key=YOUR_API_KEY"
import requests
response = requests.get(
"https://api.apitube.io/v1/news/everything",
params={
"event.type": "data-breach",
"sort.by": "published_at",
"sort.order": "desc",
"per_page": "20",
"api_key": "YOUR_API_KEY",
},
)
print(response.json())
const params = new URLSearchParams({ "event.type": "data-breach", "sort.by": "published_at", "sort.order": "desc", "per_page": "20", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/everything?${params}`);
const data = await response.json();
console.log(data);
$query = http_build_query(["event.type" => "data-breach", "sort.by" => "published_at", "sort.order" => "desc", "per_page" => "20", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/everything?$query");
$data = json_decode($response, true);
print_r($data);
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
u, _ := url.Parse("https://api.apitube.io/v1/news/everything")
q := u.Query()
q.Set("event.type", "data-breach")
q.Set("sort.by", "published_at")
q.Set("sort.order", "desc")
q.Set("per_page", "20")
q.Set("api_key", "YOUR_API_KEY")
u.RawQuery = q.Encode()
resp, _ := http.Get(u.String())
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]any
json.Unmarshal(body, &data)
fmt.Println(data)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.apitube.io/v1/news/everything?event.type=data-breach&sort.by=published_at&sort.order=desc&per_page=20&api_key=YOUR_API_KEY"))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Write a script in your preferred language that calls the APITube News API:
GET https://api.apitube.io/v1/news/everything?event.type=data-breach&sort.by=published_at&sort.order=desc&per_page=20
Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/everything
- Who was hit —
entities, filtered to the organization entries. - What sector —
industries, each with anidand a readablename. - Tone and breaking-news status —
sentiment.overall.scoreandis_breaking. - Where to read it —
hrefplussource.domain.
Articles matching data-breach do not include this event label in the response. Use the filter to select the coverage you need.
Step 2: Choose an industry or company
Add industry.id to watch one sector, or organization.name to watch a specific company. Both narrow the same feed.
curl "https://api.apitube.io/v1/news/everything?event.type=data-breach,lawsuit,regulatory-action&industry.id=1180&published_at.start=2026-01-01&per_page=20&api_key=YOUR_API_KEY"
import requests
response = requests.get(
"https://api.apitube.io/v1/news/everything",
params={
"event.type": "data-breach,lawsuit,regulatory-action",
"industry.id": "1180",
"published_at.start": "2026-01-01",
"per_page": "20",
"api_key": "YOUR_API_KEY",
},
)
print(response.json())
const params = new URLSearchParams({ "event.type": "data-breach,lawsuit,regulatory-action", "industry.id": "1180", "published_at.start": "2026-01-01", "per_page": "20", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/everything?${params}`);
const data = await response.json();
console.log(data);
$query = http_build_query(["event.type" => "data-breach,lawsuit,regulatory-action", "industry.id" => "1180", "published_at.start" => "2026-01-01", "per_page" => "20", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/everything?$query");
$data = json_decode($response, true);
print_r($data);
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
u, _ := url.Parse("https://api.apitube.io/v1/news/everything")
q := u.Query()
q.Set("event.type", "data-breach,lawsuit,regulatory-action")
q.Set("industry.id", "1180")
q.Set("published_at.start", "2026-01-01")
q.Set("per_page", "20")
q.Set("api_key", "YOUR_API_KEY")
u.RawQuery = q.Encode()
resp, _ := http.Get(u.String())
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]any
json.Unmarshal(body, &data)
fmt.Println(data)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.apitube.io/v1/news/everything?event.type=data-breach,lawsuit,regulatory-action&industry.id=1180&published_at.start=2026-01-01&per_page=20&api_key=YOUR_API_KEY"))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Write a script in your preferred language that calls the APITube News API:
GET https://api.apitube.io/v1/news/everything?event.type=data-breach,lawsuit,regulatory-action&industry.id=1180&published_at.start=2026-01-01&per_page=20
Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/everything
Industry IDs are numeric — look yours up in the industry list, or resolve one from free text with /v1/suggest/industries. Up to 3 industries can be combined with commas.
Step 3: Count articles before downloading them
Use /v1/news/count to compare the number of articles for each event type or period without downloading article content.
curl "https://api.apitube.io/v1/news/count?event.type=data-breach&published_at.start=2026-07-01&api_key=YOUR_API_KEY"
import requests
response = requests.get(
"https://api.apitube.io/v1/news/count",
params={
"event.type": "data-breach",
"published_at.start": "2026-07-01",
"api_key": "YOUR_API_KEY",
},
)
print(response.json())
const params = new URLSearchParams({ "event.type": "data-breach", "published_at.start": "2026-07-01", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/count?${params}`);
const data = await response.json();
console.log(data);
$query = http_build_query(["event.type" => "data-breach", "published_at.start" => "2026-07-01", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/count?$query");
$data = json_decode($response, true);
print_r($data);
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
u, _ := url.Parse("https://api.apitube.io/v1/news/count")
q := u.Query()
q.Set("event.type", "data-breach")
q.Set("published_at.start", "2026-07-01")
q.Set("api_key", "YOUR_API_KEY")
u.RawQuery = q.Encode()
resp, _ := http.Get(u.String())
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var data map[string]any
json.Unmarshal(body, &data)
fmt.Println(data)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.apitube.io/v1/news/count?event.type=data-breach&published_at.start=2026-07-01&api_key=YOUR_API_KEY"))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Write a script in your preferred language that calls the APITube News API:
GET https://api.apitube.io/v1/news/count?event.type=data-breach&published_at.start=2026-07-01
Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/everything
Repeat the count for lawsuit and regulatory-action in later months to track coverage after the initial breach.
import requests
EVENTS = ["data-breach", "lawsuit", "regulatory-action"]
def aftermath(company, api_key, since="2026-01-01"):
out = {}
for event in EVENTS:
r = requests.get(
"https://api.apitube.io/v1/news/count",
params={
"event.type": event,
"organization.name": company,
"published_at.start": since,
"api_key": api_key,
},
).json()
out[event] = r["count"]
return outTip: add
ignore.event.type=earnings,partnershipto exclude those event types from a breach feed.