Skip to content

Monitor the Automotive and EV Industry

The automotive sector spans three separate industry classifiers: vehicle manufacturing, vehicle sales, and EV charging infrastructure. Combine them with industry.id to get one feed for the whole sector, then layer event and sentiment filters on top.

Step 1: Scope the sector

industry.id takes up to 3 comma-separated IDs with OR logic. The three that matter here are 801 (Vehicle Manufacturing — makers and parts, including combustion, hybrid and alternative energy vehicles), 805 (Vehicle Sales — dealerships, fleet and online sales) and 807 (EV Charging).

bash
curl "https://api.apitube.io/v1/news/everything?industry.id=801,805,807&sort.by=published_at&sort.order=desc&per_page=20&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/everything",
    params={
        "industry.id": "801,805,807",
        "sort.by": "published_at",
        "sort.order": "desc",
        "per_page": "20",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "industry.id": "801,805,807", "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);
php
$query = http_build_query(["industry.id" => "801,805,807", "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);
go
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("industry.id", "801,805,807")
	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)
}
java
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?industry.id=801,805,807&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());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/everything?industry.id=801,805,807&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/parameters
  • Which slice of the sectorindustries, the array on each article, tells you whether it came in via manufacturing, sales or charging.
  • Tone of the coveragesentiment.overall.polarity and sentiment.overall.score.
  • Where it ransource.domain, plus source.country.code if you care about regional press.

Step 2: Narrow to one manufacturer

Sector-wide is noisy. Add title to keep only articles whose headline names the company you care about — headline matching is strict enough to drop passing mentions in roundups.

bash
curl "https://api.apitube.io/v1/news/everything?industry.id=801,805,807&title=Tesla&per_page=20&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/everything",
    params={
        "industry.id": "801,805,807",
        "title": "Tesla",
        "per_page": "20",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "industry.id": "801,805,807", "title": "Tesla", "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);
php
$query = http_build_query(["industry.id" => "801,805,807", "title" => "Tesla", "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);
go
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("industry.id", "801,805,807")
	q.Set("title", "Tesla")
	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)
}
java
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?industry.id=801,805,807&title=Tesla&per_page=20&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/everything?industry.id=801,805,807&title=Tesla&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/parameters

For a topic rather than a company — title=electric vehicle — multiple words are matched as AND, so every word must appear in the headline. Wrap the phrase in double quotes to require the exact order.

Step 3: Split the feed into recalls and launches

The two events that move this sector are opposite in tone. event.type=recall surfaces safety campaigns; event.type=product-launch surfaces new models and trim announcements.

bash
curl "https://api.apitube.io/v1/news/everything?industry.id=801,805,807&event.type=recall&sort.by=published_at&sort.order=desc&per_page=20&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/everything",
    params={
        "industry.id": "801,805,807",
        "event.type": "recall",
        "sort.by": "published_at",
        "sort.order": "desc",
        "per_page": "20",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "industry.id": "801,805,807", "event.type": "recall", "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);
php
$query = http_build_query(["industry.id" => "801,805,807", "event.type" => "recall", "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);
go
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("industry.id", "801,805,807")
	q.Set("event.type", "recall")
	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)
}
java
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?industry.id=801,805,807&event.type=recall&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());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/news/everything?industry.id=801,805,807&event.type=recall&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/parameters

Swap the event type and you have the other half of the dashboard. Counting instead of fetching turns this into a cheap competitive scoreboard:

python
import requests

MAKERS = ["Tesla", "Toyota", "BYD", "Volkswagen"]
AUTO = "801,805,807"

def scoreboard(api_key, event, since="2026-01-01"):
    rows = {}
    for maker in MAKERS:
        r = requests.get(
            "https://api.apitube.io/v1/news/count",
            params={
                "industry.id": AUTO,
                "title": maker,
                "event.type": event,
                "published_at.start": since,
                "api_key": api_key,
            },
        ).json()
        rows[maker] = r["count"]
    return dict(sorted(rows.items(), key=lambda kv: -kv[1]))

Tip: EV charging (807) behaves differently from the rest of the sector — it tracks infrastructure rollouts and utility partnerships rather than model news. Query it on its own when you want the buildout story without the showroom coverage.