# รูปแบบการตอบกลับของ SERP API: ทุกบล็อกและทุกฟิลด์ของ JSON

> คำตอบของ SerpCrypto SERP API แยกตามฟิลด์: search_metadata, organic_results, ai_overview, people_also_ask, local pack, ads และอาร์เรย์แยกตาม engine

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

โครงเดียวกันในทุก engine แล้วตามด้วยหนึ่งบล็อกต่อหนึ่งส่วนของหน้าผลการค้นหา หน้านี้แสดงรายการแต่ละบล็อก ฟิลด์ และชนิดข้อมูล ในตัวอย่าง ID จำนวน ราคา และผลลัพธ์เป็นเพียงภาพประกอบ

**คำตอบสั้น — การตอบกลับของ SerpCrypto SERP API ประกอบด้วยอะไรบ้าง?**

แต่ละการตอบกลับ **SerpCrypto** คือออบเจกต์ JSON หนึ่งออบเจกต์: `search_metadata` (สถานะ, engine, เครดิตที่ใช้), `search_parameters` (การตั้งค่าที่ใช้), `search_information` ตามด้วยหนึ่งบล็อกต่อหนึ่งส่วนของหน้าผลการค้นหา เช่น `organic_results`, `ai_overview`, `people_also_ask` หรือ `local_results` ส่วนที่ไม่มีก็จะหายไปเลย หนึ่งหน้าคือ 1 เครดิต เริ่มต้นที่ US$0.30/1K การค้นหา จ่ายด้วยคริปโต ไม่ต้อง KYC

## การตอบกลับเต็มรูปแบบของ Google หน้าตาเป็นอย่างไร?

ตัวอย่างด้านล่างคือการค้นหา Google สำหรับ `standing desk` ในสหราชอาณาจักร ย่อให้เหลือหนึ่งรายการต่ออาร์เรย์ คำตอบจริงมีผลลัพธ์ organic ประมาณสิบรายการและทุกบล็อกอื่นที่หน้านั้นแสดงสำหรับคำค้นหา ตำแหน่ง และอุปกรณ์นั้น

*engine=google, gl=gb: ย่อแล้ว ค่าเป็นภาพประกอบ*

```json
{
  "search_metadata": {
    "id": "srch_2b81d0c6fa47",
    "status": "success",
    "engine": "google",
    "created_at": "2026-10-22T10:02:31Z",
    "credits_used": 1
  },
  "search_parameters": {
    "engine": "google",
    "q": "standing desk",
    "gl": "gb",
    "hl": "en",
    "google_domain": "google.co.uk",
    "device": "desktop",
    "page": 1
  },
  "search_information": { "total_results": 52400000, "query_displayed": "standing desk" },
  "ai_overview": {
    "text": "A standing desk lets you work while standing or sitting…",
    "references": [
      { "index": 1, "title": "How to choose a standing desk", "link": "https://www.example.co.uk/guide", "source": "Example Guide" }
    ]
  },
  "ads": [
    { "position": 1, "block": "top", "title": "Electric Standing Desks", "link": "https://shop.example.com/desks", "displayed_link": "shop.example.com", "description": "Free delivery on…" }
  ],
  "organic_results": [
    {
      "position": 1,
      "title": "Best standing desks 2026, tested",
      "link": "https://www.example.co.uk/best-standing-desks",
      "displayed_link": "www.example.co.uk › reviews",
      "snippet": "We tested 14 electric and manual desks…",
      "date": "12 Oct 2026",
      "sitelinks": [ { "title": "Budget picks", "link": "https://www.example.co.uk/best-standing-desks#budget" } ]
    }
  ],
  "people_also_ask": [
    { "question": "Is it healthy to stand all day at a desk?", "snippet": "…", "title": "Standing at work", "link": "https://www.example.org/standing" }
  ],
  "shopping_results": [
    { "position": 1, "title": "Example Desk Pro 140 cm", "price": "£299.00", "source": "Example Store", "link": "https://shop.example.com/desk-pro" }
  ],
  "related_searches": [ { "query": "standing desk electric" }, { "query": "standing desk converter" } ],
  "pagination": { "current": 1, "next_page": 2 }
}
```

## ทำไมบางบล็อกหายไปจากการตอบกลับของฉัน?

เพราะหน้าผลการค้นหาไม่ได้แสดงบล็อกเหล่านั้น Google ตัดสินใจเป็นรายคำค้นหา สถานที่ และอุปกรณ์ว่าจะแสดง ads, AI Overview, local pack หรือ top stories หรือไม่ SerpCrypto ส่งคืนเฉพาะสิ่งที่หน้านั้นแสดงและละส่วนที่เหลือออก แทนที่จะส่ง placeholder ว่าง

อ่านทุกบล็อกด้วยค่าเริ่มต้น ดังบรรทัด Python ด้านล่าง กฎเดียวกันนี้ใช้ภายในบล็อกด้วย: field ที่เป็น optional เช่น `date` หรือ `sitelinks` จะปรากฏเฉพาะบนผลลัพธ์ที่มี field นั้น

*Python: อ่านบล็อก optional อย่างปลอดภัย*

```python
data = response.json()

# A block is present only when the results page shows it: read with a default.
overview = data.get("ai_overview") or {}
organic = data.get("organic_results", [])
questions = [item["question"] for item in data.get("people_also_ask", [])]

if overview:
    print("AI Overview sources:", [ref["link"] for ref in overview.get("references", [])])
print(len(organic), "organic results,", len(questions), "questions")
```

## search_metadata มีอะไรบ้าง?

| Field | Type | คำอธิบาย |
| --- | --- | --- |
| `id` | string | ตัวระบุของการค้นหา อ้างอิงค่านี้เมื่อคุณติดต่อฝ่ายสนับสนุน |
| `status` | string | `success` ในการตอบกลับ 200 |
| `engine` | string | engine ที่รันการค้นหา |
| `created_at` | string | เวลาของการค้นหา รูปแบบ ISO 8601 ใน UTC |
| `credits_used` | integer | เครดิตที่ใช้ในการค้นหานี้: 1 เมื่อสำเร็จ |

## search_parameters และ search_information คืออะไร?

เก็บ `search_parameters` ไว้กับผลลัพธ์ของคุณ: บันทึกได้อย่างแม่นยำว่าอันดับนั้นมาจากประเทศ ภาษา สถานที่ และอุปกรณ์ใด

| Field | Type | คำอธิบาย |
| --- | --- | --- |
| `search_parameters` | object | พารามิเตอร์ที่ใช้ โดยเติมค่าเริ่มต้นให้แล้ว: `engine`, `q`, `gl`, `hl`, `location`, `google_domain`, `device`, `page` และอื่นๆ ที่คุณส่งมา |
| `search_information.total_results` | integer | จำนวนผลลัพธ์ที่เอนจินแสดง เมื่อมีการแสดง ค่าเป็นการประมาณ ไม่ใช่ตัวเลขที่แน่นอน |
| `search_information.query_displayed` | string | คำค้นหาตามที่หน้าผลลัพธ์แสดง |

## organic_results มีฟิลด์อะไรบ้าง?

ผลลัพธ์แบบ organic คือผลการค้นหาบนเว็บที่ไม่เสียค่าใช้จ่าย บน Bing นั้น `organic_results` มีรูปแบบเดียวกัน

| Field | Type | คำอธิบาย |
| --- | --- | --- |
| `position` | integer | ลำดับของผลลัพธ์ในบล็อกนี้บนหน้านี้ เริ่มที่ 1 |
| `title` | string | ชื่อเรื่องแบบลิงก์สีน้ำเงิน |
| `link` | string | URL ของผลลัพธ์ |
| `displayed_link` | string | URL หรือ breadcrumb ที่แสดงใต้ชื่อเรื่อง |
| `snippet` | string | ข้อความที่แสดงใต้ชื่อเรื่อง |
| `date` | string | วันที่ที่แสดงข้าง snippet ตามที่เขียนบนหน้า ไม่บังคับ |
| `sitelinks` | array | ลิงก์เพิ่มเติมที่แสดงใต้ผลลัพธ์ แต่ละรายการมี `title` และ `link` ไม่บังคับ |

## AI Overview ถูกส่งกลับมาอย่างไร?

`ai_overview` จะมีก็ต่อเมื่อ Google แสดง AI Overview สำหรับคำค้นหาและสถานที่นั้น คำค้นหาหลายคำไม่มีเลย

| Field | Type | คำอธิบาย |
| --- | --- | --- |
| `ai_overview.text` | string | ข้อความของ AI Overview ตามที่แสดงบนหน้า |
| `ai_overview.references[].index` | integer | ลำดับของแหล่งที่มาใน overview |
| `ai_overview.references[].title` | string | ชื่อเรื่องของหน้าที่อ้างอิง |
| `ai_overview.references[].link` | string | URL ของหน้าที่อ้างอิง |
| `ai_overview.references[].source` | string | ชื่อของเว็บไซต์ ตามที่แสดง |

## ads และ people_also_ask มีอะไรบ้าง?

| Field | Type | คำอธิบาย |
| --- | --- | --- |
| `ads[].position` | integer | ลำดับภายในบล็อกของมัน |
| `ads[].block` | string | `top` หรือ `bottom` ของหน้า |
| `ads[].title`, `link`, `displayed_link` | string | พาดหัว URL ปลายทาง และ URL ที่แสดงของโฆษณา |
| `ads[].description` | string | ข้อความโฆษณา |
| `people_also_ask[].question` | string | คำถามตามที่แสดง |
| `people_also_ask[].snippet` | string | ข้อความคำตอบที่แสดงเมื่อเปิดคำถาม |
| `people_also_ask[].title`, `link` | string | ชื่อและ URL ของหน้าที่เป็นแหล่งที่มาของคำตอบ |

## Google ยังมีบล็อกอื่นใดอีกบ้างที่ปรากฏได้?

| บล็อก | ฟิลด์ | คืออะไร |
| --- | --- | --- |
| `local_results` | `position`, `title`, `address`, `rating`, `reviews`, `type` | local pack: ธุรกิจบนแผนที่สำหรับคำค้นหาที่มีเจตนาด้านสถานที่ |
| `knowledge_graph` | `title`, `type`, `description`, `source.name`, `source.link` | knowledge panel เกี่ยวกับบุคคล สถานที่ บริษัท หรือสิ่งของ |
| `top_stories` | `title`, `link`, `source`, `date` | บทความข่าวที่แสดงใน carousel |
| `inline_videos` | `title`, `link`, `source`, `duration` | ผลการค้นหาวิดีโอที่แสดงภายในผลการค้นหาเว็บ |
| `shopping_results` | `position`, `title`, `price`, `source`, `link` | รายการสินค้าที่แสดงภายในผลการค้นหาเว็บ |
| `related_searches` | `query` | คำค้นหาที่แนะนำที่ด้านล่างของหน้า |
| `pagination` | `current`, `next_page` | หมายเลขหน้าปัจจุบันและหน้าถัดไป เมื่อมี |

## search อื่นๆ คืนค่าอะไรกลับมา?

แต่ละ vertical ใช้โครงเดิมและเพิ่มอาร์เรย์ของตัวเอง บน Google Maps `local_results` มีข้อมูลมากกว่าชุดผลลัพธ์ท้องถิ่น (local pack) ของการค้นหาบนเว็บ

| `engine` | อาร์เรย์หลัก | ฟิลด์ |
| --- | --- | --- |
| `google_news` | `news_results` | `position`, `title`, `link`, `source`, `date`, `snippet`, `thumbnail` |
| `google_images` | `images_results` | `position`, `title`, `original`, `original_width`, `original_height`, `thumbnail`, `source`, `link` |
| `google_maps` | `local_results` | `position`, `title`, `place_id`, `address`, `phone`, `website`, `rating`, `reviews`, `type`, `hours`, `gps_coordinates.latitude`, `gps_coordinates.longitude` |
| `google_shopping` | `shopping_results` | `position`, `title`, `price`, `extracted_price`, `currency`, `source`, `link`, `delivery`, `rating`, `reviews` |
| `bing` | `organic_results`, `related_searches` | ฟิลด์เดียวกับผลการค้นหา Google แบบออร์แกนิก |

## ราคา คะแนน และวันที่ถูกพิมพ์ออกมาแบบไหน?

ค่าต่าง ๆ จะคงรูปแบบที่หน้าเว็บใช้ไว้เมื่อหน้าเว็บเขียนเป็นข้อความ `price` เป็นสตริงพร้อมสัญลักษณ์สกุลเงิน เช่น `£299.00` และ Google Shopping เพิ่ม `extracted_price` เป็นตัวเลขโดยมี `currency` เป็นรหัส `rating` เป็นตัวเลข และ `reviews` เป็นจำนวนเต็ม วันที่อย่าง `date` คงไว้ตามที่เขียนบนหน้าเว็บ เช่น `12 Oct 2026` หรือ `3 days ago` ดังนั้นหากต้องการ timestamp ให้แปลงค่าเองในโค้ดของคุณ

## จะสร้างอันดับรวมข้ามหลายหน้าได้อย่างไร?

เก็บหมายเลขหน้ากำกับไว้กับผลลัพธ์แต่ละรายการ `position` บอกลำดับภายในบล็อกของมันบนหน้าเดียว และ `search_parameters.page` บอกว่าอยู่หน้าไหน ผลลัพธ์ออร์แกนิกประมาณ 10 รายการต่อหน้า ตามที่ Google ให้บริการตั้งแต่เลิกใช้ num=100 ในเดือนกันยายน 2025; แต่ละหน้าเพิ่มคือหนึ่งเครดิตเพิ่มเติม

สำหรับการติดตามอันดับ ทีมส่วนใหญ่เก็บ `link`, `position`, `page`, `gl`, `location`, `device` และ `created_at` ต่อคำค้นหาและต่อวัน แค่นี้ก็พอสำหรับวาดกราฟอันดับและอธิบายการเปลี่ยนแปลงตามสถานที่หรืออุปกรณ์ ดูวิธีเต็มได้ที่ [การติดตามอันดับ](https://serpcrypto.com/th/use-cases/rank-tracking/)

## คำถามเรื่องรูปแบบการตอบกลับ

### ชื่อฟิลด์เสถียรหรือไม่?

เสถียรภายในเวอร์ชัน 1 อาจมีการเพิ่มบล็อกหรือฟิลด์ใหม่ ดังนั้นให้ละเว้นคีย์ที่ไม่รู้จัก การลบหรือเปลี่ยนชื่อฟิลด์จะมาพร้อมเวอร์ชันใหม่ใน path เช่น `/api/v2/`

### ขอ HTML ดิบของหน้าเว็บได้ไหม?

ไม่ได้ เวอร์ชัน 1 คืนค่าเป็น JSON ที่ parse แล้วเท่านั้น บล็อกที่ parse แล้วครอบคลุมสิ่งที่เครื่องมือส่วนใหญ่ต้องการ: ผลลัพธ์ โฆษณา คำถาม AI Overview ชุดผลลัพธ์ท้องถิ่น และ knowledge panel

### ทำไม total_results ต่างจากที่ฉันนับได้?

มันคือค่าประมาณที่เอนจินพิมพ์ออกมา ไม่ใช่จำนวนผลลัพธ์ที่คุณไล่ดูทีละหน้าได้ จำนวนหน้าจะหยุดก่อนถึงตัวเลขนั้นมาก ใช้ `pagination.next_page` เพื่อดูว่ามีหน้าถัดไปหรือไม่

### การตอบกลับที่ไม่มีผลลัพธ์ออร์แกนิกคิดเครดิตไหม?

คิด หากการค้นหาสำเร็จ: หน้าว่างก็ยังถือเป็นผลลัพธ์ เฉพาะข้อผิดพลาดเท่านั้นที่ฟรี 1 เครดิต = 1 คำขอค้นหาที่สำเร็จ ซึ่งคืนผลลัพธ์หนึ่งหน้าบนเอนจินที่รองรับ คำขอที่ล้มเหลวจะไม่ถูกคิดเครดิต

---

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