คำตอบสั้น
ฉันจะเรียกใช้ SERP API ด้วย curl ได้อย่างไร
รัน curl -sG "https://serpcrypto.com/api/v1/search" -H "Authorization: Bearer $KEY" --data-urlencode "q=your query" แล้ว pipe JSON ไปยัง jq ด้วย SerpCrypto การค้นหาที่สำเร็จแต่ละครั้งมีค่าใช้จ่าย 1 เครดิต เริ่มต้นที่ US$0.30/1K การค้นหา และกรณีผิดพลาดไม่มีค่าใช้จ่าย -G แปลง data flags เป็น query string เครดิตชำระด้วยคริปโต ไม่ต้อง KYC
curl flags ตัวไหนสำคัญในที่นี้
ตั้งค่า key ครั้งเดียวต่อ shell ด้วย export SERPCRYPTO_API_KEY=… ติดตั้ง jq จาก package manager ของคุณหากยังไม่มี
| Flag | เหตุผล |
|---|---|
-s | Silent: ไม่มี progress bar ปนกับ JSON |
-G | ส่งค่า -d และ --data-urlencode เป็น query string ในคำขอ GET |
--data-urlencode | เข้ารหัสช่องว่าง เครื่องหมายคำพูด และตัวอักษรเน้นเสียงใน q และ location |
-H "Authorization: Bearer …" | API key ของคุณ เก็บไว้ใน environment variable |
-w '%{http_code}' | พิมพ์ HTTP status ซึ่งมีประโยชน์เมื่อการเรียกล้มเหลว |
ฉันจะพิมพ์ 10 ลิงก์อันดับต้นสำหรับคำค้นหาได้อย่างไร
ขอผลลัพธ์แบบ organic แล้วให้ jq พิมพ์ตำแหน่งและลิงก์ของแต่ละรายการ คั่นด้วย tab รูปแบบ []? จะไม่พิมพ์อะไรเลยแทนที่จะล้มเหลวเมื่อไม่มีบล็อกนั้น ซึ่งทำให้สคริปต์เงียบเมื่อเจอหน้าที่ผิดปกติ
# 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)"'ฉันจะแสดงรายการคำถาม People Also Ask ได้อย่างไร
อ่าน people_also_ask[].question คำถามจะเป็นไปตามภาษาที่ตั้งใน hl และเปลี่ยนตามประเทศใน gl ดังนั้นให้รันคำค้นหาเดียวกันในแต่ละตลาดที่คุณเขียนถึง ทีมคอนเทนต์วางรายการนี้ลงใน 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'ฉันจะดูได้อย่างไรว่า AI Overview อ้างอิงแหล่งใดบ้าง
อ่าน ai_overview.references บล็อกนี้จะมีก็ต่อเมื่อ Google แสดง AI Overview สำหรับคำค้นหาและพื้นที่นั้น มิฉะนั้น recipe จะพิมพ์ข้อความที่ชัดเจน การติดตามแหล่งเหล่านี้อย่างต่อเนื่องจะแสดงว่าหน้าของคุณถูกอ้างอิงในคำตอบที่ Google สร้างขึ้นหรือไม่
# 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'ฉันจะดึง local pack และรายการ Maps ได้อย่างไร
การค้นหาเว็บด้วย location จะคืนค่า local pack ที่แสดงบนหน้าผลลัพธ์ ซึ่งมักเป็นธุรกิจไม่กี่ราย engine=google_maps จะคืนค่ารายการ Maps ที่ยาวกว่าพร้อมที่อยู่ คะแนน และจำนวนรีวิว ซึ่ง @tsv แปลงเป็นแถวสำหรับ spreadsheet ทั้งสองใช้ 1 เครดิตต่อครั้ง
# 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'ฉันจะดู error เมื่อการเรียกล้มเหลวได้อย่างไร
เพิ่ม -w '\nHTTP %{http_code}\n' เพื่อพิมพ์ status หลัง body body ของ error เป็น JSON ขนาดเล็กที่มี code และ message หน้า errors แสดงรหัสทั้งหก คำสั่งที่สองอ่านเครดิตของคุณ ซึ่งไม่มีค่าใช้จ่าย
# 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 .แล้ว PowerShell บน Windows ล่ะ
Invoke-RestMethod ส่งคำขอและแปลง JSON เป็น object คุณจึงไม่ต้องใช้ jq ส่งพารามิเตอร์เป็น hashtable ใน -Body สำหรับ GET request PowerShell จะ encode พารามิเตอร์เหล่านั้นลงใน query string จากนั้น Format-Table จะพิมพ์ตำแหน่ง ชื่อเรื่อง และลิงก์
# 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 -AutoSizeเมื่อไรควรเปลี่ยนจาก curl ไปเขียนโค้ด
ทันทีที่คุณต้องรันคำสั่งซ้ำกับรายการคำค้นหา loop ใน shell ใช้ได้กับการค้นหาสองสามสิบครั้ง แต่ retry การทำงานแบบขนาน และการจัดเก็บ ทำได้ง่ายกว่าใน Python หรือ Node.js คำขอเหมือนกัน ดังนั้น recipe ที่ทดสอบที่นี่จึงนำไปใช้ต่อได้โดยไม่ต้องแก้ไข การค้นหาแต่ละครั้งยังคงใช้ 1 เครดิต หรือ US$0.75/1K การค้นหา ในแพ็ก 10,000 การค้นหา
คำถามเกี่ยวกับ curl
ทำไมคำค้นหาของฉันจึงได้ error 400 ใน curl
มักเป็นเพราะ q ถูกส่งด้วย -d และมีอักขระที่ต้อง encode ใช้ --data-urlencode "q=…" สำหรับ query และสำหรับ location รหัสธรรมดาเช่น gl=us ใช้ -d ได้
ฉันบันทึก JSON ทั้งหมดลงไฟล์ได้ไหม
ได้: เพิ่ม -o result.json แทนการ pipe ไปยัง jq การบันทึกคำตอบดิบช่วยให้คุณ parse ซ้ำภายหลังได้โดยไม่ต้องจ่ายค่าค้นหาอีก
curl บน Windows ทำงานเหมือนกันไหม
Windows 10 และ 11 มี curl.exe มาด้วย และ flag ต่าง ๆ เหมือนกัน การใส่เครื่องหมายคำพูดแตกต่างกันใน cmd.exe ดังนั้นใช้ PowerShell กับ Invoke-RestMethod มักง่ายกว่า