curl --request GET \
--url https://api.adspo.co/v1/brands/{brand_id}/creatives \
--header 'x-api-key: <api-key>'import requests
url = "https://api.adspo.co/v1/brands/{brand_id}/creatives"
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://api.adspo.co/v1/brands/{brand_id}/creatives', 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.adspo.co/v1/brands/{brand_id}/creatives",
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://api.adspo.co/v1/brands/{brand_id}/creatives"
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://api.adspo.co/v1/brands/{brand_id}/creatives")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adspo.co/v1/brands/{brand_id}/creatives")
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{
"brand_id": "857986847394146",
"count": 1,
"next_cursor": null,
"creatives": [
{
"creative_id": "f930d886d0fb9e86b9dd6c1200dab7ef",
"brand_id": "857986847394146",
"format": "IMAGE",
"hd_url": "https://r2.adspo.co/creatives/images/original/f930d886d0fb9e86b9dd6c1200dab7ef.jpg",
"sd_url": "https://r2.adspo.co/creatives/images/resized/f930d886d0fb9e86b9dd6c1200dab7ef.jpg",
"is_active": false,
"start_date": "2026-03-16T07:00:00Z",
"end_date": "2026-04-24T07:00:00Z",
"runtime_days": 39,
"ad_count": 10,
"landing_pages": [
"https://www.example.com"
],
"countries": [
"AU",
"GB",
"NZ",
"US"
],
"languages": [
"en"
],
"impression_order": 11,
"variants": []
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Get brand creatives
Returns a paginated list of ad creatives for the given Facebook page ID.
Cursor-based pagination — pass cursor from the previous response as cursor. Cursors are tied to order_by; do not reuse a cursor when changing sort order.
Array filters (country, language) match creatives that include any of the provided values.
curl --request GET \
--url https://api.adspo.co/v1/brands/{brand_id}/creatives \
--header 'x-api-key: <api-key>'import requests
url = "https://api.adspo.co/v1/brands/{brand_id}/creatives"
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://api.adspo.co/v1/brands/{brand_id}/creatives', 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.adspo.co/v1/brands/{brand_id}/creatives",
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://api.adspo.co/v1/brands/{brand_id}/creatives"
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://api.adspo.co/v1/brands/{brand_id}/creatives")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.adspo.co/v1/brands/{brand_id}/creatives")
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{
"brand_id": "857986847394146",
"count": 1,
"next_cursor": null,
"creatives": [
{
"creative_id": "f930d886d0fb9e86b9dd6c1200dab7ef",
"brand_id": "857986847394146",
"format": "IMAGE",
"hd_url": "https://r2.adspo.co/creatives/images/original/f930d886d0fb9e86b9dd6c1200dab7ef.jpg",
"sd_url": "https://r2.adspo.co/creatives/images/resized/f930d886d0fb9e86b9dd6c1200dab7ef.jpg",
"is_active": false,
"start_date": "2026-03-16T07:00:00Z",
"end_date": "2026-04-24T07:00:00Z",
"runtime_days": 39,
"ad_count": 10,
"landing_pages": [
"https://www.example.com"
],
"countries": [
"AU",
"GB",
"NZ",
"US"
],
"languages": [
"en"
],
"impression_order": 11,
"variants": []
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Your Adspo API key.
Path Parameters
The Facebook Ad Library page ID of the brand.
Query Parameters
Sort order for results.
latest, oldest, longest_running, most_impressions, most_ads Pagination cursor from a previous response.
Filter creatives first seen on or after this date.
Accepted formats: YYYY-MM-DD, YYYY-MM-DD HH:MM:SS, YYYY-MM-DDTHH:MM:SS.
A bare date (e.g. 2024-11-12) is interpreted as 2024-11-12 00:00:00.
Filter creatives last seen on or before this date.
Accepted formats: YYYY-MM-DD, YYYY-MM-DD HH:MM:SS, YYYY-MM-DDTHH:MM:SS.
To capture all creatives through a full day, use YYYY-MM-DD 23:59:59.
Filter by whether the creative is currently running.
Filter by creative format.
IMAGE, VIDEO Minimum runtime in days.
Maximum runtime in days.
Minimum number of ad variants using this creative.
Maximum number of ad variants using this creative.
Minimum impression order rank. Lower values indicate higher estimated impressions.
Maximum impression order rank.
Comma-separated or repeated. Matches creatives shown in any of these countries.
Comma-separated or repeated. Matches creatives in any of these languages.
Returns an ads array containing all Meta ads running the creative, including details such as title, body_text, link_text, etc.
Response
A page of creatives.
Facebook Ad Library page ID. Only present on brand creatives responses.
Number of creatives returned in this page.
Pass this value as cursor to retrieve the next page. null when there are no more results.
Show child attributes
Show child attributes