Skip to content

Build a Person Dossier

Combine the People endpoint with its coverage block to assemble a one-call dossier on a public figure: who they are, how they're covered, who they're associated with, and their latest news.

Step 1: Find the person

Search the directory by name and pick the matching id.

bash
curl "https://api.apitube.io/v1/people?name=Michelle%20Obama&api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/people",
    params={
        "name": "Michelle Obama",
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "name": "Michelle Obama", "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/people?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["name" => "Michelle Obama", "api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/people?$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/people")
	q := u.Query()
	q.Set("name", "Michelle Obama")
	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/people?name=Michelle%20Obama&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/people?name=Michelle%20Obama

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

Step 2: Fetch the full profile

Request the profile by id. The response includes the Wikidata-enriched profile, a coverage block, and recent_articles.

bash
curl "https://api.apitube.io/v1/people/1316868?api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/people/1316868",
    params={
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/people/1316868?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/people/1316868?$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/people/1316868")
	q := u.Query()
	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/people/1316868?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/people/1316868

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

The dossier is then available in a single object:

  • Whoprofile (title, bio, nationality, social profiles).
  • How they're coveredcoverage.article_count, coverage.sentiment, coverage.timeline.
  • Trendcoverage.momentum.change_pct (last 30 days vs. previous).
  • Associationscoverage.related_entities (most co-mentioned entities).
  • Wherecoverage.top_sources, coverage.top_countries, coverage.top_languages.
  • Latest newsrecent_articles.

Step 3: Pivot to the full article feed

Each profile exposes links.articles. Follow it (or filter /v1/news/everything by entity) for the complete, filterable coverage.

bash
curl "https://api.apitube.io/v1/news/entity/1316868?api_key=YOUR_API_KEY"
python
import requests

response = requests.get(
    "https://api.apitube.io/v1/news/entity/1316868",
    params={
        "api_key": "YOUR_API_KEY",
    },
)
print(response.json())
javascript
const params = new URLSearchParams({ "api_key": "YOUR_API_KEY" });
const response = await fetch(`https://api.apitube.io/v1/news/entity/1316868?${params}`);
const data = await response.json();
console.log(data);
php
$query = http_build_query(["api_key" => "YOUR_API_KEY"]);
$response = file_get_contents("https://api.apitube.io/v1/news/entity/1316868?$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/entity/1316868")
	q := u.Query()
	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/entity/1316868?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/entity/1316868

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

Tip: pass ?coverage=false to the profile endpoint when you only need identity data and want a faster response.