Ad Library List API
API Information
- API Name: Ad Library List Query
- Request Method: POST
- API Address:
/open-api/v1/data - API Path:
/v3/api/open/lib-ads/list - API Description: Retrieve ad library list data with multi-dimensional filtering and pagination support, suitable for ad analysis, competitor research, creative mining, and other scenarios
- Pricing: 1 credit per data record retrieved
Request Headers:
- Content-Type: application/json
- Accept: application/json
Request Parameters
Request Structure
| Parameter | Type | Description | Example | Required | Default |
|---|---|---|---|---|---|
key | string | External API request key | "your_api_key_here" | Yes | |
uri | string | API path | "/v3/api/open/lib-ads/list" | Yes | |
params | object | API parameter object | See parameter list | Yes |
Request Body Parameters (params object)
Basic Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | Integer | No | Page number, minimum value is 1. Used for paginated queries to specify which page of data to retrieve |
per_page | Integer | No | Page size, range 1-100. Specifies the number of ads returned per page |
order_by | String | No | Sort field, determines which metric to sort results by. Available values:<br>• ad_started_at - Ad creation time<br>• first_discovered_at - Ad discovery time<br>• last_discovered_at - Ad last update time<br>• latest_actived_at - Ad last active time<br>• active_days - Ad duration<br>• ad_cost - Ad spend<br>• ad_audience_reach - Reach<br>• adset_count - Adset count<br>• advertiser_ad_count - Advertiser ad count<br>• product_ad_count - Product ad count<br>• product_price_usd - Product price<br>• product_creation_time - Product creation time<br>• store_ad_count - Store ad count<br>• video_duration - Video duration<br>• app_last_month_download_count - App monthly downloads<br>• app_last_month_revenue_usd - App monthly revenue (USD)<br>• app_rate_score - App rating<br>• app_creation_time - App release date |
direction | String | No | Sort direction, works with order_by. Available values:<br>• desc - Descending (high to low)<br>• asc - Ascending (low to high) |
Ad Basic Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
ad_content | String | No | Ad text, search for ads containing specific content |
ad_content_md5 | String | No | MD5 hash of ad text, for exact matching of identical text |
ad_platform | String | No | Ad platform, filter ads running on specific platforms. Available values: FACEBOOK, INSTAGRAM, AUDIENCE_NETWORK, MESSENGER, THREADS |
ad_status | String | No | Ad status, filter ads by different running states. Available values:<br>• 1 - Active (running)<br>• 2 - Inactive (paused)<br>• 3 - Removed (stopped) |
ad_forecast | Long | No | Ad prediction, AI-evaluated ad stage. Available values:<br>• 1 - Testing<br>• 2 - Scaling<br>• 3 - Winning |
country | String | No | Country, filter ads running in specific countries. Use ISO 3166-1 alpha-2 country codes, multiple countries separated by commas. Example: "US,CA,GB" |
language | String | No | Language, filter ads in specific languages. Use ISO 639-1 language codes. Example: "en" |
data_type | String | No | Ad type (major category), multiple values can be separated by commas. Available values:<br>• 1 - E-commerce<br>• 2 - Dropshipping<br>• 3 - Games<br>• 4 - App<br>• 5 - AI<br>• 6 - Short Drama |
source_ad_id | String | No | Ad creative ID, multiple values separated by commas. Example: "3617279838571920,6767880647973308" |
source_advertiser_id | String | No | Page ID, query all ads from a specific advertiser |
Ad Time Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
ad_started_at_start | Long | No | Ad creation time (start), timestamp in seconds. Lower bound for ad creation time range |
ad_started_at_end | Long | No | Ad creation time (end), timestamp in seconds. Upper bound for ad creation time range. Works with ad_started_at_start |
first_discovered_at_start | Long | No | Ad discovery time (start), timestamp in seconds. Lower bound for ad discovery time range |
first_discovered_at_end | Long | No | Ad discovery time (end), timestamp in seconds. Upper bound for ad discovery time range. Works with first_discovered_at_start |
last_discovered_at_start | Long | No | Ad last update time (start), timestamp in seconds. Lower bound for ad last update time range |
last_discovered_at_end | Long | No | Ad last update time (end), timestamp in seconds. Upper bound for ad last update time range. Works with last_discovered_at_start |
latest_actived_at_start | Long | No | Ad last active time (start), timestamp in seconds. Lower bound for ad last active time range |
latest_actived_at_end | Long | No | Ad last active time (end), timestamp in seconds. Upper bound for ad last active time range. Works with latest_actived_at_start |
Ad Duration Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
active_days_start | Long | No | Ad duration (start), lower bound for ad running days. More days indicate longer continuous running time |
active_days_end | Long | No | Ad duration (end), upper bound for ad running days. Works with active_days_start |
Ad Data Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
ad_audience_reach_start | Integer | No | Reach (start), lower bound for ad reach range. Reach indicates unique users reached by the ad |
ad_audience_reach_end | Integer | No | Reach (end), upper bound for ad reach range. Works with ad_audience_reach_start |
ad_cost_start | Double | No | Ad spend (start), in USD. Lower bound for ad spend amount range |
ad_cost_end | Double | No | Ad spend (end), in USD. Upper bound for ad spend amount range. Works with ad_cost_start |
adset_count_start | Long | No | Adset count (start), lower bound for adset count range |
adset_count_end | Long | No | Adset count (end), upper bound for adset count range. Works with adset_count_start |
Advertiser Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
advertiser_id | String | No | Advertiser ID, query all ads from a specific advertiser |
advertiser_name | String | No | Page name, search for advertisers containing specific names |
advertiser_ad_count_start | Long | No | Advertiser ad count (start), lower bound for advertiser creative count range |
advertiser_ad_count_end | Long | No | Advertiser ad count (end), upper bound for advertiser creative count range. Works with advertiser_ad_count_start |
with_blockded_advertiser | String | No | Return blocked advertisers, control whether to include blocked advertisers in results |
Button Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
button_text | String | No | Button text, search for ads containing specific button text, Allowed values: <br> • Apply now <br> • Book now <br> • Buy tickets <br> • Contact us <br> • Donate now <br> • Download <br> • Get offer <br> • Get quote <br> • Get showtimes <br> • Send message <br> • Install now <br> • Learn more <br> • No button <br> • Order now <br> • Play game <br> • Request time <br> • See menu <br> • Shop now <br> • Sign up <br> • Subscribe <br> • Watch more |
button_type | String | No | Button type, filter ads using specific call-to-action button types, Allowed values: <br> • APPLY_NOW <br> • BOOK_TRAVEL <br>• BUY_TICKETS <br> • CONTACT_US <br> • DONATE_NOW <br> • DOWNLOAD <br> • GET_OFFER <br> • GET_OFFER_VIEW <br> • GET_QUOTE <br> • GET_SHOWTIMES <br> • INSTAGRAM_MESSAGE <br> • INSTALL_MOBILE_APP <br> • LEARN_MORE <br> • NO_BUTTON <br> • ORDER_NOW <br> • PLAY_GAME <br> • REQUEST_TIME <br> • SEE_MENU <br> • SHOP_NOW <br> • SIGN_UP <br> • SUBSCRIBE <br> • WATCH_MORE |
Media Creative Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
media_format | String | No | Media format, filter ads with specific creative formats. Available values:<br>• 1 - Video<br>• 2 - Image<br>• 3 - Carousel |
video_duration_start | Long | No | Video duration (start), in seconds. Lower bound for video duration range |
video_duration_end | Long | No | Video duration (end), in seconds. Upper bound for video duration range. Works with video_duration_start |
size | String | No | Size ratio, multiple values separated by commas. Filter ad creatives with specific size ratios |
aspect_ratio | String | No | Aspect ratio, multiple values separated by commas. Filter ad creatives with specific aspect ratios |
clarity | String | No | Video quality, multiple values separated by commas. Available values:<br>• HD - High Definition<br>• SD - Standard<br>• LD - Low<br>• UNKNOWN |
Audience Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
gender_audience | String | No | Gender, multiple values separated by commas. Available values:<br>• All<br>• Men<br>• Women |
age_audience | String | No | Age, multiple values separated by commas. Filter ad audience by specific age ranges |
Landing Page Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
landing_pages | String | No | Landing page URL, search for ads with specific landing page links |
landing_pages_md5 | String | No | MD5 hash of landing page, for exact matching of identical landing pages |
landing_page_type | String | No | Landing page type, filter ads with specific landing page types. Available values:<br>• 1 - E-commerce product<br>• 2 - E-commerce collection pages<br>• 3 - E-commerce other<br>• 4 - APP<br>• 5 - AI website<br>• 6 - Short drama website<br>• 100 - Other<br>• 101 - With redirect (not supported, reserved) |
related_roots | String | No | Domains, multiple values separated by commas. Filter ads under specific domains |
E-commerce Platform Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
e_commerce_platform | String | No | E-commerce platform, filter ads from specific platforms. Available values:<br>• shopify<br>• woocommerce<br>• magento<br>• prestashop<br>• opencart<br>• bigcommerce<br>• ecwid<br>• shopline<br>• shoplazza<br>• wix<br>• squarespace |
e_commerce_type | String | No | E-commerce type, multiple values separated by commas. Available values:<br>• 1 - Dropshipping<br>• 2 - Print on demand (POD)<br>• 3 - Cash/collect on delivery (COD)<br>• 4 - Digital products |
Product Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
product_name | String | No | Product name, search for ads containing specific product names |
product_category_id | String | No | Product category, filter ads for products in specific categories. See E-commerce Categories |
product_price_usd_start | Double | No | Product price (start), in USD. Lower bound for product price range |
product_price_usd_end | Double | No | Product price (end), in USD. Upper bound for product price range. Works with product_price_usd_start |
product_creation_time_start | Long | No | Product creation time (start), timestamp in seconds. Lower bound for product creation time range |
product_creation_time_end | Long | No | Product creation time (end), timestamp in seconds. Upper bound for product creation time range. Works with product_creation_time_start |
product_ad_count_start | Long | No | Product ad count (start), lower bound for product creative count range |
product_ad_count_end | Long | No | Product ad count (end), upper bound for product creative count range. Works with product_ad_count_start |
related_product_ids | String | No | Product IDs, multiple values separated by commas. Batch query ads for specified products. Example: "prod_1,prod_2" |
Store Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
store_ad_count_start | Long | No | Store ad count (start), lower bound for store creative count range |
store_ad_count_end | Long | No | Store ad count (end), upper bound for store creative count range. Works with store_ad_count_start |
related_store_ids | String | No | Store IDs, multiple values separated by commas. Batch query ads for specified stores. Example: "store_1,store_2" |
App Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
app_store | String | No | App platform, multiple values separated by commas. Available values:<br>• apple - Apple App Store<br>• google - Google Play<br>• web - Website |
app_category | String | No | App category (using pipiads organized categories), multiple values separated by commas. Filter ads for apps in specific categories |
app_ai_category | String | No | App AI category, multiple values separated by commas. AI-based intelligent app classification |
app_developer_ids | String | No | App developer IDs, multiple values separated by commas. Query all app ads from specific developers |
app_creation_time_start | Long | No | App release date (start), timestamp in seconds. Lower bound for app release time range |
app_creation_time_end | Long | No | App release date (end), timestamp in seconds. Upper bound for app release time range. Works with app_creation_time_start |
app_rate_score_start | Double | No | App rating (start), lower bound for app rating range. Rating range is typically 0-5 |
app_rate_score_end | Double | No | App rating (end), upper bound for app rating range. Works with app_rate_score_start |
app_last_month_download_count_start | Long | No | App monthly downloads (start), lower bound for app monthly download range. Refers to estimated downloads in the last month |
app_last_month_download_count_end | Long | No | App monthly downloads (end), upper bound for app monthly download range. Works with app_last_month_download_count_start |
app_last_month_revenue_usd_start | Double | No | App monthly revenue (start), in USD. Lower bound for app monthly revenue range. Refers to estimated revenue in the last month |
app_last_month_revenue_usd_end | Double | No | App monthly revenue (end), in USD. Upper bound for app monthly revenue range. Works with app_last_month_revenue_usd_start |
Keyword Search
| Parameter | Type | Required | Description |
|---|---|---|---|
extend_keywords | Array | No | Keyword search list, search ads by keywords. Supports multiple keyword combination searches. Each object in the array contains the following fields:<br>• field - Search field, available values: all, ad_content (ad text), landing_pages (landing page URL), advertiser_name (advertiser page name), product_name (product name), product (e-commerce product: product name, product link), store (store: store name, store link), app_name, app_developer_name, advertiser (social page: advertiser name, source advertiser ID), material (creative info: script/Hook/Tags, reserved, not yet available)<br>• logic_operator - Logic operator, available values: and, or<br>• value - Search content |
exclude_keywords | Array | No | Exclude keyword list, exclude ads containing specific keywords. Same structure as extend_keywords |
Exclusion Filters
| Parameter | Type | Required | Description |
|---|---|---|---|
exclude_ad_content | Array | No | Exclude ad text, exclude ads containing specific text |
exclude_advertiser_id | String | No | Exclude advertiser IDs, multiple values separated by commas. Exclude ads from specific advertisers |
exclude_advertiser_name | Array | No | Exclude advertiser page names, exclude advertisers with specific names |
exclude_landing_pages | Array | No | Exclude landing page URLs, exclude ads with specific landing page links |
exclude_product_name | Array | No | Exclude product names, exclude ads containing specific product names |
Advanced Options
| Parameter | Type | Required | Description |
|---|---|---|---|
enable_token_search | Integer | No | Token search switch, control whether to enable token search. Available values:<br>• 0 - Disable token search, match complete words<br>• 1 - Enable token search, support fuzzy matching and partial word matching |
release_area | String | No | Release area. Available values:<br>• 1 - EU version |
search_after | String | No | Deep pagination query (compatibility: if using this method, also pass this parameter for the first page with an empty string value, &=search_after)<br>Format: [{sort field value}, {ID value}] |
with_ad_status_group | String | No | Return ad count by status, when set, the response will include ad_status_group field with statistics for each status |
with_ad_started_at_group | String | No | Return first ad date statistics, when set, the response will include ad_started_at_group field with statistics by time period (today, yesterday, last 7 days, last 30 days, last 90 days, total) |
Request Example
curl -X POST "https://www.pipispy.com/open-api/v1/data" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"key": "your_api_key_here",
"uri": "/v3/api/open/lib-ads/list",
"params": {
"page": 1,
"per_page": 20,
"ad_platform": "FACEBOOK",
"ad_status": "1",
"country": "US",
"ad_cost_start": 100,
"ad_cost_end": 1000,
"extend_keywords": [
{
"field": "ad_content",
"value": "sale",
"logic_operator": "and"
}
],
"order_by": "ad_started_at",
"direction": "desc",
"with_ad_status_group": "true"
}
}'
Response Parameters
Response Body Structure
{
"code": 200,
"message": "success",
"data": {
"ad_started_at_group": {},
"ad_status_group": {},
"current_page": 1,
"data": [],
"first_page_url": "",
"from": 1,
"last_page": 10,
"last_page_url": "",
"next_page_url": "",
"path": "",
"per_page": 20,
"prev_page_url": "",
"to": 20,
"total": 200,
"search_after": [],
"has_more": false,
"is_manual_search": false
},
"version": "v1",
"timestamp": null,
"sign": null,
"remaining_credits": 9980,
"consumed_credits": 20,
"success": true,
"fail": false
}
Response Field Description
| Field | Type | Description |
|---|---|---|
code | Integer | Business status code, 200 indicates success |
message | String | Response message, typically "success" on success |
data | Object | Response data object |
version | String | API version |
timestamp | Long | Response timestamp |
sign | String | Response signature |
remaining_credits | Long | Current remaining available credits after this request |
consumed_credits | Long | Credits consumed by this request |
success | Boolean | Whether request was successful |
fail | Boolean | Whether request failed |
Pagination Information Fields
| Field | Type | Description |
|---|---|---|
ad_started_at_group | Object | First ad date statistics, returned only if with_ad_started_at_group is set |
ad_status_group | Object | Ad count by status, returned only if with_ad_status_group is set |
current_page | Integer | Current page number |
data | Array | Ad data list, contains array of ad information |
first_page_url | String | First page URL |
from | Integer | Starting record number of current page |
last_page | Integer | Last page number, can be used to determine total pages |
last_page_url | String | Last page URL |
next_page_url | String | Next page URL |
path | String | Pagination path |
per_page | Integer | Page size, number of records returned per page |
prev_page_url | String | Previous page URL |
to | Integer | Ending record number of current page |
total | Integer | Total data count, total number of ads matching the filter criteria |
search_after | Array | Deep pagination "marker", returned only if search_after is set |
has_more | Boolean | Whether there are more results, returned only if search_after is set |
is_manual_search | Boolean | Whether free user has changed filter criteria, true = yes |
First Ad Date Statistics Fields (ad_started_at_group)
When with_ad_started_at_group is set in the request, this field will be included in the response:
| Field | Type | Description |
|---|---|---|
today | Integer | Today |
yesterday | Integer | Yesterday |
last_7_days | Integer | Last 7 days |
last_30_days | Integer | Last 30 days |
last_90_days | Integer | Last 90 days |
total | Integer | Total |
Ad Status Statistics Fields (ad_status_group)
When with_ad_status_group is set in the request, this field will be included in the response:
| Field | Type | Description |
|---|---|---|
ad_status_1 | Integer | Active |
ad_status_2 | Integer | Inactive |
ad_status_3 | Integer | Removed |
ad_status_all | Integer | Total |
Ad Information Fields (data)
| Field | Type | Description |
|---|---|---|
id | String | Ad ID, internal unique identifier |
active_days | Long | Ad duration |
ad_audience | Object | Audience |
ad_audience_reach | Long | Reach |
ad_content | String | Ad text |
ad_cost | Double | Ad spend |
ad_forecast | Long | Ad prediction |
ad_platform | Array | Ad platform |
ad_started_at | Long | Ad creation time |
ad_status | Long | Active status |
adset_count | Long | Adset count |
advertiser | Object | Advertiser |
button_type | String | Button type |
button_text | String | Button text |
cards | Array | Carousel |
country | Array | Country |
first_discovered_at | Long | Ad discovery time |
images | Array | Images |
landing_page_type | Long | Landing page type |
landing_pages | Array | Landing page URLs |
language | String | Language |
last_discovered_at | Long | Ad last update time |
latest_actived_at | Long | Ad last active time |
media_format | Long | Media format |
products | Array | Ad products |
source_ad_id | String | Source ad ID |
store | Object | Ad store |
user_collected | Integer | User collected ad, 1: yes; 2: no |
videos | Array | Videos |
related_roots | Array | Advertisers based on domain |
group_name | String | Collection group name |
favorite_time | Long | Collection time, timestamp |
store_id | String | Store ID, corresponds to store.pipiads_biz_id |
root_path_id | String | root_path database ID |
shop_id | String | TikTok shop ID, null for PPSPY data |
app_id | String | App ID, null for PPSPY data |
Ad Audience Information Fields (ad_audience)
| Field | Type | Description |
|---|---|---|
age_audience | Object | Audience age range |
details | Array | Audience country details |
gender_audience | String | Audience gender group |
total_reach | Long | Total audience reach |
Audience Age Range Fields (age_audience)
| Field | Type | Description |
|---|---|---|
max | Long | Maximum age |
min | Long | Minimum age |
Audience Country Details Fields (details)
| Field | Type | Description |
|---|---|---|
age_gender_breakdowns | Array | Audience details |
country | String | Country |
total_reach | Long | Audience count |
Age Gender Breakdown Fields (age_gender_breakdowns)
| Field | Type | Description |
|---|---|---|
age_range | String | Age range |
female | Long | Female count |
male | Long | Male count |
unknown | Long | Other count |
Advertiser Information Fields (advertiser)
| Field | Type | Description |
|---|---|---|
id | String | Advertiser ID |
name | String | Advertiser page name |
ad_count | Long | Advertiser page creative count |
ad_country | Array | Countries advertised in |
ads_library_link | String | Library link |
adset_count | Long | Adset count |
e_commerce_platform | String | E-commerce platform |
like_count | Long | Advertiser page likes |
profile_picture_url | String | Advertiser profile picture URL |
source_advertiser_id | String | Page ID |
source_advertiser_link | String | Advertiser source link |
user_blocked | Integer | User blocked advertiser, 1: yes; 2: no |
Carousel Information Fields (cards)
| Field | Type | Description |
|---|---|---|
cover_url | String | Video cover image URL |
duration | Long | Video duration |
height | Long | Video/image height |
media_type | Long | Media type, 1: video; 2: image |
url | String | Video/image URL |
width | Long | Video/image width |
Image Information Fields (images)
| Field | Type | Description |
|---|---|---|
height | Long | Image height |
url | String | Image URL |
width | Long | Image width |
Video Information Fields (videos)
| Field | Type | Description |
|---|---|---|
cover_url | String | Video cover URL |
duration | Long | Video duration |
height | Long | Video height |
url | String | Video URL |
width | Long | Video width |
Product Information Fields (products)
| Field | Type | Description |
|---|---|---|
id | String | Product ID |
name | String | Product name |
ad_cost | Double | Ad spend |
ad_cost_ratio | Double | Product ad spend ratio in this ad, 0~1 |
ad_count | Long | Product ad creative count |
ad_ended_at | Long | Ad end time |
ad_started_at | Long | Ad start time |
category_id | String | Category ID |
category_name | String | Category name |
creation_time | Long | Creation time |
currency | String | Currency |
image_url | String | Product image |
price | Double | Product price |
price_usd | Double | Product price (USD) |
source_product_link | String | Product link |
total_revenue | Double | Product revenue |
Store Information Fields (store)
| Field | Type | Description |
|---|---|---|
id | String | Store ID |
name | String | Store name |
ad_count | Long | Store creative count |
e_commerce_platform | String | E-commerce platform |
e_commerce_types | Array | E-commerce types |
logo_url | String | Store logo image |
source_store_link | String | Store link |
pipiads_biz_id | String | Pipiads store ID |
Response Example
{
"code": 200,
"message": "success",
"data": {
"ad_started_at_group": {
"today": 10,
"yesterday": 25,
"last_7_days": 150,
"last_30_days": 500,
"last_90_days": 1200,
"total": 41166
},
"ad_status_group": {
"ad_status_1": 15000,
"ad_status_2": 20000,
"ad_status_3": 6166,
"ad_status_all": 41166
},
"current_page": 1,
"data": [
{
"id": "428822805b9d1826ae0486cb66311288",
"active_days": 1,
"ad_audience": {
"details": [
{
"country": "BE",
"age_gender_breakdowns": [
{
"female": 0,
"male": 1,
"unknown": 0,
"age_range": "25-34"
}
],
"total_reach": 2
}
],
"age_audience": {
"max": 65,
"min": 25
},
"gender_audience": "All",
"total_reach": 0
},
"ad_audience_reach": 0,
"ad_content": "No knife skills, no stress — just load, press, and boom, you've got sushi 🍱🙌",
"ad_cost": 1.37,
"ad_forecast": 1,
"ad_platform": [
"FACEBOOK",
"INSTAGRAM",
"AUDIENCE_NETWORK",
"MESSENGER",
"THREADS"
],
"ad_started_at": 1752130800,
"ad_status": 2,
"adset_count": 1,
"advertiser": {
"id": "c979c0120e4b6d5dae0486cb66311288",
"name": "Stumpf Alston Nicholas",
"ad_count": 643,
"ad_country": [
"SE",
"ES",
"BE",
"AT",
"DE",
"FR",
"IT",
"IE",
"PT",
"NL"
],
"ads_library_link": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=ALL&is_targeted_country=false&media_type=all&search_type=page&view_all_page_id=127604557091989",
"adset_count": 1381,
"e_commerce_platform": "shopify",
"like_count": 7,
"profile_picture_url": "https://fb-cdn.pipispy.com/images/af109907042f563cd317a8a64ddce21e.png",
"source_advertiser_id": "127604557091989",
"source_advertiser_link": "https://facebook.com/61550723637932",
"user_blocked": 2
},
"button_text": "Shop now",
"button_type": "SHOP_NOW",
"cards": [],
"country": [
"BE",
"DE",
"GB",
"DK",
"FI",
"PT",
"SE",
"IE",
"IT",
"ES",
"AT"
],
"first_discovered_at": 1752188451,
"images": [],
"landing_page_type": 1,
"landing_pages": [
"https://counitty.com/products/ultimate-sushi-making-kit"
],
"language": "en",
"last_discovered_at": 1752188451,
"latest_actived_at": 1752130800,
"media_format": 1,
"products": [
{
"id": "b71e0551cfbb314175c4dac1b4cf2dfc",
"name": "🍣 Ultimate Sushi Making Kit | Fun for All Ages · Easy to Use · Dishwasher Safe 🎉",
"ad_count": 7,
"ad_cost": 15.52,
"ad_cost_ratio": 0.0883,
"ad_ended_at": 1752130800,
"ad_started_at": 1752130800,
"category_id": "62739b6038365b2f72048ec1",
"category_name": "Home & Garden",
"creation_time": 1752134135,
"currency": "GBP",
"image_url": "https://fb-cdn.pipispy.com/images/pimg_8372835ac9512990130d7.png",
"price": 17.0,
"price_usd": 23.1,
"source_product_link": "https://counitty.com/products/ultimate-sushi-making-kit"
}
],
"source_ad_id": "1489834018843759",
"store": {
"id": "7458071d08bd6c3c75c4dac1b4cf2dfc",
"name": "Community Nail Care CenterLTD",
"ad_count": 421,
"e_commerce_platform": "shopify",
"e_commerce_types": [1, 2],
"logo_url": "https://fb-cdn.pipispy.com/images/store_logo.png",
"source_store_link": "https://counitty.com",
"pipiads_biz_id": "biz_123456"
},
"user_collected": 2,
"videos": [
{
"duration": 21,
"height": 1280,
"url": "https://fb-cdn.pipispy.com/videos/63a2820717c43d00f1481d20af5d0b6d.mp4",
"width": 720,
"cover_url": "https://fb-cdn.pipispy.com/images/d38b7ac2a4d956e541d338d84b3d10ae.png"
}
],
"related_roots": [
"counitty.com"
],
"favorite_time": 0,
"group_name": null,
"store_id": "biz_123456",
"root_path_id": "root_123",
"shop_id": null,
"app_id": null
}
],
"first_page_url": "http://app.ppspy.com/v1/lib-ads/list?page=1",
"from": 1,
"last_page": 2059,
"last_page_url": "http://app.ppspy.com/v1/lib-ads/list?page=2059",
"next_page_url": "http://app.ppspy.com/v1/lib-ads/list?page=2",
"path": "http://app.ppspy.com/v1/lib-ads/list",
"per_page": 20,
"prev_page_url": null,
"to": 20,
"total": 41166,
"search_after": null,
"has_more": false,
"is_manual_search": false
},
"version": "v1",
"timestamp": null,
"sign": null,
"remaining_credits": 9980,
"consumed_credits": 20,
"success": true,
"fail": false
}
Error Code Description
| Error Code | Description |
|---|---|
200 | Success |
400 | Bad request - please check parameter format and value ranges |
401 | Unauthorized - API key is invalid or expired |
403 | Forbidden - insufficient balance or API access restricted |
404 | Not found - API path does not exist |
444 | Too many requests - rate limit triggered |
500 | Internal server error - please try again later |
Important Notes
- Pagination Limits: Recommended page size is 20-100; larger page sizes may affect response time
- Time Format: All time fields use Unix timestamp (seconds); please convert accordingly
- Array Parameters: When using array-type filter conditions, results will match any value in the array (OR logic)
- Range Filters: When using paired start and end parameters, ensure start ≤ end
- Keyword Search: extend_keywords and exclude_keywords can be used together; inclusion filters are applied first, then exclusion filters
- Sort Optimization: Recommend specifying order_by and direction parameters; otherwise default sorting (ad_started_at descending) will be used
- Deep Pagination: For large datasets, recommend using search_after parameter for better performance
- Statistics Fields: with_ad_status_group and with_ad_started_at_group only affect statistics in the response, not the data list content
- Data Updates: Ad data is updated regularly; recommend periodic re-querying for latest data
- Multi-value Parameters: Some fields support multiple comma-separated values, such as country, ad_platform, etc.
- Keyword Fields: extend_keywords and exclude_keywords support field values including all, ad_content, landing_pages, advertiser_name, product_name, product, store, app_name, app_developer_name, advertiser, material, etc.
- E-commerce Platforms: e_commerce_platform supports platforms including shopify, woocommerce, magento, prestashop, opencart, bigcommerce, ecwid, shopline, shoplazza, wix, squarespace, etc.