# 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](https://www.pipispy.com/zh/doc/others-product-category) |
| 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

```bash
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

```json
{
  "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

```json
{
  "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

1. **Pagination Limits**: Recommended page size is 20-100; larger page sizes may affect response time
2. **Time Format**: All time fields use Unix timestamp (seconds); please convert accordingly
3. **Array Parameters**: When using array-type filter conditions, results will match any value in the array (OR logic)
4. **Range Filters**: When using paired start and end parameters, ensure start ≤ end
5. **Keyword Search**: extend_keywords and exclude_keywords can be used together; inclusion filters are applied first, then exclusion filters
6. **Sort Optimization**: Recommend specifying order_by and direction parameters; otherwise default sorting (ad_started_at descending) will be used
7. **Deep Pagination**: For large datasets, recommend using search_after parameter for better performance
8. **Statistics Fields**: with_ad_status_group and with_ad_started_at_group only affect statistics in the response, not the data list content
9. **Data Updates**: Ad data is updated regularly; recommend periodic re-querying for latest data
10. **Multi-value Parameters**: Some fields support multiple comma-separated values, such as country, ad_platform, etc.
11. **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.
12. **E-commerce Platforms**: e_commerce_platform supports platforms including shopify, woocommerce, magento, prestashop, opencart, bigcommerce, ecwid, shopline, shoplazza, wix, squarespace, etc.