# SERP API ด้วย curl และ jq: สูตรสำเร็จบรรทัดเดียว

> สูตร SERP API ของ SerpCrypto ด้วย curl และ jq: 10 อันดับแรก, People Also Ask, แหล่งที่มา AI Overview, local pack และ Maps พร้อม PowerShell

- URL: https://serpcrypto.com/th/docs/curl/
- อัปเดตล่าสุด: 2026-10-22
- ผู้เผยแพร่: SerpCrypto (https://serpcrypto.com)

วิธีที่เร็วที่สุดในการดูว่า API ส่งคืนอะไรคือผ่าน terminal สูตรสำเร็จเหล่านี้พิมพ์สิ่งเดียวต่อหนึ่งรายการเท่านั้น: ลิงก์ คำถาม แหล่งที่มา หรือธุรกิจในพื้นที่ ใช้ได้ใน bash และ zsh โดยมีเวอร์ชัน PowerShell ปิดท้ายหน้า

**คำตอบสั้น — ฉันจะเรียกใช้ 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 รูปแบบ `[]?` จะไม่พิมพ์อะไรเลยแทนที่จะล้มเหลวเมื่อไม่มีบล็อกนั้น ซึ่งทำให้สคริปต์เงียบเมื่อเจอหน้าที่ผิดปกติ

*10 ลิงก์อันดับต้น*

```bash
# 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*

```bash
# 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 สร้างขึ้นหรือไม่

*แหล่งที่มาของ AI Overview*

```bash
# 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 แล้วตามด้วย Google Maps*

```bash
# 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](https://serpcrypto.com/th/docs/errors/) แสดงรหัสทั้งหก คำสั่งที่สองอ่านเครดิตของคุณ ซึ่งไม่มีค่าใช้จ่าย

*Status code และเครดิต*

```bash
# 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` จะพิมพ์ตำแหน่ง ชื่อเรื่อง และลิงก์

*PowerShell*

```powershell
# 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](https://serpcrypto.com/th/docs/python/) หรือ [Node.js](https://serpcrypto.com/th/docs/node/) คำขอเหมือนกัน ดังนั้น 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` มักง่ายกว่า

---

SerpCrypto: SerpCrypto คือ SERP API สำหรับนักพัฒนาและ AI agent ที่ส่งคืนผลการค้นหา Google และ Bing เป็น JSON จ่ายด้วยคริปโตโดยไม่ต้องอัปโหลดบัตรประชาชน เครดิตการค้นหาแบบเติมเงินจาก US$0.30/1K การค้นหา ไม่มีวันหมดอายุ ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องเซลฟี่ ไม่ต้องใช้เอกสาร จ่ายด้วยคริปโต
