Trả lời nhanh
Làm sao để truy vấn SERP API bằng curl?
Chạy curl -sG "https://serpcrypto.com/api/v1/search" -H "Authorization: Bearer $KEY" --data-urlencode "q=your query" và pipe JSON sang jq. Với SerpCrypto, mỗi lượt tìm kiếm thành công tốn 1 credit, từ 0,30 US$/1K lượt tìm kiếm, và lỗi thì miễn phí. -G biến các data flag thành query string. Credit được thanh toán bằng crypto, không cần KYC.
Những flag curl nào quan trọng ở đây?
Đặt khóa một lần cho mỗi shell bằng export SERPCRYPTO_API_KEY=…. Cài jq từ trình quản lý gói của bạn nếu chưa có.
| Flag | Vì sao |
|---|---|
-s | Im lặng: không có thanh tiến trình lẫn vào JSON. |
-G | Gửi các giá trị -d và --data-urlencode dưới dạng query string trong một GET request. |
--data-urlencode | Mã hóa dấu cách, dấu ngoặc kép và dấu trong q và location. |
-H "Authorization: Bearer …" | Khóa API của bạn. Giữ nó trong một biến môi trường. |
-w '%{http_code}' | In ra HTTP status, hữu ích khi một lệnh gọi thất bại. |
Làm sao để in ra top 10 liên kết cho một từ khóa?
Yêu cầu kết quả organic và để jq in ra vị trí và liên kết của từng kết quả, phân tách bằng tab. Dạng []? không in gì thay vì báo lỗi khi thiếu một block, giúp script chạy êm trên những trang khác thường.
# Top 10 organic links, one per line
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
--data-urlencode "q=kubernetes cost monitoring" -d gl=us -d hl=en \
| jq -r '.organic_results[]? | "\(.position)\t\(.link)"'Làm sao để liệt kê các câu hỏi trong People Also Ask?
Đọc people_also_ask[].question. Các câu hỏi theo ngôn ngữ trong hl và thay đổi theo quốc gia trong gl, nên hãy chạy cùng một truy vấn ở mỗi thị trường bạn viết cho. Đội ngũ nội dung dán thẳng danh sách này vào bản brief.
# People Also Ask questions, ready for a content brief
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
--data-urlencode "q=how to brew cold brew" -d gl=gb -d hl=en \
| jq -r '.people_also_ask[]?.question'Làm sao để xem một AI Overview trích dẫn những nguồn nào?
Đọc ai_overview.references. Block này chỉ tồn tại khi Google hiển thị AI Overview cho truy vấn và vị trí đó, nên nếu không thì công thức sẽ in ra một thông báo rõ ràng. Theo dõi các nguồn này theo thời gian cho thấy trang của bạn có được trích dẫn trong các câu trả lời do Google tạo ra hay không.
# Sources cited by the AI Overview, if the page shows one
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
--data-urlencode "q=what is a heat pump" -d gl=us -d hl=en \
| jq -r 'if .ai_overview then .ai_overview.references[] | "\(.index)\t\(.source)\t\(.link)" else "no AI Overview for this query" end'Làm sao để lấy local pack và danh sách Maps?
Một tìm kiếm web với location trả về local pack hiển thị trên trang kết quả, thường là vài doanh nghiệp. engine=google_maps trả về danh sách Maps dài hơn với địa chỉ, đánh giá và số lượt đánh giá, mà @tsv chuyển thành các hàng cho bảng tính. Cả hai đều tốn 1 credit mỗi lần.
# Local pack in a city, then the full Maps list for the same query
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
--data-urlencode "q=vegan restaurant" \
--data-urlencode "location=Toronto, Ontario, Canada" -d gl=ca -d hl=en \
| jq -r '.local_results[]? | "\(.position)\t\(.title)\t\(.rating // "-")"'
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
-d engine=google_maps --data-urlencode "q=vegan restaurant Toronto" -d gl=ca -d hl=en \
| jq -r '.local_results[]? | [.title, .address, .rating, .reviews] | @tsv'Làm sao để xem lỗi khi một lệnh gọi thất bại?
Thêm -w '\nHTTP %{http_code}\n' để in status sau phần body. Body lỗi là JSON nhỏ với code và message; trang errors liệt kê cả sáu mã. Lệnh thứ hai đọc số credit của bạn, miễn phí.
# Print the body, then the HTTP status on its own line
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
--data-urlencode "q=test" -w '\nHTTP %{http_code}\n'
# Credits left (free call)
curl -s "https://serpcrypto.com/api/v1/credits" -H "Authorization: Bearer $SERPCRYPTO_API_KEY" | jq .Tương đương trên Windows với PowerShell là gì?
Invoke-RestMethod gửi request và phân tích JSON thành object, nên bạn không cần jq. Truyền tham số dưới dạng hashtable trong -Body: với request GET, PowerShell mã hóa chúng vào query string. Sau đó Format-Table in ra vị trí, tiêu đề và liên kết.
# Windows PowerShell 5.1 or PowerShell 7
$headers = @{ Authorization = "Bearer $env:SERPCRYPTO_API_KEY" }
$query = @{ q = "kubernetes cost monitoring"; gl = "us"; hl = "en" }
$data = Invoke-RestMethod -Uri "https://serpcrypto.com/api/v1/search" -Headers $headers -Body $query -Method Get
$data.organic_results | Select-Object position, title, link | Format-Table -AutoSizeKhi nào nên chuyển từ curl sang code?
Ngay khi bạn lặp lại một lệnh với một danh sách từ khóa. Vòng lặp shell đủ dùng cho vài chục tìm kiếm, nhưng retry, chạy song song và lưu trữ dễ hơn trong Python hoặc Node.js. Các request vẫn như cũ, nên một công thức đã kiểm tra ở đây dùng lại được nguyên vẹn. Mỗi tìm kiếm vẫn là 1 credit, ở mức 0,75 US$/1K lượt tìm kiếm trên pack 10.000 tìm kiếm.
Câu hỏi về curl
Tại sao truy vấn của tôi trả về lỗi 400 trong curl?
Thường là do q được gửi bằng -d và chứa ký tự cần mã hóa. Dùng --data-urlencode "q=…" cho truy vấn và cho location; các mã đơn giản như gl=us có thể giữ với -d.
Tôi có thể lưu toàn bộ JSON vào file không?
Có: thêm -o result.json thay vì pipe sang jq. Lưu câu trả lời thô cho phép bạn phân tích lại sau này mà không phải trả tiền cho lần tìm kiếm đó lần nữa.
curl trên Windows có hoạt động giống vậy không?
Windows 10 và 11 có sẵn curl.exe, và các flag giống nhau. Cách đặt dấu nháy khác trong cmd.exe, nên PowerShell với Invoke-RestMethod thường đơn giản hơn ở đó.