List ads
One row per ad, or per card for carousel and DCO ads, newest Ad Library start date first.
curl -X GET "https://mythic-analytics.gulp.workers.dev/client/v1/competitor-ads/ads?location_id=example_string&page_id=example_string&active=true&format=VIDEO&has_video=true&has_transcript=true&tag=offer.guarantee&epic=in_order&landing_url=example_string&domain=juvenon.com&since=2024-12-25&limit=50&cursor=example_string" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://mythic-analytics.gulp.workers.dev/client/v1/competitor-ads/ads?location_id=example_string&page_id=example_string&active=true&format=VIDEO&has_video=true&has_transcript=true&tag=offer.guarantee&epic=in_order&landing_url=example_string&domain=juvenon.com&since=2024-12-25&limit=50&cursor=example_string"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://mythic-analytics.gulp.workers.dev/client/v1/competitor-ads/ads?location_id=example_string&page_id=example_string&active=true&format=VIDEO&has_video=true&has_transcript=true&tag=offer.guarantee&epic=in_order&landing_url=example_string&domain=juvenon.com&since=2024-12-25&limit=50&cursor=example_string", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://mythic-analytics.gulp.workers.dev/client/v1/competitor-ads/ads?location_id=example_string&page_id=example_string&active=true&format=VIDEO&has_video=true&has_transcript=true&tag=offer.guarantee&epic=in_order&landing_url=example_string&domain=juvenon.com&since=2024-12-25&limit=50&cursor=example_string", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://mythic-analytics.gulp.workers.dev/client/v1/competitor-ads/ads?location_id=example_string&page_id=example_string&active=true&format=VIDEO&has_video=true&has_transcript=true&tag=offer.guarantee&epic=in_order&landing_url=example_string&domain=juvenon.com&since=2024-12-25&limit=50&cursor=example_string')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"success": true,
"data": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"row_id": "1747063449962897:ad",
"ad_archive_id": "example_string",
"creative_type": "example_string",
"card_index": 42,
"card_count": 10,
"page_id": "example_string",
"page_name": "John Doe",
"is_active": true,
"gone": true,
"gone_at": "2024-12-25T10:00:00Z",
"start_date": "2024-12-25T10:00:00Z",
"end_date": "2024-12-25T10:00:00Z",
"days_running": 42,
"display_format": "example_string",
"publisher_platforms": [
"example_string"
],
"title": "example_string",
"body": "example_string",
"caption": "example_string",
"cta_text": "example_string",
"cta_type": "example_string",
"link_url": "example_string",
"landing_page": {
"url": "https://juvenon.com/pages/bf7",
"domain": "juvenon.com",
"path": "/pages/bf7"
},
"ad_url": "example_string",
"has_video": true,
"video_duration_s": 3.14,
"media_status": "pending",
"analysis_status": "pending",
"hook": "example_string",
"hook_start_s": 3.14,
"hook_end_s": 3.14,
"tags": {
"hook_type": [
"example_string"
],
"angle": [
"example_string"
],
"offer": [
"example_string"
]
},
"epic": {
"all_stages_in_order": true,
"rules_met": 42,
"rules_total": 42
},
"thumbnail_url": "example_string",
"first_seen_at": "2024-12-25T10:00:00Z",
"last_seen_at": "2024-12-25T10:00:00Z",
"last_seen_active_at": "2024-12-25T10:00:00Z"
}
],
"next_cursor": "example_string"
}
{
"error": "Bad Request",
"message": "The request contains invalid parameters or malformed data",
"code": 400,
"details": [
{
"field": "email",
"message": "Invalid email format"
}
]
}
/client/v1/competitor-ads/ads
Target server for requests. Edit to use your own host.
Agency key (ak_), location secret key (sk_, reads only) or a scoped mcp_ key with competitor_ads:read or competitor_ads:write. See Using an mcp_ key over HTTP.
ak_), location secret key (sk_, reads only) or a scoped mcp_ key with competitor_ads:read or competitor_ads:write. See Using an mcp_ key over HTTP.Location to scope to. Required for ak_ keys or send X-Location-Id. Ignored for sk_.
Numeric Facebook page id.
true: active and in the latest complete scrape. false: inactive or gone.
Ad Library display format.
Only ads whose transcript is ready.
An analysis tag as family.tag.
Only ads whose current analysis (analysis_status done) has all four E.P.I.C. stages in order.
Only ads whose normalized landing page is this URL (tracking parameters ignored).
Only ads whose landing page is on this domain (www. ignored).
Ad Library start date on or after.
next_cursor from the previous page.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. Agency key (ak_), location secret key (sk_, reads only) or a scoped mcp_ key with competitor_ads:read or competitor_ads:write. See Using an mcp_ key over HTTP.
Query Parameters
Location to scope to. Required for ak_ keys or send X-Location-Id. Ignored for sk_.
Numeric Facebook page id.
true: active and in the latest complete scrape. false: inactive or gone.
Only ads whose current analysis (analysis_status done) has all four E.P.I.C. stages in order.
in_orderOnly ads whose normalized landing page is this URL (tracking parameters ignored).
Ad Library start date on or after.
next_cursor from the previous page.