curl --request POST \
--url https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ad_format": 123,
"ad_language": "<string>",
"cookie": "<string>",
"country_code": "US",
"duration": 123,
"industry": "<string>",
"keyword": "<string>",
"like": 123,
"limit": 20,
"objective": 123,
"order_by": "for_you",
"page": 1,
"pattern_label": "<string>",
"period": 180,
"search_id": "<string>"
}
'import requests
url = "https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads"
payload = {
"ad_format": 123,
"ad_language": "<string>",
"cookie": "<string>",
"country_code": "US",
"duration": 123,
"industry": "<string>",
"keyword": "<string>",
"like": 123,
"limit": 20,
"objective": 123,
"order_by": "for_you",
"page": 1,
"pattern_label": "<string>",
"period": 180,
"search_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ad_format: 123,
ad_language: '<string>',
cookie: '<string>',
country_code: 'US',
duration: 123,
industry: '<string>',
keyword: '<string>',
like: 123,
limit: 20,
objective: 123,
order_by: 'for_you',
page: 1,
pattern_label: '<string>',
period: 180,
search_id: '<string>'
})
};
fetch('https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ad_format' => 123,
'ad_language' => '<string>',
'cookie' => '<string>',
'country_code' => 'US',
'duration' => 123,
'industry' => '<string>',
'keyword' => '<string>',
'like' => 123,
'limit' => 20,
'objective' => 123,
'order_by' => 'for_you',
'page' => 1,
'pattern_label' => '<string>',
'period' => 180,
'search_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads"
payload := strings.NewReader("{\n \"ad_format\": 123,\n \"ad_language\": \"<string>\",\n \"cookie\": \"<string>\",\n \"country_code\": \"US\",\n \"duration\": 123,\n \"industry\": \"<string>\",\n \"keyword\": \"<string>\",\n \"like\": 123,\n \"limit\": 20,\n \"objective\": 123,\n \"order_by\": \"for_you\",\n \"page\": 1,\n \"pattern_label\": \"<string>\",\n \"period\": 180,\n \"search_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ad_format\": 123,\n \"ad_language\": \"<string>\",\n \"cookie\": \"<string>\",\n \"country_code\": \"US\",\n \"duration\": 123,\n \"industry\": \"<string>\",\n \"keyword\": \"<string>\",\n \"like\": 123,\n \"limit\": 20,\n \"objective\": 123,\n \"order_by\": \"for_you\",\n \"page\": 1,\n \"pattern_label\": \"<string>\",\n \"period\": 180,\n \"search_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ad_format\": 123,\n \"ad_language\": \"<string>\",\n \"cookie\": \"<string>\",\n \"country_code\": \"US\",\n \"duration\": 123,\n \"industry\": \"<string>\",\n \"keyword\": \"<string>\",\n \"like\": 123,\n \"limit\": 20,\n \"objective\": 123,\n \"order_by\": \"for_you\",\n \"page\": 1,\n \"pattern_label\": \"<string>\",\n \"period\": 180,\n \"search_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"materials": [
{
"ads_info": {
"advertiser_name": "PetToys Inc.",
"landing_page": "https://example.com/cat-toys"
},
"aweme_id": "7213258221116751874",
"create_time": 1680234567,
"desc": "Best interactive cat toys! Keep your cats entertained 🐱",
"id": "7213258221116751874",
"statistics": {
"comment_count": 3421,
"digg_count": 128456,
"share_count": 892
},
"video_info": {
"cover": "https://p16-ad-sg.tiktokcdn.com/img/xxx.jpeg",
"duration": 15
}
}
],
"pagination": {
"has_more": true,
"limit": 20,
"page": 1,
"total": 1523
}
},
"params": {
"industry": "27000000000",
"keyword": "cat toy",
"limit": 20,
"page": 1,
"period": 180
},
"router": "/api/v1/tiktok/ads/search_ads"
}tiktok search_ads
搜索广告
curl --request POST \
--url https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ad_format": 123,
"ad_language": "<string>",
"cookie": "<string>",
"country_code": "US",
"duration": 123,
"industry": "<string>",
"keyword": "<string>",
"like": 123,
"limit": 20,
"objective": 123,
"order_by": "for_you",
"page": 1,
"pattern_label": "<string>",
"period": 180,
"search_id": "<string>"
}
'import requests
url = "https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads"
payload = {
"ad_format": 123,
"ad_language": "<string>",
"cookie": "<string>",
"country_code": "US",
"duration": 123,
"industry": "<string>",
"keyword": "<string>",
"like": 123,
"limit": 20,
"objective": 123,
"order_by": "for_you",
"page": 1,
"pattern_label": "<string>",
"period": 180,
"search_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ad_format: 123,
ad_language: '<string>',
cookie: '<string>',
country_code: 'US',
duration: 123,
industry: '<string>',
keyword: '<string>',
like: 123,
limit: 20,
objective: 123,
order_by: 'for_you',
page: 1,
pattern_label: '<string>',
period: 180,
search_id: '<string>'
})
};
fetch('https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ad_format' => 123,
'ad_language' => '<string>',
'cookie' => '<string>',
'country_code' => 'US',
'duration' => 123,
'industry' => '<string>',
'keyword' => '<string>',
'like' => 123,
'limit' => 20,
'objective' => 123,
'order_by' => 'for_you',
'page' => 1,
'pattern_label' => '<string>',
'period' => 180,
'search_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads"
payload := strings.NewReader("{\n \"ad_format\": 123,\n \"ad_language\": \"<string>\",\n \"cookie\": \"<string>\",\n \"country_code\": \"US\",\n \"duration\": 123,\n \"industry\": \"<string>\",\n \"keyword\": \"<string>\",\n \"like\": 123,\n \"limit\": 20,\n \"objective\": 123,\n \"order_by\": \"for_you\",\n \"page\": 1,\n \"pattern_label\": \"<string>\",\n \"period\": 180,\n \"search_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ad_format\": 123,\n \"ad_language\": \"<string>\",\n \"cookie\": \"<string>\",\n \"country_code\": \"US\",\n \"duration\": 123,\n \"industry\": \"<string>\",\n \"keyword\": \"<string>\",\n \"like\": 123,\n \"limit\": 20,\n \"objective\": 123,\n \"order_by\": \"for_you\",\n \"page\": 1,\n \"pattern_label\": \"<string>\",\n \"period\": 180,\n \"search_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ad_format\": 123,\n \"ad_language\": \"<string>\",\n \"cookie\": \"<string>\",\n \"country_code\": \"US\",\n \"duration\": 123,\n \"industry\": \"<string>\",\n \"keyword\": \"<string>\",\n \"like\": 123,\n \"limit\": 20,\n \"objective\": 123,\n \"order_by\": \"for_you\",\n \"page\": 1,\n \"pattern_label\": \"<string>\",\n \"period\": 180,\n \"search_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"materials": [
{
"ads_info": {
"advertiser_name": "PetToys Inc.",
"landing_page": "https://example.com/cat-toys"
},
"aweme_id": "7213258221116751874",
"create_time": 1680234567,
"desc": "Best interactive cat toys! Keep your cats entertained 🐱",
"id": "7213258221116751874",
"statistics": {
"comment_count": 3421,
"digg_count": 128456,
"share_count": 892
},
"video_info": {
"cover": "https://p16-ad-sg.tiktokcdn.com/img/xxx.jpeg",
"duration": 15
}
}
],
"pagination": {
"has_more": true,
"limit": 20,
"page": 1,
"total": 1523
}
},
"params": {
"industry": "27000000000",
"keyword": "cat toy",
"limit": 20,
"page": 1,
"period": 180
},
"router": "/api/v1/tiktok/ads/search_ads"
}code 为 200 时计费。
示例
curl -X POST "https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' # 请求体结构见下方 schema
请求规范
- 方法与路径: POST /apis/v1/tikhub/tiktok/ads/search_ads
- 可用状态: enabled
- 请求 URL 模板: https://api.aisa.one/apis/v1/tikhub/tiktok/ads/search_ads
- Runtime 事实版本: 85ae03121f63417c9ff9d57a0fd59fdc6386fd71e2dc732a002843e6d8979d87
{
"operationId": "post_tikhub_tiktok_ads_search_ads",
"method": "POST",
"path": "/apis/v1/tikhub/tiktok/ads/search_ads",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"ad_format": {
"description": "Ad format (optional): 1=Spark Ads, 2=Non-Spark Ads",
"title": "Ad Format",
"type": [
"integer",
"null"
]
},
"ad_language": {
"description": "Ad language (optional)",
"title": "Ad Language",
"type": [
"string",
"null"
]
},
"cookie": {
"description": "Custom Cookie string, optional parameter, can be used to fetch more data",
"title": "Cookie",
"type": "string"
},
"country_code": {
"default": "US",
"description": "Country code",
"title": "Country Code",
"type": "string"
},
"duration": {
"description": "Video duration filter value (optional)",
"title": "Duration",
"type": [
"integer",
"null"
]
},
"industry": {
"description": "Industry ID list, multiple IDs separated by commas. Full industry ID list: https://github.com/TikHub/TikTok-Ads-Industry-Code",
"title": "Industry",
"type": "string"
},
"keyword": {
"description": "Search keyword, optional, returns all ads if empty",
"title": "Keyword",
"type": "string"
},
"like": {
"description": "Performance rank (optional; 1=top 1-20%, 2=top 21-40%, 3=top 41-60%, 4=top 61-80%, 5=top 81-100%)",
"title": "Like",
"type": [
"integer",
"null"
]
},
"limit": {
"default": 20,
"description": "Items per page, default 20, max 50",
"maximum": 50,
"title": "Limit",
"type": "integer"
},
"objective": {
"description": "Ad objective (optional): 1=Traffic, 2=App install, 3=Conversion, 4=Video views, 5=Reach, 6=Lead generation, 7=Product sales",
"title": "Objective",
"type": [
"integer",
"null"
]
},
"order_by": {
"default": "for_you",
"description": "Sort method, \"for_you\"=Recommended, \"likes\"=Sort by likes",
"title": "Order By",
"type": "string"
},
"page": {
"default": 1,
"description": "Page number, default 1",
"title": "Page",
"type": "integer"
},
"pattern_label": {
"description": "Creative pattern label (optional)",
"title": "Pattern Label",
"type": [
"string",
"null"
]
},
"period": {
"default": 180,
"description": "Time period in days, e.g., 7, 30, 120, 180 days",
"title": "Period",
"type": "integer"
},
"search_id": {
"description": "Search ID (optional)",
"title": "Search Id",
"type": "string"
}
},
"title": "Body_search_ads_api_v1_tiktok_ads_search_ads_post",
"type": "object"
}
}
}
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "fixed_success",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.001,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
费用与请求规则
公开参考价格:每次成功请求 $0.001 USD。 最终费用以账户适用价格及实际结算为准。 公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。- 默认请求参考估价(USD): 0.001
- 计费依据: fixed_success
- 公开参考倍率: 1.0
- 结算证据来源: request_snapshot
授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
请求体
Ad format (optional): 1=Spark Ads, 2=Non-Spark Ads
Ad language (optional)
Custom Cookie string, optional parameter, can be used to fetch more data
Country code
Video duration filter value (optional)
Industry ID list, multiple IDs separated by commas. Full industry ID list: https://github.com/TikHub/TikTok-Ads-Industry-Code
Search keyword, optional, returns all ads if empty
Performance rank (optional; 1=top 1-20%, 2=top 21-40%, 3=top 41-60%, 4=top 61-80%, 5=top 81-100%)
Items per page, default 20, max 50
x <= 50Ad objective (optional): 1=Traffic, 2=App install, 3=Conversion, 4=Video views, 5=Reach, 6=Lead generation, 7=Product sales
Sort method, "for_you"=Recommended, "likes"=Sort by likes
Page number, default 1
Creative pattern label (optional)
Time period in days, e.g., 7, 30, 120, 180 days
Search ID (optional)
响应
Successful Response
Return Description
materials: List of ad materialsid: Ad material IDaweme_id: Ad video IDdesc: Ad descriptioncreate_time: Creation timevideo_info: Video informationcover: Cover image URLduration: Duration in seconds
statistics: Statisticsdigg_count: Number of likescomment_count: Number of commentsshare_count: Number of shares
ads_info: Ad informationadvertiser_name: Advertiser namelanding_page: Landing page URL
pagination: Pagination infopage: Current pagelimit: Items per pagetotal: Total counthas_more: Whether there are more items
The media-type example is an illustrative response from the official documentation, not a live response. Its router and params metadata use upstream naming.
Cache message (EN-US)
Cache message (ZH-CN)
The URL to access the cached result
HTTP 状态码
Endpoint-specific response payload. The official shared model does not declare a fixed type or field set. Use the operation's documented return fields or response example; an operation-specific schema, when present, describes the documented fields. Undocumented fields must be read from the actual response rather than assumed.
Link to the API Swagger documentation for this endpoint
Response message (EN-US)
Response message (ZH-CN)
The parameters used in the request
Unique request identifier
The endpoint that generated this response
Support message
The time the response was generated
The timestamp the response was generated
The timezone of the response time