SERP API
Tìm từ khoá trên Google bằng trình duyệt thật và nhận vị trí của domain cùng toàn bộ kết quả tự nhiên, dạng JSON. Mỗi lần tìm tốn 1 credit một trang kết quả (10 kết quả); lần tìm lỗi hoặc đã huỷ được hoàn credit.
Xác thực
Tạo key trong ứng dụng › API (gói có SERP API) và gửi trong header của mọi lệnh gọi:
Authorization: Bearer sv_…
Địa chỉ gốc: https://serpy.datlab.dev. Nội dung gửi và nhận là JSON (UTF-8).
MCP cho AI agent
Cùng key, các lệnh gọi này có sẵn cho Claude Code, Cursor, Codex, Hermes Agent… qua máy chủ MCP https://serpy.datlab.dev/mcp: cách cài
trong ứng dụng › MCP, hướng dẫn cho agent ở /mcp.txt. Toàn bộ API dạng OpenAPI 3.1: /v1/openapi.json.
Tìm kiếm
POST /v1/search
Tìm một từ khoá trên Google, ưu tiên lên đầu hàng đợi (như Tra ngay). Với wait, chờ kết quả tới bấy nhiêu giây; xong kịp thì trả về kết quả (200), không thì trả về id (202) để hỏi lại. Mỗi lần tìm tính một lượt.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
keyword* | string | Từ khoá cần tìm |
domain | string | Domain hoặc URL cần biết vị trí, vd. shop.vn hoặc shop.vn/blog |
subdomains | boolean | Tính cả subdomain (blog.shop.vn) |
country | string | Quốc gia của Google (gl), một trong /v1/locales; không có: vn |
language | string | Ngôn ngữ (hl), cùng cặp với country trong /v1/locales; không có: vi |
pages | integer | Số trang kết quả đọc, 1 tới giới hạn của gói (mặc định 1) |
wait | integer | Giây chờ kết quả, 0 tới 120 (mặc định 0: trả id ngay) |
curl -X POST https://serpy.datlab.dev/v1/search \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"keyword":"giày chạy bộ","domain":"shop.vn","country":"vn","language":"vi","wait":60}'POST /v1/searches
Nhiều từ khoá (tới 500) cùng domain, quốc gia, ngôn ngữ và số trang, như ô Tìm nhiều trong ứng dụng: vào cuối hàng đợi thành một lần thêm (batch), hoặc với priority lên đầu. Với wait (tới 120 giây), chờ tới khi xong cả hoặc hết giờ. Lượt tìm được hỏi trước: không đủ thì không thêm từ khoá nào.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
keywords* | string[] | Các từ khoá (hoặc một chuỗi, mỗi dòng một từ khoá) |
domain | string | Domain hoặc URL cần biết vị trí, vd. shop.vn hoặc shop.vn/blog |
subdomains | boolean | Tính cả subdomain (blog.shop.vn) |
country | string | Quốc gia của Google (gl), một trong /v1/locales; không có: vn |
language | string | Ngôn ngữ (hl), cùng cặp với country trong /v1/locales; không có: vi |
pages | integer | Số trang kết quả đọc, 1 tới giới hạn của gói (mặc định 1) |
priority | boolean | Ưu tiên lên đầu hàng đợi |
wait | integer | Giây chờ kết quả, 0 tới 120 (mặc định 0: trả id ngay) |
curl -X POST https://serpy.datlab.dev/v1/searches \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"keywords":["giày chạy bộ","giày đá bóng"],"domain":"shop.vn","priority":true,"wait":60}'GET /v1/search/{id}
Trạng thái của một lần tìm (queued, running, done, failed, cancelled), lúc gửi, lúc bắt đầu tìm, lúc xong (mili giây Unix) và kết quả khi xong.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã lần tìm |
curl https://serpy.datlab.dev/v1/search/9183 \ -H "Authorization: Bearer sv_…"
GET /v1/searches
Các lần tìm của bạn: đang chờ và đang tìm trước (theo thứ tự hàng đợi, ahead: số lần tìm phía trước), rồi những lần vừa xong. batch: một lần thêm, theo thứ tự đã nhập, lọc và sắp như một dự án.Danh sách: limit, offset; trang sau ở header X-Next-Offset.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
batch | integer | Một lần thêm (batch) của các lần tìm |
active | boolean | Chỉ những lần đang chờ hoặc đang tìm |
order | string | input (mặc định: thứ tự nhập), rank, change, best, keyword, last; một dấu - phía trước để đảo |
top | string | 1, 3, 5, 10, 30, 100: hạng từ 1 tới số đó; na: không thấy |
band | string | Một nhóm hạng: top3, p4_5, p6_10, p11_30, p31, none, unchecked |
found | string | yes: domain có trong kết quả; no: không có |
state | string | done, waiting, failed: trạng thái lần kiểm tra gần nhất |
move | string | up, down, same: so với lần trước |
q | string | Chữ trong từ khoá hoặc URL |
limit | integer | Tối đa bấy nhiêu mục (mặc định 100, tới 500) |
offset | integer | Bỏ qua bấy nhiêu mục đầu: trang sau (X-Next-Offset) |
curl "https://serpy.datlab.dev/v1/searches?active=1" \ -H "Authorization: Bearer sv_…"
POST /v1/searches/cancel
Huỷ những lần tìm còn chờ (lần đang tìm thì tìm xong): một (id), một lần thêm (batch) hoặc tất cả (all). Credit của lần đã huỷ được hoàn lại.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id | integer | Một lần tìm |
batch | integer | Một lần thêm (batch) của các lần tìm |
all | boolean | Mọi lần tìm đang chờ |
curl -X POST https://serpy.datlab.dev/v1/searches/cancel \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"batch":77}'POST /v1/searches/promote
Đưa các lần tìm đang chờ lên đầu hàng đợi
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id | integer | Một lần tìm |
batch | integer | Một lần thêm (batch) của các lần tìm |
curl -X POST https://serpy.datlab.dev/v1/searches/promote \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"batch":77}'POST /v1/track
Như nút Kiểm tra trong ứng dụng: các từ khoá vào dự án của domain mình (dự án tạo mới nếu chưa có, từ khoá đã có không thêm lại) và được kiểm tra ngay. Không có domain nào thì chỉ tìm các từ khoá, ưu tiên lên đầu hàng đợi.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
items* | object[] | Các từ khoá: [{ "keyword": "…", "domain": "…" }], domain riêng từng từ khoá (không bắt buộc) |
domain | string | Domain chung cho mọi từ khoá không có domain riêng |
subdomains | boolean | Tính cả subdomain (blog.shop.vn) |
country | string | Quốc gia của Google (gl), một trong /v1/locales; không có: vn |
language | string | Ngôn ngữ (hl), cùng cặp với country trong /v1/locales; không có: vi |
pages | integer | Số trang kết quả đọc, 1 tới giới hạn của gói (mặc định 1) |
curl -X POST https://serpy.datlab.dev/v1/track \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"domain":"shop.vn","items":[{"keyword":"giày chạy bộ"},{"keyword":"giày đá bóng"}]}'Từ khoá và lần kiểm tra
GET /v1/keywords
Các từ khoá bạn đã tìm, mới nhất trước: vị trí gần nhất, trước đó, tốt nhất, xu hướng 12 lần gần nhất.Danh sách: limit, offset; trang sau ở header X-Next-Offset.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
query | string | Lọc theo từ khoá hoặc domain |
limit | integer | Tối đa bấy nhiêu mục (mặc định 100, tới 500) |
offset | integer | Bỏ qua bấy nhiêu mục đầu: trang sau (X-Next-Offset) |
curl "https://serpy.datlab.dev/v1/keywords?query=giày" \ -H "Authorization: Bearer sv_…"
GET /v1/keywords/{id}
Một từ khoá và lần kiểm tra gần nhất với toàn bộ kết quả
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã từ khoá |
curl https://serpy.datlab.dev/v1/keywords/12 \ -H "Authorization: Bearer sv_…"
GET /v1/keywords/{id}/history
Các lần kiểm tra của một từ khoá, mới nhất trước: vị trí theo thời gian; full=1 kèm toàn bộ kết quả.Danh sách: limit, offset; trang sau ở header X-Next-Offset.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã từ khoá |
full | boolean | Kèm toàn bộ kết quả trên Google |
limit | integer | Tối đa (mặc định 50, tới 500) |
offset | integer | Bỏ qua bấy nhiêu mục đầu: trang sau (X-Next-Offset) |
curl "https://serpy.datlab.dev/v1/keywords/12/history?limit=10" \ -H "Authorization: Bearer sv_…"
GET /v1/checks
Mọi lần kiểm tra của bạn, mới nhất trước, lọc theo từ khoá, domain, quốc gia, ngôn ngữ, hoặc competitor: chỉ những lần có domain đó trong kết quả.Danh sách: limit, offset; trang sau ở header X-Next-Offset.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
keyword | string | Đúng từ khoá này |
domain | string | Domain hoặc URL cần biết vị trí, vd. shop.vn hoặc shop.vn/blog |
country | string | Quốc gia của Google (gl), một trong /v1/locales; không có: vn |
language | string | Ngôn ngữ (hl), cùng cặp với country trong /v1/locales; không có: vi |
competitor | string | Chỉ những lần có domain này trong kết quả |
full | boolean | Kèm toàn bộ kết quả trên Google |
limit | integer | Tối đa bấy nhiêu mục (mặc định 100, tới 500) |
offset | integer | Bỏ qua bấy nhiêu mục đầu: trang sau (X-Next-Offset) |
curl "https://serpy.datlab.dev/v1/checks?keyword=giày chạy bộ&competitor=rival.vn" \ -H "Authorization: Bearer sv_…"
GET /v1/checks/{id}
Một lần kiểm tra với toàn bộ kết quả trên Google
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã lần kiểm tra |
curl https://serpy.datlab.dev/v1/checks/341 \ -H "Authorization: Bearer sv_…"
Dự án
GET /v1/projects
Các dự án và tóm tắt: số từ khoá trong top 3/10/30, vị trí trung bình, lên/xuống, lần kiểm tra gần nhất, lần kiểm tra đang chạy (run) và lần tự kiểm tra tới (next_run) khi có lịch.Danh sách: limit, offset; trang sau ở header X-Next-Offset.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
limit | integer | Tối đa bấy nhiêu mục (mặc định 100, tới 500) |
offset | integer | Bỏ qua bấy nhiêu mục đầu: trang sau (X-Next-Offset) |
curl https://serpy.datlab.dev/v1/projects \ -H "Authorization: Bearer sv_…"
POST /v1/projects
Tạo dự án, có thể kèm từ khoá và lịch kiểm tra
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
domain* | string | Domain hoặc URL cần biết vị trí, vd. shop.vn hoặc shop.vn/blog |
title | string | Tên dự án (không có: domain) |
subdomains | boolean | Tính cả subdomain (blog.shop.vn) |
country | string | Quốc gia của Google (gl), một trong /v1/locales; không có: vn |
language | string | Ngôn ngữ (hl), cùng cặp với country trong /v1/locales; không có: vi |
pages | integer | Số trang đọc mỗi lần tìm (mặc định 3, tới giới hạn của gói) |
schedule | string | Lịch tự kiểm tra: off (tắt), daily (hằng ngày), weekly (một ngày mỗi tuần, days một ngày; không có: thứ Hai), days (các ngày trong days) |
days | integer[] | Các ngày tự kiểm tra, 1 (thứ Hai) tới 7 (Chủ nhật): một ngày với weekly, một hay nhiều với days (bắt buộc khi đổi sang days) |
hour | integer | Giờ tự kiểm tra, 0 tới 23 (theo múi giờ của bạn, Cài đặt) |
minute | integer | Phút tự kiểm tra, 0 tới 59; không gửi khi đặt lịch hay đổi giờ: serpvn chọn phút trong giờ đó lúc ít dự án tự kiểm tra |
notify_done | boolean | Báo mỗi khi kiểm tra xong dự án (chuông): true giữ các kênh đã chọn, hoặc chỉ email khi chưa có; false tắt hết |
notify_channels | string[] | Báo khi kiểm tra xong qua những kênh nào: email, telegram, zalo ([] tắt); telegram và zalo phải thiết lập trước trong Cài đặt |
keywords | string[] | Các từ khoá (hoặc một chuỗi, mỗi dòng một từ khoá) |
curl -X POST https://serpy.datlab.dev/v1/projects \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"domain":"shop.vn","schedule":"daily","hour":8,"keywords":["giày chạy bộ","giày đá bóng"]}'GET /v1/projects/{id}
Một dự án và từng từ khoá: vị trí, trước đó, tốt nhất, URL, xu hướng; mặc định theo thứ tự đã nhập. counts: mỗi lựa chọn của một bộ lọc cho bao nhiêu từ khoá, trong những từ khoá các bộ lọc khác để lại (all của nhóm: cả nhóm; all ngoài cùng: mọi từ khoá); run là lần kiểm tra đang chạy (đã tìm, còn lại, từ khoá đang tìm, eta).Danh sách: limit, offset; trang sau ở header X-Next-Offset.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
order | string | input (mặc định: thứ tự nhập), rank, change, best, keyword, last; một dấu - phía trước để đảo |
top | string | 1, 3, 5, 10, 30, 100: hạng từ 1 tới số đó; na: không thấy |
band | string | Một nhóm hạng: top3, p4_5, p6_10, p11_30, p31, none, unchecked |
found | string | yes: domain có trong kết quả; no: không có |
state | string | done, waiting, failed: trạng thái lần kiểm tra gần nhất |
move | string | up, down, same: so với lần trước |
q | string | Chữ trong từ khoá hoặc URL |
limit | integer | Tối đa bấy nhiêu mục (mặc định 100, tới 500) |
offset | integer | Bỏ qua bấy nhiêu mục đầu: trang sau (X-Next-Offset) |
curl "https://serpy.datlab.dev/v1/projects/3?top=10&order=rank" \ -H "Authorization: Bearer sv_…"
PATCH /v1/projects/{id}
Đổi những gì gửi kèm: tên, domain, quốc gia, ngôn ngữ, số trang, lịch tự kiểm tra (schedule, days, hour, minute: theo múi giờ của bạn), báo khi kiểm tra xong (notify_channels: email, telegram, zalo). Lịch đặt lại tính từ lúc này; next_run là lần tự kiểm tra tới (mili giây).
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
title | string | Tên dự án (không có: domain) |
domain | string | Domain hoặc URL cần biết vị trí, vd. shop.vn hoặc shop.vn/blog |
subdomains | boolean | Tính cả subdomain (blog.shop.vn) |
country | string | Quốc gia của Google (gl), một trong /v1/locales; không có: vn |
language | string | Ngôn ngữ (hl), cùng cặp với country trong /v1/locales; không có: vi |
pages | integer | Số trang kết quả đọc, 1 tới giới hạn của gói (mặc định 1) |
schedule | string | Lịch tự kiểm tra: off (tắt), daily (hằng ngày), weekly (một ngày mỗi tuần, days một ngày; không có: thứ Hai), days (các ngày trong days) |
days | integer[] | Các ngày tự kiểm tra, 1 (thứ Hai) tới 7 (Chủ nhật): một ngày với weekly, một hay nhiều với days (bắt buộc khi đổi sang days) |
hour | integer | Giờ tự kiểm tra, 0 tới 23 (theo múi giờ của bạn, Cài đặt) |
minute | integer | Phút tự kiểm tra, 0 tới 59; không gửi khi đặt lịch hay đổi giờ: serpvn chọn phút trong giờ đó lúc ít dự án tự kiểm tra |
notify_done | boolean | Báo mỗi khi kiểm tra xong dự án (chuông): true giữ các kênh đã chọn, hoặc chỉ email khi chưa có; false tắt hết |
notify_channels | string[] | Báo khi kiểm tra xong qua những kênh nào: email, telegram, zalo ([] tắt); telegram và zalo phải thiết lập trước trong Cài đặt |
curl -X PATCH https://serpy.datlab.dev/v1/projects/3 \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"schedule":"days","days":[1,4],"hour":8,"minute":0}'DELETE /v1/projects/{id}
Xoá dự án: các lần tìm đang chờ của nó được để riêng; trong undo mili giây có thể khôi phục (restore), sau đó xoá hẳn (lịch sử từ khoá vẫn giữ).
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
curl -X DELETE https://serpy.datlab.dev/v1/projects/3 \ -H "Authorization: Bearer sv_…"
POST /v1/projects/{id}/restore
Khôi phục dự án vừa xoá
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
curl -X POST https://serpy.datlab.dev/v1/projects/3/restore \ -H "Authorization: Bearer sv_…"
POST /v1/projects/{id}/keywords
Thêm từ khoá vào dự án (có thể ở quốc gia, ngôn ngữ riêng)
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
keywords* | string[] | Các từ khoá (hoặc một chuỗi, mỗi dòng một từ khoá) |
country | string | Quốc gia riêng cho các từ khoá này (không có: của dự án) |
language | string | Ngôn ngữ riêng (không có: của dự án) |
curl -X POST https://serpy.datlab.dev/v1/projects/3/keywords \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"keywords":["dép quai hậu"]}'POST /v1/projects/{id}/keywords/remove
Bỏ từ khoá khỏi dự án
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
keywords* | string[] | Các từ khoá (hoặc một chuỗi, mỗi dòng một từ khoá) |
curl -X POST https://serpy.datlab.dev/v1/projects/3/keywords/remove \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"keywords":["dép quai hậu"]}'POST /v1/projects/{id}/check
Mọi từ khoá của dự án vào hàng đợi thành một lần kiểm tra (mỗi từ khoá tốn số trang của dự án, tính bằng credit; không đủ credit thì không bắt đầu). Theo dõi bằng GET /v1/projects/{id} (run); đang có lần kiểm tra thì không bắt đầu lần nữa.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
curl -X POST https://serpy.datlab.dev/v1/projects/3/check \ -H "Authorization: Bearer sv_…"
POST /v1/projects/{id}/recheck
Kiểm tra lại một số từ khoá, hoặc những từ khoá lỗi
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
keywords | string[] | Các từ khoá (hoặc một chuỗi, mỗi dòng một từ khoá) |
failed | boolean | Những từ khoá lỗi trong lần kiểm tra gần nhất |
curl -X POST https://serpy.datlab.dev/v1/projects/3/recheck \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"failed":true}'POST /v1/projects/{id}/stop
Dừng ngay lần kiểm tra đang chạy: các từ khoá chưa tìm được để riêng (run.stopped), kết quả đã có vẫn giữ; từ khoá đang tìm dở tìm xong rồi dừng. Lượt chưa tìm không bị tính.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
curl -X POST https://serpy.datlab.dev/v1/projects/3/stop \ -H "Authorization: Bearer sv_…"
POST /v1/projects/{id}/resume
Tiếp tục lần kiểm tra đã dừng: các từ khoá đã dừng chờ tìm lại, trong cùng lần kiểm tra (tính credit lại).
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
curl -X POST https://serpy.datlab.dev/v1/projects/3/resume \ -H "Authorization: Bearer sv_…"
GET /v1/projects/{id}/days
Dự án theo từng ngày: top 3/10/30, vị trí trung bình
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
days | integer | Bấy nhiêu ngày gần nhất (mặc định 90, tới 366) |
curl "https://serpy.datlab.dev/v1/projects/3/days?days=30" \ -H "Authorization: Bearer sv_…"
Nhập và xuất tệp
POST /v1/import
Thân yêu cầu là tệp (CSV UTF-8 hoặc .xlsx, tối đa 2 MB, 2.000 dòng): cột từ khoá và có thể cột domain, theo tên cột hoặc hai cột đầu. Trả về các dòng đọc được để gửi tiếp vào /v1/track; không thay đổi gì.
curl -X POST https://serpy.datlab.dev/v1/import \ -H "Authorization: Bearer sv_…" \ -H "Content-Type: text/csv" \ --data-binary @keywords.csv
POST /v1/projects/{id}/import
Nhập từ khoá từ tệp CSV, Excel hoặc .txt vào dự án
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
curl -X POST https://serpy.datlab.dev/v1/projects/3/import \ -H "Authorization: Bearer sv_…" \ -H "Content-Type: text/csv" \ --data-binary @keywords.txt
GET /v1/projects/{id}/export.{format}
Xuất từ khoá của dự án: CSV, Excel hoặc .txt
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã dự án |
format* | string | Định dạng tệp: csv, xlsx, txt |
order | string | input (mặc định: thứ tự nhập), rank, change, best, keyword, last; một dấu - phía trước để đảo |
top | string | 1, 3, 5, 10, 30, 100: hạng từ 1 tới số đó; na: không thấy |
band | string | Một nhóm hạng: top3, p4_5, p6_10, p11_30, p31, none, unchecked |
found | string | yes: domain có trong kết quả; no: không có |
state | string | done, waiting, failed: trạng thái lần kiểm tra gần nhất |
move | string | up, down, same: so với lần trước |
q | string | Chữ trong từ khoá hoặc URL |
curl "https://serpy.datlab.dev/v1/projects/3/export.csv?order=rank" \ -H "Authorization: Bearer sv_…" \ -o export.csv
GET /v1/keywords/export.{format}
Xuất mọi từ khoá đã tìm: CSV hoặc Excel
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
format* | string | Định dạng tệp: csv, xlsx |
curl https://serpy.datlab.dev/v1/keywords/export.xlsx \ -H "Authorization: Bearer sv_…" \ -o export.xlsx
GET /v1/searches/export.{format}
Xuất hàng đợi hoặc một batch: CSV hoặc Excel
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
format* | string | Định dạng tệp: csv, xlsx |
batch | integer | Một lần thêm (batch) của các lần tìm |
order | string | input (mặc định: thứ tự nhập), rank, change, best, keyword, last; một dấu - phía trước để đảo |
top | string | 1, 3, 5, 10, 30, 100: hạng từ 1 tới số đó; na: không thấy |
band | string | Một nhóm hạng: top3, p4_5, p6_10, p11_30, p31, none, unchecked |
found | string | yes: domain có trong kết quả; no: không có |
state | string | done, waiting, failed: trạng thái lần kiểm tra gần nhất |
move | string | up, down, same: so với lần trước |
q | string | Chữ trong từ khoá hoặc URL |
curl "https://serpy.datlab.dev/v1/searches/export.csv?batch=77" \ -H "Authorization: Bearer sv_…" \ -o export.csv
GET /v1/checks/{id}/export.{format}
Xuất kết quả của một lần kiểm tra: CSV hoặc Excel
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
id* | integer | Mã lần kiểm tra |
format* | string | Định dạng tệp: csv, xlsx |
curl https://serpy.datlab.dev/v1/checks/341/export.csv \ -H "Authorization: Bearer sv_…" \ -o export.csv
Tài khoản
GET /v1/usage
Credit dùng được ngay (left): credit của gói tháng này còn lại (allowance, của monthly mỗi tháng, hết hạn cuối tháng) và credit đã nạp (credits, không hết hạn); credit đã dùng tháng này; giá (cost.page: credit mỗi trang kết quả của một từ khoá); giới hạn của gói và CrHerd có đang tìm không. Nạp thêm trong app (Nạp tiền).
curl https://serpy.datlab.dev/v1/usage \ -H "Authorization: Bearer sv_…"
GET /v1/credits/history
Lịch sử credit, mới nhất trước: nạp tiền và thưởng, mỗi lần kiểm tra một dòng (số lần tìm, credit hoàn của lần tìm lỗi hoặc đã huỷ), credit dùng thử, credit của gói mỗi tháng và lúc hết hạn, điều chỉnh của quản trị. filter: all, topup (nạp), spend (kiểm tra), other (còn lại).Danh sách: limit, offset; trang sau ở header X-Next-Offset.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
filter | string | all (mặc định), topup, spend, other |
limit | integer | Tối đa bấy nhiêu mục (mặc định 100, tới 500) |
offset | integer | Bỏ qua bấy nhiêu mục đầu: trang sau (X-Next-Offset) |
curl "https://serpy.datlab.dev/v1/credits/history?filter=spend&limit=2" \ -H "Authorization: Bearer sv_…"
GET /v1/locales
Các cặp quốc gia và ngôn ngữ tìm được. Hiện Serpy hỗ trợ Việt Nam / Tiếng Việt; cặp khác bị từ chối với UNSUPPORTED_LOCALE.
curl https://serpy.datlab.dev/v1/locales \ -H "Authorization: Bearer sv_…"
GET /v1/notifications
Cài đặt thông báo: email, Telegram, Zalo, ngưỡng đổi hạng
curl https://serpy.datlab.dev/v1/notifications \ -H "Authorization: Bearer sv_…"
PATCH /v1/notifications
Sửa cài đặt thông báo (chỉ những trường gửi lên). Một email nhận thông báo mới chờ xác nhận qua link gửi tới nó (pending); tới lúc đó thông báo vẫn tới email tài khoản.
| Tham số | Kiểu | Ý nghĩa |
|---|---|---|
email | boolean | Gửi thông báo qua email |
address | string | Email nhận thông báo ("" : email tài khoản) |
telegram | string | Telegram chat id hoặc @kênh |
zalo | string | Zalo: "" bỏ liên kết (liên kết bằng mã gửi tới Zalo OA của Serpy, trong Cài đặt) |
threshold | integer | Ngưỡng đổi hạng, 1 tới 100 |
tz | string | Múi giờ: tên IANA (theo giờ mùa hè của nó), vd. Asia/Ho_Chi_Minh, Asia/Tokyo, Europe/London; không nhận độ lệch như +07:00 |
weekly | boolean | Báo cáo tuần qua email |
long | boolean | Email khi kiểm tra lâu |
curl -X PATCH https://serpy.datlab.dev/v1/notifications \
-H "Authorization: Bearer sv_…" \
-H "Content-Type: application/json" \
-d '{"threshold":5,"weekly":true}'POST /v1/notifications/test
Gửi thử một thông báo tới các kênh đã bật
curl -X POST https://serpy.datlab.dev/v1/notifications/test \ -H "Authorization: Bearer sv_…"
POST /v1/notifications/resend
Gửi lại link xác nhận email nhận thông báo
curl -X POST https://serpy.datlab.dev/v1/notifications/resend \ -H "Authorization: Bearer sv_…"
Lỗi
Lỗi trả về { "error": "…", "code": "…" }: error để đọc, code để máy xử lý.
| code | HTTP | Khi nào |
|---|---|---|
UNAUTHORIZED | 401 | Thiếu hoặc sai key |
NO_API | 403 | Gói chưa có SERP API |
INVALID | 400 | Tham số sai (lý do trong error) |
UNSUPPORTED_LOCALE | 400 | Quốc gia, ngôn ngữ chưa hỗ trợ (xem /v1/locales) |
NOT_FOUND | 404 | Không có lần tìm, từ khoá hay dự án này |
TOO_LARGE | 413 | Tệp nhập quá lớn (tối đa 2 MB) |
INSUFFICIENT_CREDITS | 402 | Không đủ credit (error nói cần bao nhiêu, còn bao nhiêu): nạp thêm trong app |
RATE_LIMITED | 429 | Gọi quá dày, thử lại sau |