Ad Library Product Search API
API Information
- API Name: Ad Library Product Search
- Request Method: POST
- API Endpoint:
/open-api/v1/data - API Path:
/v3/api/open/ppspy/ad-products/search - API Description: Search ad library products based on multiple filtering conditions, supporting precise queries by product attributes, store information, advertising data, and other dimensions. Suitable for e-commerce product analysis, competitor research, and other scenarios
- Pricing: Retrieving one data result consumes 1 credit
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/ppspy/ad-products/search" | Yes | |
params | object | API input parameters object | See parameter list | Yes |
Request Body Parameters (params object)
Basic Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | Integer | No | Page number, minimum value equals 1. Used for paginated queries to specify which page of data to retrieve |
per_page | Integer | No | Page size, value range 1-100. Specifies the number of products returned per page |
order_by | String | No | Sort field, determines which metric to sort results by. Options:<br>• ad_started_at - Ad start time<br>• ad_ended_at - Ad end time<br>• active_adset_count - Active ad set count<br>• adset_count_24h - 24-hour ad set count<br>• adset_count - Total ad set count<br>• ad_count - Ad creative count<br>• store_active_adset_count - Store active ad set count<br>• creation_time - Product creation time<br>• ad_audience_reach - Reach<br>• ad_cost - Ad spend<br>• active_days - Ad days |
direction | String | No | Sort order, used with order_by. Options:<br>• desc - Descending (large to small)<br>• asc - Ascending (small to large) |
Product Filter Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ids | String Array | No | Product ID list, used for batch querying specified products. Example: ["05fcadd84113edd111628deae2a75553", "1edc9a26b55b66a411628deae2a75553"] |
category_id | String Array | No | Product category ID list, see E-commerce Categories for filtering products in specific categories. Example: ["62739aec38365b2f72048ebd", "62739b6038365b2f72048ec1"] |
currency | String Array | No | Currency unit list, used for filtering products using specific currencies. Example: ["USD", "EUR"] |
e_commerce_platform | String Array | No | E-commerce platform list, used for filtering products from specific e-commerce platforms. Example: ["shopify", "woocommerce"] |
Product Price Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
price_usd_start | Double | No | Product USD price (start), used for filtering the lower limit of price range, unit: USD |
price_usd_end | Double | No | Product USD price (end), used for filtering the upper limit of price range, unit: USD. Used with price_usd_start |
Product Time Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
creation_time_start | Long | No | Product creation time (start), timestamp: seconds. Used for filtering the lower limit of creation time range |
creation_time_end | Long | No | Product creation time (end), timestamp: seconds. Used for filtering the upper limit of creation time range. Used with creation_time_start |
Advertising Data Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
ad_status | Integer | No | Ad status, used for filtering products with different placement statuses. Options:<br>• 1 - Active (currently placing ads)<br>• 2 - Stopped (ads paused) |
ad_forecast | Integer Array | No | AI score, evaluates product stage based on AI algorithm. Options:<br>• 1 - Testing phase (new product testing)<br>• 2 - Growth phase (growth period)<br>• 3 - Profit phase (maturity period)<br>Example: [1, 2] |
Ad Time Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
ad_started_at_start | Long | No | Ad start time (start), timestamp: seconds. Used for filtering the lower limit of ad start time range |
ad_started_at_end | Long | No | Ad start time (end), timestamp: seconds. Used for filtering the upper limit of ad start time range. Used with ad_started_at_start |
ad_ended_at_start | Long | No | Ad end time (start), timestamp: seconds. Used for filtering the lower limit of ad end time range |
ad_ended_at_end | Long | No | Ad end time (end), timestamp: seconds. Used for filtering the upper limit of ad end time range. Used with ad_ended_at_start |
Ad Days Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
active_days_start | Long | No | Ad days (start), used for filtering the lower limit of ad placement days range. More days indicates longer continuous placement |
active_days_end | Long | No | Ad days (end), used for filtering the upper limit of ad placement days range. Used with active_days_start |
Ad Creative Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
ad_count_start | Integer | No | Ad creative count (start), used for filtering the lower limit of product ad creative count range. More creatives indicates greater promotion effort |
ad_count_end | Integer | No | Ad creative count (end), used for filtering the upper limit of product ad creative count range. Used with ad_count_start |
Ad Set Count Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
active_adset_count_start | Integer | No | Active ad set count (start), used for filtering the lower limit of current active ad set count range. Active ad sets are those currently being placed |
active_adset_count_end | Integer | No | Active ad set count (end), used for filtering the upper limit of current active ad set count range. Used with active_adset_count_start |
adset_count_start | Integer | No | Total ad set count (start), used for filtering the lower limit of total ad set count range, including active and stopped ad sets |
adset_count_end | Integer | No | Total ad set count (end), used for filtering the upper limit of total ad set count range. Used with adset_count_start |
adset_count_24h_start | Integer | No | 24-hour ad set count (start), used for filtering the lower limit of new ad sets in the last 24 hours. Used for discovering latest trending products |
adset_count_24h_end | Integer | No | 24-hour ad set count (end), used for filtering the upper limit of new ad sets in the last 24 hours. Used with adset_count_24h_start |
Ad Spend Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
ad_cost_start | Double | No | Ad spend (start), unit: USD. Used for filtering the lower limit of ad spend amount range, can evaluate product promotion investment |
ad_cost_end | Double | No | Ad spend (end), unit: USD. Used for filtering the upper limit of ad spend amount range. Used with ad_cost_start |
Reach Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
ad_audience_reach_start | Integer | No | Reach (start), used for filtering the lower limit of ad reach range. Reach refers to the number of unique users reached by ads |
ad_audience_reach_end | Integer | No | Reach (end), used for filtering the upper limit of ad reach range. Used with ad_audience_reach_start |
Store Filter Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
store_id | String | No | Store ID, used for querying all products under a specific store |
store_country | String Array | No | Store country list, used for filtering store products from specific countries. Uses ISO 3166-1 alpha-2 standard country codes. Example: ["US", "CA", "GB"] |
store_language | String Array | No | Store language list, used for filtering store products using specific languages. Uses ISO 639-1 standard language codes. Example: ["en", "de", "fr"] |
store_pixel_platforms | String Array | No | Pixel platform list, used for filtering store products with specific tracking pixels installed. Options: snap, tiktok, pinterest. Example: ["tiktok", "snap"] |
Store Product Count Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
store_published_products_count_start | Integer | No | Store product count (start), used for filtering the lower limit of store total product count range. Can evaluate store scale |
store_published_products_count_end | Integer | No | Store product count (end), used for filtering the upper limit of store total product count range. Used with store_published_products_count_start |
Store Advertising Data Filtering
| Parameter | Type | Required | Description |
|---|---|---|---|
store_active_adset_count_start | Integer | No | Store active ad set count (start), used for filtering the lower limit of store current active ad set count range. Can evaluate store's current promotion effort |
store_active_adset_count_end | Integer | No | Store active ad set count (end), used for filtering the upper limit of store current active ad set count range. Used with store_active_adset_count_start |
store_ad_count_start | Integer | No | Store ad creative count (start), used for filtering the lower limit of store total ad creative count range |
store_ad_count_end | Integer | No | Store ad creative count (end), used for filtering the upper limit of store total ad creative count range. Used with store_ad_count_start |
Keyword Search
| Parameter | Type | Required | Description |
|---|---|---|---|
extend_keywords | Array | No | Keyword search list, used for searching products by keywords. Supports multiple keyword combination searches. Each object in the array contains the following fields:<br>• field - Search field, options: all (all), product_name (product name), product_link (product URL), advertiser_name (advertiser name)<br>• logic_operator - Logical operator, options: and, or<br>• value - Search content |
exclude_keywords | Array | No | Exclude keyword list, used for excluding products containing specific keywords. Same structure as extend_keywords |
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/ppspy/ad-products/search",
"params": {
"e_commerce_platform": ["magento"],
"category_id": ["62739aec38365b2f72048ebd"],
"extend_keywords": [
{
"field": "all",
"value": "Infinitum Grillo",
"logic_operator": "and"
}
],
"order_by": "ad_started_at",
"direction": "desc",
"page": 1,
"ad_started_at_start": 1727712000,
"ad_started_at_end": 1767110399,
"per_page": 20
}
}'
Response Parameters
Response Structure
{
"code": 200,
"message": "success",
"data": {
"current_page": 1,
"data": [],
"last_page": 10,
"per_page": 20,
"total": 200
},
"version": "v1",
"timestamp": null,
"sign": null,
"remaining_credits": 9980,
"consumed_credits": 20,
"success": true,
"fail": false
}
Response Field Descriptions
| Field | Type | Description |
|---|---|---|
code | Integer | Business status code, 200 indicates success |
message | String | Response message, usually "success" when successful |
data | Object | Response data object |
version | string | API version |
timestamp | number | 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 the request was successful |
fail | boolean | Whether the request failed |
Pagination Information Fields
| Field | Type | Description |
|---|---|---|
current_page | Integer | Current page number |
data | Array | Data list, contains array of product information |
last_page | Integer | Last page number, can be used to determine total pages |
per_page | Integer | Page size, number of data items returned per page |
total | Integer | Total data count, total number of products meeting filter criteria |
Product Information Fields
| Field | Type | Description |
|---|---|---|
id | String | Product ID, unique identifier for the product |
name | String | Product name |
price | Double | Product price (original currency) |
price_usd | Double | Product USD price, converted to USD for easy comparison |
currency | String | Currency unit, such as USD, EUR, etc. |
image_url | String | Product main image URL, the primary display image for the product |
images | String Array | Product image link list, contains all product image URLs |
source_product_id | String | E-commerce platform product ID, product identifier on the original e-commerce platform |
source_product_link | String | Product link, product detail page URL on the e-commerce platform |
e_commerce_platform | String | E-commerce platform, name of the e-commerce platform where the product is located |
creation_time | Long | Product creation time, timestamp: seconds |
user_collected | Integer | Whether collected, options:<br>• 1 - Not collected<br>• 2 - Collected |
Product Advertising Data Fields
| Field | Type | Description |
|---|---|---|
ad_status | Integer | Ad status, current ad placement status of the product |
ad_forecast | Integer | Product score, product stage score evaluated by AI |
active_ad_count | Integer | Active ad count, number of ads currently being placed |
ad_count | Integer | Ad count, total number of ads created for the product |
active_adset_count | Integer | Active ad set count, number of ad sets currently being placed |
adset_count | Integer | Total ad set count, total number of ad sets created for the product |
adset_count_24h | Integer | 24-hour ad set count, number of ad sets added in the last 24 hours |
active_days | Integer | Ad days, number of days the product has been continuously advertising |
ad_started_at | Long | Ad start time, timestamp: seconds. Time when the product first started advertising |
ad_ended_at | Long | Ad end time, timestamp: seconds. End time of the last ad placement for the product |
ad_cost | Double | Ad spend, unit: USD. Cumulative advertising investment cost for the product |
ad_audience_reach | Integer | Reach, total number of unique users reached by the ads |
Store Information Fields (store)
When the returned data contains store information, the store object contains the following fields:
| Field | Type | Description |
|---|---|---|
id | String | Store ID, unique identifier for the store |
name | String | Store name |
logo_url | String | Store logo, store logo image URL |
country | String | Store country, country where the store is registered or primarily operates |
source_store_link | String | Store link, store homepage URL on the e-commerce platform |
e_commerce_platform | String | E-commerce platform, name of the e-commerce platform where the store is located |
e_commerce_types | Integer Array | E-commerce types, business type identifiers of the store |
ad_count | Integer | Store creative count, total number of ad creatives created by the store |
adset_count | Integer | Total ad set count, total number of ad sets created by the store |
monthly_sales | Integer | Monthly sales, monthly sales count for the store (estimated value) |
Response Example
{
"code": 200,
"message": "success",
"data": {
"current_page": 1,
"data": [
{
"active_ad_count": 1,
"active_adset_count": 1,
"active_days": 2,
"ad_audience_reach": 368,
"ad_cost": 6.6,
"ad_count": 1,
"ad_ended_at": 1766995200,
"ad_forecast": 1,
"ad_started_at": 1766822400,
"ad_status": 1,
"adset_count": 1,
"adset_count_24h": 0,
"currency": "EUR",
"e_commerce_platform": "magento",
"id": "5b9ac27f7b3d21aecdca5cb00be71baa",
"images": [
"https://fb-cdn.ppspy.com/images/pimg_c1cb26db9e59ba4c70688.png",
"https://fb-cdn.ppspy.com/images/pimg_6ca311198854c6eeeffc9.png",
"https://fb-cdn.ppspy.com/images/pimg_0d9e6a0a2e72f9f291f07.png",
"https://fb-cdn.ppspy.com/images/pimg_c1cb26db9e59ba4c70688.png",
"https://fb-cdn.ppspy.com/images/pimg_6ca311198854c6eeeffc9.png"
],
"image_url": "https://fb-cdn.ppspy.com/images/pimg_c1cb26db9e59ba4c70688.png",
"name": "Infinitum Grillo",
"price": 5.79,
"price_usd": 6.82,
"source_product_id": "c068345331a01d1216591db170f03672",
"source_product_link": "https://www.wijnvoordeel.be/infinitum-grillo?channable=019969736b75004b3230303738324e",
"store": {
"ad_count": 14,
"adset_count": 27,
"e_commerce_platform": "magento",
"id": "2382cd09c06c7d31cdca5cb00be71baa",
"logo_url": "https://fb-cdn.pipiads.com/icon_ad0a30d8c8334ccbf37488a8ce91377b.png",
"name": "wijnvoordeel.be",
"source_store_link": "http://wijnvoordeel.be"
},
"store_id": "2382cd09c06c7d31cdca5cb00be71baa",
"user_collected": 2,
"favorite_time": 0,
"ad_platform": [
"FACEBOOK",
"INSTAGRAM",
"MESSENGER",
"THREADS"
]
}
],
"first_page_url": "http://app-pre.ppspy.com/v1/ad-products/search?direction=desc&page=1&ad_started_at_end=1767110399&ad_started_at_start=1727712000&category_id%5B0%5D=62739aec38365b2f72048ebd&e_commerce_platform%5B0%5D=magento&extend_keywords%5B0%5D%5Bfield%5D=all&extend_keywords%5B0%5D%5Bvalue%5D=Infinitum%20Grillo&extend_keywords%5B0%5D%5Blogic_operator%5D=and&order_by=ad_started_at&per_page=20",
"from": 1,
"is_logged_in": true,
"last_page": 1,
"last_page_url": "http://app-pre.ppspy.com/v1/ad-products/search?direction=desc&page=1&ad_started_at_end=1767110399&ad_started_at_start=1727712000&category_id%5B0%5D=62739aec38365b2f72048ebd&e_commerce_platform%5B0%5D=magento&extend_keywords%5B0%5D%5Bfield%5D=all&extend_keywords%5B0%5D%5Bvalue%5D=Infinitum%20Grillo&extend_keywords%5B0%5D%5Blogic_operator%5D=and&order_by=ad_started_at&per_page=20",
"path": "http://app-pre.ppspy.com/v1/ad-products/search",
"per_page": 20,
"to": 1,
"total": 1
},
"version": "v1",
"timestamp": null,
"sign": null,
"remaining_credits": 9980,
"consumed_credits": 20,
"success": true,
"fail": false
}
Error Code Descriptions
| Error Code | Description |
|---|---|
200 | Success |
400 | Request parameter error, please check parameter format and value range |
401 | Unauthorized, API key is invalid or expired |
403 | Insufficient permissions, insufficient account balance or restricted API access |
404 | API path does not exist |
444 | Too many requests, rate limit triggered |
500 | Internal server error, please try again later |
Notes
- Pagination Limit: It is recommended to set the page data size between 20-100, as excessively large pagination will affect response speed
- Time Format: All time fields use Unix timestamps (second-level), please pay attention to conversion
- Array Parameters: When using array-type filter conditions, results satisfying any value in the array will be returned (OR logic)
- Range Filtering: When using paired start and end parameters, ensure start ≤ end
- Keyword Search: extend_keywords and exclude_keywords can be used in combination, first applying include keyword filtering, then applying exclude keyword filtering
- Sorting Optimization: It is recommended to specify order_by and direction parameters, otherwise default sorting will be used, which may affect result relevance
- Store Information: The store field may be null, indicating that the product currently has no associated store information
- Data Updates: Ad data is updated regularly, it is recommended to re-query periodically to get the latest data