curl --request GET \
--url https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience \
--header 'x-api-key: <api-key>'import requests
url = "https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience', 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://dashboard.launchpointhq.com/api/v1/creators/{id}/audience",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://dashboard.launchpointhq.com/api/v1/creators/{id}/audience"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"creatorId": "crt_demo_creator_7x2",
"data": [
{
"platform": "instagram",
"handle": "demo_creator",
"lastUpdatedAt": 1786089600000,
"audience": {
"status": "available",
"reason": null,
"countriesReason": null,
"usAudiencePercentage": 72,
"countries": [
{
"label": "US",
"percentage": 72
},
{
"label": "GB",
"percentage": 18
},
{
"label": "CA",
"percentage": 10
}
],
"ages": [
{
"label": "25-34",
"percentage": 48.5
}
],
"genders": [
{
"label": "female",
"percentage": 61.2
}
],
"cities": [
{
"label": "New York",
"percentage": 12.4
}
],
"demographicsBasis": "reached",
"sampleSize": 2500,
"instagramAudiences": [
{
"basis": "reached",
"sampleSize": 2500,
"countries": [
{
"label": "US",
"percentage": 72
},
{
"label": "GB",
"percentage": 18
},
{
"label": "CA",
"percentage": 10
}
],
"ages": [
{
"label": "25-34",
"percentage": 48.5
}
],
"genders": [
{
"label": "female",
"percentage": 61.2
}
],
"cities": [
{
"label": "New York",
"percentage": 12.4
}
]
},
{
"basis": "engaged",
"sampleSize": 840,
"countries": [
{
"label": "US",
"percentage": 68
},
{
"label": "GB",
"percentage": 22
},
{
"label": "CA",
"percentage": 10
}
],
"ages": [
{
"label": "25-34",
"percentage": 52.1
}
],
"genders": [
{
"label": "female",
"percentage": 58.7
}
],
"cities": [
{
"label": "New York",
"percentage": 14.1
}
]
},
{
"basis": "followers",
"sampleSize": 3100,
"countries": [
{
"label": "US",
"percentage": 70
},
{
"label": "GB",
"percentage": 20
},
{
"label": "CA",
"percentage": 10
}
],
"ages": [
{
"label": "25-34",
"percentage": 47.9
}
],
"genders": [
{
"label": "female",
"percentage": 62.4
}
],
"cities": [
{
"label": "New York",
"percentage": 11.8
}
]
}
]
}
},
{
"platform": "tiktok",
"handle": null,
"lastUpdatedAt": 1786003200000,
"audience": {
"status": "no_data",
"reason": "no_data_marker",
"countriesReason": "no_data_marker",
"usAudiencePercentage": null,
"countries": [],
"ages": [],
"genders": [],
"cities": [],
"demographicsBasis": null,
"sampleSize": null,
"instagramAudiences": []
}
}
]
}View creator audience demographics
Get saved audience demographics for each linked social account of a visible creator.
Percentages use a 0 to 100 scale, including usAudiencePercentage. Audience data can be up to about 30 days old; lastUpdatedAt is a Unix timestamp in milliseconds for the newest data in that account block. countries comes from the monthly country refresh when available and falls back to the Instagram account’s own country split otherwise. usAudiencePercentage is populated only from the monthly country refresh, so null does not mean the US share is zero. A saved no-data marker can return 0; that does not prove the US share is zero. reason is set only when the entire audience block has no data. When country data is missing but age, gender, or city data exists, countriesReason describes the missing country data instead.
The instagramAudiences entries expose separate populations Meta reports: people reached, people who engaged, and followers. These are different sets of people, so do not add them together.
The possible no-data reasons are unsupported_platform, no_data_marker, and never_fetched. A creator the API key cannot see returns 404.
curl --request GET \
--url https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience \
--header 'x-api-key: <api-key>'import requests
url = "https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience', 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://dashboard.launchpointhq.com/api/v1/creators/{id}/audience",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://dashboard.launchpointhq.com/api/v1/creators/{id}/audience"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dashboard.launchpointhq.com/api/v1/creators/{id}/audience")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"creatorId": "crt_demo_creator_7x2",
"data": [
{
"platform": "instagram",
"handle": "demo_creator",
"lastUpdatedAt": 1786089600000,
"audience": {
"status": "available",
"reason": null,
"countriesReason": null,
"usAudiencePercentage": 72,
"countries": [
{
"label": "US",
"percentage": 72
},
{
"label": "GB",
"percentage": 18
},
{
"label": "CA",
"percentage": 10
}
],
"ages": [
{
"label": "25-34",
"percentage": 48.5
}
],
"genders": [
{
"label": "female",
"percentage": 61.2
}
],
"cities": [
{
"label": "New York",
"percentage": 12.4
}
],
"demographicsBasis": "reached",
"sampleSize": 2500,
"instagramAudiences": [
{
"basis": "reached",
"sampleSize": 2500,
"countries": [
{
"label": "US",
"percentage": 72
},
{
"label": "GB",
"percentage": 18
},
{
"label": "CA",
"percentage": 10
}
],
"ages": [
{
"label": "25-34",
"percentage": 48.5
}
],
"genders": [
{
"label": "female",
"percentage": 61.2
}
],
"cities": [
{
"label": "New York",
"percentage": 12.4
}
]
},
{
"basis": "engaged",
"sampleSize": 840,
"countries": [
{
"label": "US",
"percentage": 68
},
{
"label": "GB",
"percentage": 22
},
{
"label": "CA",
"percentage": 10
}
],
"ages": [
{
"label": "25-34",
"percentage": 52.1
}
],
"genders": [
{
"label": "female",
"percentage": 58.7
}
],
"cities": [
{
"label": "New York",
"percentage": 14.1
}
]
},
{
"basis": "followers",
"sampleSize": 3100,
"countries": [
{
"label": "US",
"percentage": 70
},
{
"label": "GB",
"percentage": 20
},
{
"label": "CA",
"percentage": 10
}
],
"ages": [
{
"label": "25-34",
"percentage": 47.9
}
],
"genders": [
{
"label": "female",
"percentage": 62.4
}
],
"cities": [
{
"label": "New York",
"percentage": 11.8
}
]
}
]
}
},
{
"platform": "tiktok",
"handle": null,
"lastUpdatedAt": 1786003200000,
"audience": {
"status": "no_data",
"reason": "no_data_marker",
"countriesReason": "no_data_marker",
"usAudiencePercentage": null,
"countries": [],
"ages": [],
"genders": [],
"cities": [],
"demographicsBasis": null,
"sampleSize": null,
"instagramAudiences": []
}
}
]
}Authorizations
API key created in Dashboard → Settings → Developer
Path Parameters
Opaque creator ID
Query Parameters
Choose the data scope. company (default) limits results to the API key company's data. agency includes the parent agency and its linked brands. scope=agency requires a parent agency key; other keys receive 403.
company, agency