Hunter Ad Library cho nhà phát triển
REST API, MCP server cho công cụ AI, OAuth và webhook. Dữ liệu: quảng cáo Facebook đang chạy của các thương hiệu lớn tại Việt Nam, chấm điểm và giải mã bằng AI, cập nhật mỗi tuần.
Bắt đầu trong 2 phút
- Tạo tài khoản và xác minh email (tặng 30 credit dùng thử).
- Vào API & MCP trong ứng dụng, bấm Tạo khoá mới. Khoá dạng
adl_…chỉ hiện một lần. - Gửi khoá qua header
Authorization: Bearer adl_…. Mỗi lượt gọi trừ credit trong ví, như khi dùng trên web.
curl -H "Authorization: Bearer adl_KHOA_CUA_BAN" "https://adlib.hunteragency.vn/v1/ads?q=kem%20chong%20nang&preset=long&limit=10"
MCP cho công cụ AI
Địa chỉ https://adlib.hunteragency.vn/mcp, chuẩn Streamable HTTP (không giữ phiên). Hỗ trợ OAuth: công cụ AI tự mở trang đăng nhập Hunter Ad Library, bạn bấm Cho phép là xong, không cần dán khoá.
claude.ai, Claude Desktop
Vào Cài đặt › Connectors › Add custom connector, dán URL https://adlib.hunteragency.vn/mcp, đăng nhập và cho phép khi được hỏi. Kết nối hiện trong danh sách khoá ở mục API & MCP, thu hồi được bất cứ lúc nào.
ChatGPT
- Trên chatgpt.com mở Plugin ở thanh bên, bấm Thêm › Thêm server MCP tùy chỉnh. Cần ChatGPT Plus trở lên. Bản cũ không có nút này: vào Cài đặt › Ứng dụng › Nâng cao, bật Chế độ nhà phát triển rồi bấm Tạo.
- Điền tên Hunter Ad Library, URL server là
https://adlib.hunteragency.vn/mcp, xác thực OAuth, đánh dấu Tôi hiểu và muốn tiếp tục rồi bấm Tạo, sau đó Kết nối Hunter Ad Library. - Đăng nhập Hunter Ad Library và bấm Cho phép.
- Trong khung chat gõ @Hunter Ad Library (hoặc bấm +) rồi hỏi. Deep Research cũng dùng được (qua công cụ
searchvàfetch).
Tên mục có thể khác chút tuỳ bản ChatGPT. Gói Business, Enterprise cần quản trị viên cho phép ứng dụng tuỳ chỉnh.
Claude Code
claude mcp add --transport http adlib https://adlib.hunteragency.vn/mcp --header "Authorization: Bearer adl_KHOA_CUA_BAN"
Cursor, Windsurf, VS Code
{
"mcpServers": {
"adlib": {
"url": "https://adlib.hunteragency.vn/mcp",
"headers": {
"Authorization": "Bearer adl_KHOA_CUA_BAN"
}
}
}
}
OpenAI API (Responses), Agents SDK
Gắn kho vào ứng dụng, chatbot của bạn chạy bằng model OpenAI: khai báo công cụ loại mcp, gửi khoá adlib trong headers.
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"tools": [
{
"type": "mcp",
"server_label": "adlib",
"server_url": "https://adlib.hunteragency.vn/mcp",
"headers": {
"Authorization": "Bearer adl_KHOA_CUA_BAN"
},
"require_approval": "never"
}
],
"input": "Ngành mỹ phẩm đang thắng với công thức quảng cáo nào?"
}'
Công cụ không đặt được header và không hỗ trợ OAuth: dùng https://adlib.hunteragency.vn/mcp/adl_KHOA_CUA_BAN (ai có link đều dùng được credit của bạn, chỉ dán vào công cụ của chính bạn). n8n, Make, Zapier: gọi thẳng REST bên dưới.
REST API
Kết quả dạng { "ok": true, "data": …, "credits_charged": 1, "balance": 49 }. Mô tả máy đọc được: https://adlib.hunteragency.vn/v1. Ảnh và video trả về bằng link có chữ ký, mở được không cần đăng nhập.
| Endpoint | Công cụ | Tham số |
|---|---|---|
GET /v1/me | get_account | |
GET /v1/industries | list_industries | |
GET /v1/ads | search_ads | q, industry, brand, preset, sort, include_inactive, media, channel, min_days, hook, offer, hook_group, angle_group, concept_group, visual_group, badge, page, limit |
GET /v1/ads/:ad_id | get_ad | |
POST /v1/ads/:ad_id/decode | decode_ad | |
POST /v1/ads/:ad_id/creative | analyze_creative | GET cùng đường dẫn để lấy kết quả |
GET /v1/brands | search_brands | q, industry |
GET /v1/brands/:id | get_brand | |
GET /v1/formulas | winning_formulas | industry, days, level |
GET /v1/trends | market_trends | industry |
Công cụ và giá mỗi lượt
1 credit = 1.000đ. Giá như nhau ở REST và MCP. Lỗi phía hệ thống thì credit tự hoàn. Tài khoản miễn phí nhận dữ liệu như trên web (ẩn điểm và nhãn AI chi tiết, không dùng công cụ AI).
| Công cụ | Làm gì | Credit |
|---|---|---|
Tài khoản và số dưget_account | Xem gói (free/paid/full), số dư credit, giá từng công cụ và giới hạn lượt gọi. Gọi đầu tiên để biết mình dùng được gì. | 0 |
Danh sách ngànhlist_industries | Các ngành trong kho (id, tên, nhóm, số brand, số quảng cáo, ngành hàng con). Dùng id ngành để lọc ở các công cụ khác. | 0 |
Tìm quảng cáosearch_ads | Tìm quảng cáo Facebook của các thương hiệu lớn tại Việt Nam trong kho. Lọc theo từ khoá (nội dung, bỏ dấu cũng được), ngành, brand, kênh chốt đơn, định dạng, nhãn AI (hook, ưu đãi, nhóm góc tiếp cận...). Mặc định chỉ quảng cáo đang chạy, xếp theo điểm. | 1 |
Chi tiết quảng cáoget_ad | Chi tiết 1 quảng cáo: nội dung đầy đủ, nhãn AI giải mã (hook, góc tiếp cận, ý tưởng, thể hiện hình ảnh, động lực, bằng chứng, lý do thắng), điểm thành phần, lời thoại video, lịch sử hạng, quảng cáo brand khác dùng cùng hình. | 1 |
Tìm thương hiệusearch_brands | Tìm thương hiệu trong kho theo tên hoặc ngành: fanpage, lượt thích, số quảng cáo đang chạy ở VN, tổng quảng cáo đã lưu, ngày quảng cáo mới nhất. | 1 |
Hồ sơ thương hiệuget_brand | Hồ sơ 1 thương hiệu: số quảng cáo đang chạy theo ngày, kênh chốt đơn, định dạng, số quảng cáo chạy lâu, mới lên tuần này và các quảng cáo mới trong tuần. | 1 |
Công thức thắngwinning_formulas | Công thức quảng cáo thắng của 1 ngành (hoặc toàn kho): tổ hợp góc tiếp cận + ý tưởng + hook lặp lại nhiều ở quảng cáo thắng, số brand cùng thắng, ví dụ ad_id; lớp nào hay xuất hiện ở quảng cáo thắng (lift); công thức nhiều brand cùng hội tụ; khoảng trắng ngành này ít làm. | 3 |
Xu hướng thị trườngmarket_trends | Xu hướng quảng cáo: số quảng cáo mới theo tuần từng ngành, tỷ trọng hook / ưu đãi / định dạng / kênh chốt đơn tăng giảm, chiến dịch và sự kiện đang nổi, brand tăng tốc. | 3 |
AI giải mã quảng cáodecode_ad | Cho AI giải mã 1 quảng cáo chưa có nhãn (hook, góc tiếp cận, ý tưởng, ưu đãi, lý do thắng). Quảng cáo đã giải mã rồi thì trả luôn, không trừ credit. Chỉ thành viên trả phí. | 1 |
AI xem creativeanalyze_creative | AI xem trực tiếp video (≤ 3 phút) hoặc ảnh quảng cáo: cảnh mở đầu, nhịp cắt, chữ trên hình, nhân vật, cách thể hiện sản phẩm. Chạy nền khoảng 15–40 giây: lần gọi đầu trả status=running, gọi lại với cùng ad_id để lấy kết quả (không trừ thêm). Chỉ thành viên trả phí. | 4 ảnh / 10 video |
Tìm nhanhsearch | Tìm nhanh thương hiệu và quảng cáo đang chạy theo từ khoá (chuẩn search của ChatGPT). Trả danh sách id, mở chi tiết bằng fetch. Cần lọc theo ngành, kênh, nhãn AI thì dùng search_ads. | 1 |
Mở chi tiếtfetch | Mở đầy đủ 1 kết quả của search theo id (ad:<mã quảng cáo> hoặc brand:<id brand>), chuẩn fetch của ChatGPT. | 1 |
Mỗi lần tìm trả tối đa 50 quảng cáo, mỗi bộ lọc xem tối đa 20 trang. API chỉ đọc dữ liệu đã có trong kho.
Gói API
Hạn mức theo gói của tài khoản. Gói API Pro, API Business có khi nạp gói credit tương ứng, kéo dài theo số ngày của gói. Xem bảng giá.
| Gói | Lượt/ngày | Lượt/phút | Khoá | Webhook |
|---|---|---|---|---|
| Miễn phí tài khoản chưa nạp | 200 | 20 | 2 | 0 |
| Thành viên đang là thành viên trả phí | 2.000 | 60 | 5 | 1 |
| API Pro Agency (1.999.000đ, 365 ngày) | 10.000 | 120 | 10 | 5 |
| API Business Business (4.999.000đ, 365 ngày) | 50.000 | 300 | 20 | 20 |
Webhook quảng cáo mới
Tạo webhook ở mục API & MCP. Mỗi giờ, quảng cáo mới của các brand bạn đang theo dõi được gửi POST tới URL https của bạn (tối đa 100 quảng cáo mỗi lần, phần còn lại gửi lượt sau). Không tốn credit. Trả mã 2xx trong 10 giây là thành công; lỗi thì gửi lại giờ sau, lỗi 20 lần liên tiếp thì webhook tự tắt.
{
"event": "ads.new",
"delivery_id": "8f0c…",
"sent_at": "2026-11-01T08:20:00.000Z",
"data": {
"count": 1,
"brands": [
{
"brand_id": 186,
"brand": "Cỏ Mềm",
"ads": [
{
"ad_id": "1327124515525837",
"start_date": "2026-10-31",
"media_type": "video",
"title": "…",
"body": "…",
"thumb": "https://adlib.hunteragency.vn/v1/m/…",
"library_url": "https://www.facebook.com/ads/library/?id=1327124515525837"
}
]
}
]
}
}
Header X-Adlib-Event (ads.new hoặc ping khi bấm Gửi thử) và X-Adlib-Signature: t=<giây>,v1=<HMAC-SHA256> ký trên chuỗi t + "." + body bằng secret whsec_… của webhook.
// Node.js: kiểm tra chữ ký webhook
const crypto = require("crypto");
function verify(rawBody, header, secret) {
const { t, v1 } = Object.fromEntries(header.split(",").map((p) => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(t)) > 600) return false; // chống gửi lại
const mac = crypto.createHmac("sha256", secret).update(t + "." + rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(mac), Buffer.from(v1));
}
Mã lỗi
| Mã | Ý nghĩa |
|---|---|
401 | Thiếu khoá, khoá sai hoặc đã thu hồi |
402 | Không đủ credit, hoặc tính năng cần thành viên trả phí |
404 | Không có quảng cáo, brand hoặc endpoint |
429 | Quá lượt mỗi phút (xem header Retry-After) hoặc hết lượt trong ngày |
502 | AI hoặc nguồn dữ liệu lỗi tạm thời, credit đã hoàn |
MCP trả lỗi nghiệp vụ trong kết quả công cụ (isError: true) để công cụ AI đọc được và báo lại cho bạn.
