คำตอบสั้น
endpoint การค้นหาของ LLMWebSearch รับพารามิเตอร์อะไรบ้าง?
endpoint /search ของ LLMWebSearch ต้องการเพียง q พารามิเตอร์เสริมกำหนดจำนวนผลลัพธ์ที่ส่งคืน (max_results) จำนวนหน้าที่อ่าน (read) รูปแบบและความยาวของเนื้อหา ข่าวหรือเว็บ ช่วงเวลา ประเทศและภาษา และโดเมนที่ต้องการเก็บหรือตัดออก การอ่านสูงสุด 3 หน้าคิด 1 เครดิต เริ่มต้นที่ US$1.20/1K การค้นหา ณ เดือนตุลาคม 2026 ไม่ต้อง KYC จ่ายด้วยคริปโต
/search at a glance
| เมธอด | POST พร้อม body แบบ JSON หรือ GET พร้อมชื่อพารามิเตอร์เดียวกันใน query string |
|---|---|
| URL | https://llmwebsearch.com/api/v1/search |
| Required | q: 1 ถึง 400 ตัวอักษร; search operator ถูกส่งไปตามที่เขียนไว้ |
| ค่าเริ่มต้น | 5 ผลลัพธ์ อ่าน 3 หน้าแรก Markdown สูงสุด 6,000 ตัวอักษรต่อหน้า |
| การเรียกเก็บเงิน | หนึ่งเครดิตจ่ายสำหรับการค้นหาหนึ่งครั้ง: ผลลัพธ์แบบจัดอันดับสูงสุด 20 รายการ โดยอ่านหน้าเว็บของ 3 รายการแรกและส่งกลับเป็น Markdown การอ่าน 4 ถึง 10 หน้าใช้ 2 เครดิต การเรียกที่จบลงด้วยข้อผิดพลาดไม่มีค่าใช้จ่าย |
| ผลลัพธ์ | ผลลัพธ์มาจากการค้นหาเว็บแบบเรียลไทม์ที่รันในขณะที่คุณเรียก ตามลำดับที่เสิร์ชเอนจินจัดอันดับ ไม่มีอะไรเสิร์ฟจากดัชนีเก่า |
| ตัวกรอง | เลือกประเทศและภาษาของผลลัพธ์ ช่วงเวลา (วัน สัปดาห์ เดือน หรือปีที่ผ่านมา) ผลการค้นหาแบบเว็บหรือข่าว และโดเมนที่ต้องการรวมหรือยกเว้น |
| Page reader | LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/) |
ค้นหาเว็บและอ่านผลลัพธ์ชั้นนำ (POST)
POST/api/v1/search
ทำการค้นหาเว็บแบบเรียลไทม์และส่งคืนผลลัพธ์ที่จัดอันดับแล้ว หน้าเว็บของ read ผลลัพธ์แรกถูกดึงพร้อมกันและเนื้อหาหลักถูกส่งคืนใน content ตัวอย่างถามวิธีหมุน API key; ชื่อเรื่อง วันที่ และค่าต่าง ๆ เป็นเพียงตัวอย่าง
การยืนยันตัวตน: API key ใน header Authorization: Bearer API_KEY
Request body
| Field | Type | Required | คำอธิบาย |
|---|---|---|---|
q | string | ใช่ | คำค้นหา 1 ถึง 400 ตัวอักษร เครื่องหมายคำพูดและ operator เช่น site: ถูกเก็บไว้ตามที่เขียน |
max_results | integer | ไม่ | จำนวนผลลัพธ์ที่จัดอันดับ 1 ถึง 20 ค่าเริ่มต้น 5 |
read | integer | ไม่ | จำนวนผลลัพธ์แรกที่อ่านและส่งคืนพร้อมเนื้อหา 0 ถึง 10 ค่าเริ่มต้น 3 ตั้งแต่ 4 ขึ้นไปการเรียกคิด 2 เครดิต |
format | string | ไม่ | markdown (ค่าเริ่มต้น) หรือ text สำหรับเนื้อหาหน้าเว็บ |
max_chars | integer | ไม่ | ขีดจำกัดความยาวเนื้อหาของแต่ละหน้า 500 ถึง 50,000 ตัวอักษร ค่าเริ่มต้น 6,000 |
topic | string | ไม่ | web (ค่าเริ่มต้น) หรือ news |
time_range | string | ไม่ | day, week, month หรือ year ไม่มีค่าเริ่มต้น: วันที่ใดก็ได้ |
country | string | ไม่ | รหัสประเทศสองตัวอักษร (ISO 3166-1 alpha-2) สำหรับตำแหน่งที่ค้นหา ค่าเริ่มต้น us |
language | string | ไม่ | ภาษาของผลลัพธ์ เช่น en, de หรือ pt-BR ค่าเริ่มต้น en |
include_domains | string[] | ไม่ | สูงสุด 20 โดเมน; เก็บเฉพาะผลลัพธ์จากโดเมนเหล่านี้และ subdomain ของโดเมนเหล่านี้ |
exclude_domains | string[] | ไม่ | สูงสุด 20 โดเมนที่ผลลัพธ์จะถูกตัดออก |
{
"q": "how to rotate api keys without downtime",
"max_results": 5,
"read": 3,
"max_chars": 6000
}{
"q": "open source license change",
"topic": "news",
"time_range": "week",
"include_domains": [
"news.example.com",
"example.org"
],
"read": 0
}Response 200
{
"query": "how to rotate api keys without downtime",
"created_at": "2026-10-22T10:15:04Z",
"credits_used": 1,
"results": [
{
"position": 1,
"title": "Rotating API keys",
"url": "https://docs.example.com/security/key-rotation",
"host": "docs.example.com",
"snippet": "Create a second key, deploy it everywhere, then revoke the first one.",
"published_at": "2026-09-30",
"content_status": "ok",
"content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key.\n2. Deploy it to every service.\n3. Revoke the old key.",
"word_count": 948
},
{
"position": 2,
"title": "Key rotation checklist",
"url": "https://blog.example.org/key-rotation-checklist",
"host": "blog.example.org",
"snippet": "Keep two keys active during the switch and alert on the old one.",
"content_status": "blocked_by_robots"
},
{
"position": 3,
"title": "Secrets management basics",
"url": "https://security.example.net/secrets-basics",
"host": "security.example.net",
"snippet": "Never commit keys to a repository.",
"published_at": "2026-06-12",
"content_status": "ok",
"content": "# Secrets management basics\n\n**Never** commit keys to a repository...",
"word_count": 1310
},
{
"position": 4,
"title": "API key best practices",
"url": "https://dev.example.com/api-key-best-practices",
"host": "dev.example.com",
"snippet": "Scope each key to one service and one environment.",
"content_status": "not_requested"
}
]
}ตัวอย่างโค้ด
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3}'import os
import requests
resp = requests.post(
"https://llmwebsearch.com/api/v1/search",
headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
json={"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3},
timeout=60,
)
resp.raise_for_status()
for r in resp.json()["results"]:
print(r["position"], r["content_status"], r["url"])const res = await fetch('https://llmwebsearch.com/api/v1/search', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ q: 'how to rotate api keys without downtime', max_results: 5, read: 3 }),
});
const { results } = await res.json();
for (const r of results) console.log(r.position, r.content_status, r.url);ค้นหาเว็บ (GET)
GET/api/v1/search
การค้นหาเดียวกันโดยส่งพารามิเตอร์ใน query string แบบ URL-encoded ลิสต์เช่น include_domains เขียนเป็นค่าเดียวคั่นด้วยจุลภาค เหมาะสำหรับการทดสอบเร็ว ๆ หรือสำหรับเครื่องมือที่ส่งคำขอ GET เท่านั้น ตัวอย่างขอเฉพาะผลลัพธ์ (read=0)
การยืนยันตัวตน: API key ใน header Authorization: Bearer API_KEY
พารามิเตอร์
| ชื่อ | In | Type | Required | คำอธิบาย |
|---|---|---|---|---|
q | query | string | ใช่ | คำค้นหา แบบ URL-encoded ยาว 1 ถึง 400 ตัวอักษร |
max_results | query | integer | ไม่ | 1 ถึง 20 ค่าเริ่มต้น 5 |
read | query | integer | ไม่ | 0 ถึง 10 ค่าเริ่มต้น 3; ตั้งแต่ 4 ขึ้นไปคิด 2 เครดิต |
format | query | string | ไม่ | markdown (ค่าเริ่มต้น) หรือ text |
max_chars | query | integer | ไม่ | 500 ถึง 50,000 ต่อหน้า ค่าเริ่มต้น 6,000 |
topic | query | string | ไม่ | web (ค่าเริ่มต้น) หรือ news |
time_range | query | string | ไม่ | day, week, month หรือ year |
country | query | string | ไม่ | รหัส ISO 3166-1 alpha-2 ค่าเริ่มต้น us |
language | query | string | ไม่ | รหัสภาษา ค่าเริ่มต้น en |
include_domains | query | string | ไม่ | รายการคั่นด้วยจุลภาค สูงสุด 20 โดเมน |
exclude_domains | query | string | ไม่ | รายการคั่นด้วยจุลภาค สูงสุด 20 โดเมน |
api_key | query | string | ไม่ | API key ของคุณ สำหรับกรณีที่ไม่ได้ส่ง header Authorization |
Response 200
{
"query": "postgres connection pooling",
"created_at": "2026-10-22T10:21:47Z",
"credits_used": 1,
"results": [
{
"position": 1,
"title": "Connection pooling explained",
"url": "https://docs.example.com/db/pooling",
"host": "docs.example.com",
"snippet": "A pool keeps a few database connections open and lends them to requests.",
"content_status": "not_requested"
},
{
"position": 2,
"title": "Sizing a connection pool",
"url": "https://blog.example.org/pool-size",
"host": "blog.example.org",
"snippet": "Start small: the right size depends on cores and disk, not on traffic.",
"published_at": "2026-03-04",
"content_status": "not_requested"
}
]
}ตัวอย่างโค้ด
curl -sG "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
--data-urlencode "q=postgres connection pooling" \
-d max_results=10 -d read=0import os
import requests
resp = requests.get(
"https://llmwebsearch.com/api/v1/search",
headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
params={"q": "postgres connection pooling", "max_results": 10, "read": 0},
timeout=60,
)
print([r["url"] for r in resp.json()["results"]])const params = new URLSearchParams({ q: 'postgres connection pooling', max_results: '10', read: '0' });
const res = await fetch(`https://llmwebsearch.com/api/v1/search?${params}`, {
headers: { Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}` },
});
console.log((await res.json()).results.map((r) => r.url));จะได้ผลลัพธ์โดยไม่ต้องมีเนื้อหาหน้าเว็บได้อย่างไร?
ตั้ง read เป็น 0 ผลลัพธ์ทุกอันจะกลับมาพร้อมชื่อเรื่อง URL host snippet และวันที่ และ content_status: "not_requested" ขนาด response เล็กลงมาก ซึ่งช่วยได้เมื่อ agent ต้องการแค่เลือกว่าลิงก์ไหนสำคัญ
ราคายังคงอยู่ที่ 1 เครดิต เท่ากับการอ่านสูงสุด 3 หน้า รูปแบบที่พบบ่อยคือค้นหาด้วย read=0 เพื่อคัดลิงก์ไว้ก่อน แล้วจึงเรียก extract กับ URL สองหรือสามอันที่โมเดลเลือก
เมื่อไหร่การค้นหาคิด 2 เครดิต?
เมื่อ read อยู่ระหว่าง 4 ถึง 10 การอ่านหน้าเว็บมากขึ้นต้องใช้แรงฝั่งเรามากขึ้น ราคาจึงเพิ่มเป็นสองเท่าครั้งเดียว และคงอยู่ที่ 2 เครดิตจนถึงสูงสุด 10 หน้า
credits_used ในทุก response แสดงว่าการเรียกครั้งนั้นคิดเท่าไร หน้าที่อ่านไม่ได้ ไม่ว่าจะเพราะกฎ robots.txt หรือการปฏิเสธ ไม่ทำให้ราคานี้ลดลงหรือเพิ่มขึ้น ถ้าปกติคุณต้องการหน้าเต็มแค่ไม่กี่หน้า ให้ตั้ง read ไว้ที่ 3 แล้วเรียก /extract สำหรับหน้าที่ต้องการเพิ่มเป็นครั้งคราว
จะค้นหาข่าวล่าสุดได้อย่างไร?
ส่ง topic: "news" และ time_range ผลลัพธ์จะมาจากบทความข่าว และ time_range จะเก็บเฉพาะบทความจาก day, week, month หรือ year ที่ผ่านมา published_at จะถูกเติมเมื่อบทความหรือผลการค้นหาระบุวันที่
ตัวกรองความใหม่แบบเดียวกันใช้ได้กับ topic: "web" เหมาะกับคำถามอย่างการเปิดตัวหรือการเปลี่ยนแปลงราคาล่าสุด ซึ่งหน้าเว็บเก่าอาจทำให้โมเดลเข้าใจผิด
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "database release security fix", "topic": "news", "time_range": "week", "read": 3}'จะจำกัดผลลัพธ์ให้เฉพาะบางเว็บไซต์ได้อย่างไร?
ระบุไว้ใน include_domains สูงสุด 20 รายการ จะเก็บเฉพาะผลลัพธ์ที่ host เป็นหนึ่งในโดเมนเหล่านั้นหรือ subdomain ของโดเมนเหล่านั้น: example.com ก็จับคู่ docs.example.com ด้วย ใช้ exclude_domains ในทางกลับกัน เช่น เพื่อตัดเว็บไซต์ของคุณเองออกจากผลลัพธ์
ใน POST body ทั้งสองฟิลด์เป็น JSON array ในคำขอ GET ให้เขียนเป็นค่าคั่นด้วยจุลภาคชุดเดียว คำค้นหาเองก็ใส่ operator site: ได้ โดยจะถูกส่งไปยังการค้นหาตามที่เขียนไว้
country และ language เปลี่ยนอะไร?
country กำหนดว่าค้นหาในประเทศไหน ด้วยรหัสสองตัวอักษร เช่น us, de หรือ br อันดับผลลัพธ์แตกต่างกันตามประเทศ โดยเฉพาะบริการท้องถิ่น ราคา และกฎระเบียบ language กำหนดภาษาของผลลัพธ์ เช่น en, fr หรือ pt-BR
ทั้งคู่มีค่าเริ่มต้นเป็น United States และอังกฤษ ตั้งทั้งคู่พร้อมกันเมื่อ agent ทำงานให้ผู้ใช้ในตลาดเดียว: ผู้ใช้ชาวเยอรมันที่ถามเรื่องกฎภาษีต้องการ country: "de" และ language: "de"
ได้ข้อความจากหน้าเว็บกลับมาเท่าไร?
สูงสุด max_chars ตัวอักษรต่อหน้า ค่าเริ่มต้น 6,000 และกำหนดได้ตั้งแต่ 500 ถึง 50,000 เพดานนี้ช่วยปกป้อง context window ของโมเดล: สามหน้าที่ 6,000 ตัวอักษรเทียบได้ประมาณ 4,500 tokens ของภาษาอังกฤษ
word_count นับข้อความที่ดึงมาทั้งหมดก่อนตัด所以你จึงรู้ได้ว่าเมื่อไหร่หน้าเว็บถูกตัด เมื่อคำตอบต้องใช้เอกสารยาวชิ้นเดียว ให้ค้นหาด้วยเพดานต่ำก่อน แล้วดึงเฉพาะหน้านั้นผ่าน /extract ด้วยเพดานที่สูงขึ้น หน้าที่โหลดช้าจะไม่ถูกWaitingอย่างไร้ขีดจำกัด: หลัง 15 วินาทีจะกลับมาเป็น fetch_timeout โดยไม่มีเนื้อหา
Search endpoint: คำถามที่พบบ่อย
ควรใช้ POST หรือ GET?
ใช้ POST ในโค้ด เพราะ JSON array และคำค้นหายาวเขียนใน body ได้ง่ายกว่า GET เหมาะกับการทดสอบเร็ว ๆ ใน terminal หรือเครื่องมือที่ส่งได้แค่ query string ทั้งคู่คืน response เดียวกันและราคาเท่ากัน
ขอผลลัพธ์มากกว่า 20 รายการได้ไหม?
ไม่ได้ 20 คือจำนวนสูงสุดต่อการเรียก agent แทบไม่ต้องใช้มากกว่านี้: การค้นหาครั้งที่สองด้วยคำค้นหาที่เขียนใหม่มักให้แหล่งข้อมูลที่ดีกว่าการได้รายการยาว ๆ
หน้าเว็บถูกอ่านทีละหน้าหรือเปล่า?
ไม่ อ่านพร้อมกัน หน้าที่ไม่ตอบกลับภายใน 15 วินาทีจะถูกส่งกลับโดยไม่มีเนื้อหาเป็น fetch_timeout เพื่อให้เว็บไซต์ที่ช้าเพียงแห่งเดียวไม่บล็อก response ทั้งหมด
search engine ตัวไหนสร้างผลลัพธ์?
ผลลัพธ์มาจากการค้นหาเว็บแบบเรียลไทม์ที่รันในขณะที่คุณเรียก ตามลำดับที่เสิร์ชเอนจินจัดอันดับ ไม่มีอะไรเสิร์ฟจากดัชนีเก่า เราไม่เปิดเผยว่า upstream provider รายใดรันการค้นหา