Public API ของ Karma.Domains ให้การเข้าถึงรายงานโดเมนแบบโปรแกรม: auctions, expired, backorder และ buy-now ทุกการตอบกลับเป็น JSON ผ่าน HTTPS Base URL: https://api.karma.domains, route prefix: /v1.
Karma.Domains คือแพลตฟอร์ม domain intelligence สําหรับนักลงทุน ทีม SEO และ automation pipelines:
- โดเมนใหม่ 400,000+ ต่อวัน ใน discovery และ monitoring flows (รวมทั้งหมด 7,000,000+ โดเมน)
- แหล่งข้อมูลโดเมน 30+ โดยรวม รวมถึง แหล่ง auction/expired/backorder/buy-now 27+ (GoDaddy, NameJet, DropCatch, Dynadot, GNAME, Namecheap ฯลฯ)
- ฟิลเตอร์ 90+ เพื่อการค้นหาที่แม่นยําตามคุณภาพโดเมน SEO ประวัติคอนเทนต์ และสัญญาณการประมูล (TF, CF, DA, DR, Age, Backlinks, Traffic, Keywords, Anchor Text ฯลฯ)
- ครอบคลุม TLD และ ccTLD (เช่น
.com,.net,.org,.biz,.info,.at,.be,.ca,.cc,.cl,.co,.co.nz) - ข้อมูล SEO และ authority จากผู้ให้บริการหลัก: Ahrefs, Majestic, Moz, SimilarWeb
- คอนเทนต์ย้อนหลังและสัญญาณการเปลี่ยนแปลงผ่าน Wayback Machine
Request และ response schemas (ฟิลด์ฟิลเตอร์ โครงสร้างรายงาน sort enums) — ดูในเอกสารเชิงโต้ตอบ: Swagger UI หรือ ReDoc.
หน้านี้เป็นภาพรวมการอินทิเกรต: การยืนยันตัวตน ลิมิต รายการเอ็นด์พอยต์ workflow ทั่วไป และตัวอย่าง
- Introduction
- Authentication
- Rate limiting
- Daily row quota
- Endpoint overview
- Model parameters reference
- Typical workflows
- Caching
- ตัวอย่าง request (curl)
- Integration use cases
- MCP และ Public API
- FAQ
- Error codes
- ลิงก์ที่เป็นประโยชน์
Introduction
Public API ออกแบบมาสําหรับสคริปต์ แดชบอร์ดภายใน ระบบ CRM และระบบอัตโนมัติใดๆ ที่ต้องการข้อมูลเดียวกับ Karma.Domains web app
- Format: JSON
- API version: 1.0.0
- Databases:
auctions,expired,backorder,buynow; ค้นหาพร้อมกันทุกฐาน —POST /v1/reports/search(เหมือนตาราง “all databases” ใน UI) - Field documentation: มีเฉพาะใน OpenAPI
- ใช้งานได้เฉพาะในแผน Pro ขึ้นไป
Authentication
ทุกคําขอต้องมี header นี้:
Authorization: Bearer YOUR_API_KEY
วิธีรับ API key
- ต้องอยู่ในแผน Pro (หากไม่มี Pro จะใช้ API ไม่ได้)
- ไปที่ Profile → Settings — สร้างหรือรีเซ็ตคีย์ในส่วน API key
คีย์เดียวกันใช้กับ MCP server (ผู้ช่วย AI) ด้วย โดยลิมิตคําขอถูก แชร์ ระหว่าง REST และ MCP
การตอบกลับทั่วไปเมื่อคีย์ไม่ถูกต้อง
| Code | Reason |
|---|---|
| 401 | ไม่มี header, คีย์ไม่ถูกต้อง, หรือพิมพ์ Bearer ผิด |
| 403 | คีย์ถูกต้อง แต่บัญชีไม่มี Pro ที่ active (Pro plan required for API access) |
ส่ง Accept: application/json ทุกครั้ง
Rate limiting
- 60 คําขอต่อนาที ต่อ API key
- หน้าต่างเวลา: 60 วินาที
- ตัวนับ แชร์ร่วมกัน ทุก Public API endpoint และ MCP
การตอบกลับที่สําเร็จจะมี header:
| Header | Description |
|---|---|
X-RateLimit-Limit | ลิมิต (60) |
X-RateLimit-Remaining | คําขอที่เหลือในหน้าต่างปัจจุบัน |
X-RateLimit-Reset | Unix timestamp เมื่อหน้าต่างรีเซ็ต |
เมื่อเกินลิมิต: 429 Too Many Requests และ header Retry-After (จํานวนวินาทีก่อน retry)
Tips: ใช้ page_size ได้สูงสุด 50 สําหรับรายการ; อย่า poll POST /search บ่อยเกินความจําเป็น — ผลลัพธ์ถูกแคช (ดู “Caching”)
Daily row quota
- 50,000 list rows per day per account (API key / signed-in user)
- Reset: UTC midnight
- Counter is shared across Public API list endpoints, MCP list tools, web UI tables, and CSV export
Each list request charges page_size rows (the requested page size, not total_count).
Successful list responses include headers:
| Header | Description |
|---|---|
X-Quota-Limit | Daily limit (50000) |
X-Quota-Remaining | Rows left today |
X-Quota-Reset | Unix timestamp when the daily quota resets |
When the quota is exceeded: 429 Too Many Requests and Retry-After (seconds until reset).
Pagination depth: for a single search/filter, page × page_size must not exceed 5000 (e.g. with page_size=50, max page is 100). This limits deep scraping of one result set; the daily quota caps total volume across all queries.
Endpoint overview
พารามิเตอร์ query/body แบบเต็ม — อยู่ใน OpenAPI
| Method | Path | Purpose |
|---|---|---|
POST | /v1/reports/search | ค้นหารายงานด้วย body ReportListFilterSchema, pagination, sorting |
GET | /v1/reports/favorites | รายการรายงานที่ผู้ใช้ปัจจุบันกด favorite |
POST | /v1/reports/favorites | เพิ่มรายงานเข้า favorites |
DELETE | /v1/reports/favorites/{report_type}/{report_id} | ลบออกจาก favorites |
GET | /v1/reports/by-domain/{domain} | หา report IDs จากชื่อโดเมนแบบ ตรงตัว |
GET | /v1/reports/{report_type}/{report_id} | รายงานฉบับเต็มจากประเภทธานข้อมูลและ report id |
GET | /v1/reports/check/expired/{report_id} | ตรวจว่าโดเมน drop แล้วหรือไม่สําหรับรายงาน expired |
GET | /v1/user | โปรไฟล์ผู้ใช้ (PublicUserProfileSchema) |
GET | /v1/domains/checker/expiry/{domain} | ตรวจสด: โดเมนพร้อมจดทะเบียนหรือไม่ |
GET | /v1/domains/checker/karma_metric/{domain} | คํานวณ Karma Metric แบบสดผ่าน WayBack Machine |
Model parameters reference
ด้านล่างคือแผนที่พารามิเตอร์เชิงปฏิบัติสําหรับ 3 โมเดลหลักของ OpenAPI ที่กําหนดความสามารถส่วนใหญ่ของ API
ReportListFilterSchema (request body ของ POST /v1/reports/search)
ความหมายของค่าที่ใช้ใน schema นี้:
nullหรือไม่ส่งฟิลด์ = ไม่ใช้ฟิลเตอร์- ฟิลด์ query แบบ string รองรับ
,เป็น AND และ|เป็น OR ตามที่ระบุในเอกสาร - ช่วงวันที่เป็น array ของ 2 string:
[from, to] - ช่วงคะแนนส่วนใหญ่ใช้
*_min/*_maxแบบรวมขอบเขต
| Parameter | Type | Description |
|---|---|---|
domain | string | null | ฟิลเตอร์ substring ของโดเมน ไม่สนตัวพิมพ์เล็ก/ใหญ่ , = AND (ทุกคําต้องตรง), | = OR (คําใดคําหนึ่งตรง). ความยาวสูงสุด 350 |
tlds | string | null | รายการ TLD คั่นด้วย comma หรือ space (เช่น .com .net .org). ความยาวสูงสุด 350 |
domain_type | string[] | null | ค่าที่รองรับ: auctions, backorder, buynow, expired. ใช้ OR ระหว่างค่าที่เลือก |
favorites | boolean | null | true = เฉพาะรายการโปรด, false = ตัดรายการโปรดออก ต้องมีบริบทผู้ใช้ที่ยืนยันตัวตนแล้ว |
categories | string[] | null | OR ตามหมวดหมู่ รองรับรูปแบบ Category / Subcategory, จับคู่ substring แบบไม่สนตัวพิมพ์ |
languages | string | คิวรีภาษาแบบ , (AND) / | (OR), จับคู่ substring แบบไม่สนตัวพิมพ์ ความยาวสูงสุด 350 |
keywords | string | null | ค้นหาในคอนเทนต์ Wayback (title, description, h1-h6 ฯลฯ). , = AND, | = OR. ความยาวสูงสุด 350 |
website_ids | string[] | IDs แบบ GA/Metrika เพื่อหาโดเมน owner เดียวกัน |
domain_length_min / domain_length_max | integer | null | ขอบเขตความยาวโดเมน (ระบุไว้เป็น 1..30) |
domain_numbers / domain_hyphens | boolean | บังคับ/ตัดการมีตัวเลขและเครื่องหมายยัติภังค์ในชื่อโดเมน |
report_added_time | string[2] | null | ช่วงวันที่: ["YYYY-MM-DD","YYYY-MM-DD"]. Backend ปรับขอบเขตต้นวัน/ท้ายวันอัตโนมัติ |
karmascore_min / karmascore_max | integer | null | ช่วง KarmaScore, 0..100 |
karmametric_min / karmametric_max | integer | null | ช่วง Karma Metric, 0..100 |
brandscore_min / brandscore_max | integer | null | ช่วง Brandscore, 0..100 |
openpagerank_min / openpagerank_max | integer | null | ช่วง Open PageRank (ระบุไว้ 0..10) |
ahrefs_dr_min / ahrefs_dr_max | number | null | ช่วง Ahrefs DR, 0..100 |
ahrefs_ur_min / ahrefs_ur_max | number | null | ช่วง Ahrefs UR, 0..100 |
ahrefs_ar_min / ahrefs_ar_max | integer | null | ช่วง Ahrefs Rank (>= 0) |
majestic_tf_min / majestic_tf_max | integer | null | ช่วง Majestic TF, 0..100 |
majestic_cf_min / majestic_cf_max | integer | null | ช่วง Majestic CF, 0..100 |
majestic_bl_min / majestic_bl_max | integer | ช่วง backlinks ของ Majestic |
majestic_rd_min / majestic_rd_max | integer | ช่วง referring domains ของ Majestic |
majestic_topics / majestic_lang | string[] / string | ฟิลเตอร์หัวข้อและภาษา anchor |
moz_da_min / moz_da_max | integer | null | ช่วง Moz DA, 0..100 |
moz_ss_min / moz_ss_max | integer | null | ช่วง Moz Spam Score, 0..100 |
moz_bl_min / moz_bl_max | integer | ช่วง backlinks ของ Moz |
moz_rd_min / moz_rd_max | integer | ช่วง referring domains ของ Moz |
moz_bl_url / moz_bl_anchor | string | ฟิลเตอร์ Moz backlink URL / anchor phrase |
sw_visits_min / sw_visits_max | integer | ช่วง visits ของ SimilarWeb |
sw_last_traffic_date | string[2] | null | ช่วงเดือน SimilarWeb: ["YYYY-MM","YYYY-MM"] |
sw_country_filters | object[] | ฟิลเตอร์สัดส่วนประเทศ (country, share_min แบบ optional) |
sw_ts_direct_min...sw_ts_social_max | number | null | ช่วงสัดส่วนช่องทางที่มาทราฟฟิก SimilarWeb, 0..100 |
wa_age_min / wa_age_max | integer | null | อายุโดเมนใน Wayback (ปี) |
wa_first_snap / wa_last_snap | string[2] | null | ช่วงวันที่: ["YYYY-MM-DD","YYYY-MM-DD"] สําหรับหน้าต่าง snapshot แรก/ล่าสุด |
wa_changes_min/max, wa_redirects_min/max, wa_parkings_min/max | integer | ตัวนับประวัติ Wayback |
wa_hieroglyphs, wa_redirects, wa_error403 | boolean | แฟลกคุณภาพคอนเทนต์ Wayback |
wa_lang_filters | object[] | ฟิลเตอร์ภาษา Wayback (language, ratio_min แบบ optional) |
wa_server_code, wa_server_code_ratio_min/max | integer | null / number | null | ฟิลเตอร์ server code Wayback (เช่น 200, 301, 302, 403, 404) + ช่วง ratio 0..100 |
ke_etv_min/max, ke_total_min/max | integer | ช่วง traffic value / keywords ของ Keywords Everywhere |
ke_keyword | string | ฟิลเตอร์วลี Keywords Everywhere |
google_has_index, google_has_mentions | boolean | null | ความหมายแบบ true/false/unset สําหรับการบังคับ index หรือ mentions ใน Google SERP |
google_title_index/mentions, google_description_index/mentions | string | ฟิลเตอร์วลี title/description ของ SERP snippet |
trustpilot_rating_min/max, trustpilot_reviews_count_min/max | number | null / integer | null | ช่วง rating Trustpilot (0..5) และช่วงจํานวนรีวิว |
trustpilot_category | string | ฟิลเตอร์วลีหมวดหมู่ Trustpilot |
auction_source | string[] | null | ชื่อแหล่งประมูล (ไม่สนตัวพิมพ์) หรือค่าประกอบ `source |
auction_end_time, auction_added_time | string[2] | null | ช่วงวันที่: ["YYYY-MM-DD","YYYY-MM-DD"] |
auction_price_min/max | number | ช่วงราคาประมูล |
auction_bids_min/max | integer | ช่วงจํานวน bid ของการประมูล |
combine_seo | object | null | CombineSEOFilter แบบ cross-vendor: authority/backlinks/refdomains/traffic/keywords/backlink-url/anchors โดยมี OR logic ตาม vendor ในแต่ละแถว และ AND ระหว่างแถว |
ReportListResponseSchema (response ของ POST /search และ GET /favorites)
| Parameter | Type | Description |
|---|---|---|
report_list | ReportItem[] | แถวแบบแบ่งหน้าสําหรับมุมมองตารางและการสร้าง shortlist |
total_count | integer | จํานวนรวมของข้อมูลที่ตรงกับฟิลเตอร์ปัจจุบัน |
ฟิลด์ระดับแถวใน report_list[] (จาก ReportItem) ได้แก่:
| Parameter | Type | Description |
|---|---|---|
report_id | string | ตัวระบุรายงานที่คงที่ (ใช้กับรายงานฉบับเต็มและ favorites) |
report_type | string | หนึ่งใน auctions, expired, backorder, buynow |
domain, domain_tld | string | ชื่อโดเมนและ TLD |
added_at, updated_at | integer | Timestamp |
processed, demo, is_expired | boolean | แฟลกสถานะที่ใช้ใน workflow UI/API |
karmascore, karmametric, brandscore | integer | เมตริกหลักด้านคุณภาพ/brandability |
ahrefs_dr, ahrefs_ur | number | เมตริกสรุปของ Ahrefs |
majestic_tf/cf/bl/rd, moz_da/ss/bl/rd | integer | เมตริกสรุปของ Majestic และ Moz |
ke_etv, ke_total | integer | ค่าสรุปของ Keywords Everywhere |
sw_last_traffic, sw_country_share, sw_sources | integer/object | สรุปทราฟฟิก SimilarWeb |
wa_age, wa_last_snap, wa_changes, wa_langs, wa_server_code | integer/array | สัญญาณสรุป Wayback |
google_index, trustpilot_rating, trustpilot_reviews_count | boolean/number/integer | ฟิลด์สรุป Google/Trustpilot |
auctions | array/object | สรุปรายการประมูล หากมี |
ReportFullResponseSchema (response ของ GET /v1/reports/{report_type}/{report_id})
| Parameter | Type | Description |
|---|---|---|
report_id, report_type, domain, domain_tld | string | ฟิลด์ตัวตนหลัก |
domain_length, domain_numbers, domain_hyphens | integer/boolean | คุณลักษณะโครงสร้างโดเมน |
favorite, demo, processed, is_expired | boolean | สถานะรายงานและแฟลกที่เกี่ยวข้องกับผู้ใช้ |
added_at, updated_at, created_at, checked_at, expire_checked_at | integer | Timestamp ของ lifecycle |
providers_status | object | แผนที่สถานะการประมวลผลราย provider (ค่าแบบ string) |
web_archive | object | ข้อมูล Wayback Machine — ดูรายละเอียดด้านล่าง |
metrics | DomainMetrics | เมตริก SEO/traffic/reputation แบบซ้อน — ดูรายละเอียดด้านล่าง |
auctions | object | null | ล็อตประมูลที่จัดกลุ่มตาม end_time — ดูรายละเอียดด้านล่าง |
metrics → DomainMetrics
บล็อกของ provider ส่วนใหญ่สามารถเป็น object ที่มีข้อมูล, false (ยังไม่โหลด), หรือ null ได้ โดย categories และ blacklists อาจเป็น [] ได้เช่นกันเมื่อว่าง
| Parameter | Type | Description |
|---|---|---|
openpagerank | number | integer | boolean | null | คะแนน Open PageRank (โดยทั่วไป 0..10) เมื่อมีข้อมูล |
categories | CategoryData[] | boolean | null | หมวดหมู่คอนเทนต์จากผู้ให้บริการจัดหมวด |
blacklists | BlacklistsData[] | boolean | null | การติด blacklist ด้านความปลอดภัย/ความน่าเชื่อถือ |
ahrefs | AhrefsData | boolean | null | เมตริกโดเมน Ahrefs |
majestic | MajesticData | boolean | null | Majestic Trust/Citation Flow และโปรไฟล์ backlink |
moz | MozData | boolean | null | Moz authority, spam score และรายละเอียด backlink |
keywordseverywhere | KeywordseverywhereData | boolean | null | ประมาณการ traffic/keyword ของ Keywords Everywhere |
similarweb | SimilarWebData | boolean | null | SimilarWeb visits, sources และ geo share |
brandscore | BrandscoreData | boolean | null | องค์ประกอบคะแนน brandability |
karma_metric | KarmaMetricData | boolean | null | คะแนน Karma Metric จากประวัติ Wayback |
trustpilot | TrustpilotData | boolean | null | คะแนน Trustpilot และสถิติรีวิว |
google | GoogleData | boolean | null | Google index และ mention SERP snippets |
ai_summary | string | null | ข้อความสรุปโดเมนที่สร้างโดย AI |
AhrefsData
| Parameter | Type | Description |
|---|---|---|
domain_rating | number | null | Ahrefs DR |
url_rating | number | integer | null | Ahrefs UR |
ahrefs_rank | integer | null | Ahrefs Rank (ยิ่งน้อยยิ่งแข็งแรง) |
MajesticData
| Parameter | Type | Description |
|---|---|---|
tf, cf | integer | null | Trust Flow / Citation Flow (0..100) |
backlinks, refdomains | integer | null | จํานวน backlinks และ referring domains |
primary_topic | string | null | หมวดหมู่หัวข้อหลัก |
topics | array | null | รายการการกระจาย topic |
anchor_lang | array | null | การกระจายภาษาของ anchor text |
indexed_urls, referring_ips, referring_subnets | integer | null | ตัวนับด้านดัชนีและความหลากหลายเครือข่าย |
MozData
| Parameter | Type | Description |
|---|---|---|
moz_domain_authority | integer | null | Moz DA |
moz_spam_score | integer | null | Moz Spam Score |
page_rank, moz_link_propensity | number | integer | null | legacy rank และ link propensity |
moz_*_to_subdomain fields | integer | null | ตัวนับกราฟลิงก์ Moz (pages/domains, follow/nofollow/redirect/deleted) |
moz_da_history_values | string | null | ค่า DA history แบบ serialized |
backlinks | MozBacklink[] | null | แถว backlink (domain_source, url_source, domain_target, url_target, anchor_text, harmonic_centrality, last_found_date) |
KeywordseverywhereData
| Parameter | Type | Description |
|---|---|---|
etv | integer | null | ค่าทราฟฟิกโดยประมาณ |
total_keywords | integer | null | จํานวน keyword ที่ติดตามทั้งหมด |
data | KeywordItem[] | null | แถว keyword (position, etv, keyword) |
SimilarWebData
| Parameter | Type | Description |
|---|---|---|
estimated_monthly_visits | object | null | แผนที่ เดือน → visits |
traffic_sources | TrafficSources | null | สัดส่วนช่องทาง: Social, Paid Referrals, Mail, Referrals, Search, Direct (ratio 0..1) |
top_country_shares | CountryShare[] | null | การกระจายทางภูมิศาสตร์ (Country, CountryCode, Value) |
engagments | Engagements | null | BounceRate, PagePerVisit, Visits, TimeOnSite, Month, Year |
category | string | null | หมวดหมู่เว็บไซต์ SimilarWeb |
BrandscoreData
| Parameter | Type | Description |
|---|---|---|
pronounceability, memorability, uniqueness, appeal, brandscore | integer | องค์ประกอบ brandability และคะแนนสุดท้าย |
KarmaMetricData
| Parameter | Type | Description |
|---|---|---|
karma_metric | integer | คะแนนสุดท้าย, 0..100 |
components | KarmaMetricComponents | A_mass, A_cont, A_stab, A_trend (แต่ละค่า 0..100) |
period | string | null | ช่วงเวลาในรูปแบบ YYYY-MM (หรือ null หากไม่มีข้อมูล) |
TrustpilotData
| Parameter | Type | Description |
|---|---|---|
rating | number | null | คะแนน โดยทั่วไป 0..5 |
reviews_count | integer | null | จํานวนรีวิว |
category | string | null | หมวดธุรกิจ Trustpilot |
GoogleData
| Parameter | Type | Description |
|---|---|---|
google_index | GoogleItem[] | null | หน้า index สําหรับ site:domain (rank, url, title, description) |
google_mentions | GoogleItem[] | null | ผลลัพธ์ mentions จากการค้นหาโดเมนแบบใส่เครื่องหมายอัญประกาศ |
CategoryData / BlacklistsData
| Model | Key fields |
|---|---|
CategoryData | categories[], vendor, info_url |
BlacklistsData | vendor, info_url, optional info |
web_archive (payload ของ Wayback Machine)
อ็อบเจ็กต์มี 3 บล็อกหลัก: info, ts_summary, history โดยใน response แบบ full report ค่า history จะเรียงจากใหม่ไปเก่า
| Parameter | Type | Description |
|---|---|---|
info | object | null | สรุปขอบเขตการเก็บข้อมูล archive ของโดเมน |
ts_summary | object | null | สัญญาณ KarmaScore / Wayback แบบรวมที่ใช้ในตารางฟิลเตอร์ |
history | array | ไทม์ไลน์ snapshot (หนึ่งอ็อบเจ็กต์ต่อหนึ่ง Wayback capture) |
web_archive.info
| Parameter | Type | Description |
|---|---|---|
snap_counter | integer | จํานวน snapshot Wayback ทั้งหมดที่นับได้ |
years_counter | integer | จํานวนปีที่มี activity ใน archive (สัญญาณอายุโดเมน) |
first_ts | integer | Unix timestamp ของ snapshot แรก |
last_ts | integer | Unix timestamp ของ snapshot ล่าสุด |
years | object | แผนที่ ปี → จํานวน snapshot รายเดือน (ข้อมูล sparkline/calendar) |
web_archive.ts_summary
| Parameter | Type | Description |
|---|---|---|
average_karma_score | integer | ค่าเฉลี่ย KarmaScore, 0..100 (แมปกับ list field karmascore) |
wa_changes | integer | จํานวนการเปลี่ยนแปลงคอนเทนต์ที่มีนัยสําคัญในประวัติที่สแกน |
wa_langs | array | แถวการกระจายภาษา: language, pageRatio (0..100) |
wa_server_code | array | การกระจาย HTTP code: server_code (เช่น 200, 301, 403), response_ratio (0..100) |
wa_tags | array | แท็กคอนเทนต์ที่ตรวจพบตลอดประวัติ |
pattern_shares | array | แถวสัดส่วน pattern: factor, description, share |
chart_data | array | จุดข้อมูล time series: timestamp, karma_score, lang, server_code, tags, detected_patterns |
web_archive.history[] (แถว snapshot)
| Parameter | Type | Description |
|---|---|---|
snaped_at | integer | Unix timestamp ของ snapshot |
webarchive_link | string | null | URL ของ Wayback สําหรับ capture นี้ (null ใน closing placeholder snap) |
headers | object | null | HTTP metadata, โดยทั่วไปคือ status_code (200, 301, 302, 403, 404, 429, …), original_url |
screenshot | boolean | null | true หากมี screenshot (ไฟล์ไบนารีเก็บแยก; ดึงผ่าน screenshot API ใน UI) |
content_info | object | null | ข้อมูลเนื้อหาหน้าเว็บที่ parse แล้ว (ดูด้านล่าง) |
karma_score | object | null | คะแนนต่อ snapshot: score (0..100), detected_patterns, tags (flags porno/crypto/gambling/...) |
redirects | array | null | ข้อมูล redirect chain เมื่อมี |
website_ids | array | null | site IDs ที่ตรวจพบ (name, website, ids[]) เช่น analytics tags |
built_with | object | null | payload ตรวจจับเทคโนโลยี stack (เมื่อมี) |
web_archive.history[].content_info
| Parameter | Type | Description |
|---|---|---|
lang | string | null | รหัสภาษาของหน้าเว็บที่ตรวจพบ |
title, description, keywords | string | null | ฟิลด์ meta / ข้อความหน้าเว็บที่ใช้ในฟิลเตอร์และ UI |
generator, author, copyright | string | null | ฟิลด์ meta เพิ่มเติม |
h1 … h6 | string[] | null | ข้อความหัวข้อ (ค้นหาได้ด้วยฟิลเตอร์ keywords) |
cloud_words | array | null | รายการ word cloud (word) |
external_links, internal_links | array | null | รายการลิงก์ออก/ลิงก์ภายใน |
rel_canonical, meta_robots | string | null | Canonical URL และ meta robots |
length_symbols, length_words | integer | ตัวนับขนาดคอนเทนต์ |
auctions (ล็อตประมูล)
มีเมื่อรายงานนั้นมีข้อมูลการประมูล (auctions และบางครั้งมีแถวที่เกี่ยวข้องในฐานอื่น)
ใน response แบบ full report ล็อตจะถูกจัดกลุ่มตามเวลาสิ้นสุด:
{
"1764441900": [
{ "source": "godaddy", "sale_type": "auction", "price": 120, "bids": 3, "...": "..." }
]
}
- Object key =
end_time(Unix seconds) - Value = array ของ lot objects ที่จบเวลาเดียวกัน (หลายแพลตฟอร์มอาจใช้คีย์เดียวกันได้)
| Parameter | Type | Description |
|---|---|---|
source | string | แหล่งที่มาของแพลตฟอร์ม/registrar การประมูล (เช่น godaddy, namejet, dynadot, dropcatch, sedo, sav.com) ไม่สนตัวพิมพ์ในฟิลเตอร์ |
sale_type | string | ประเภท listing (เช่น auction, buynow, Closeout, Pre-Release, Dropped) |
domain | string | ชื่อโดเมนของล็อต |
item_id | string | lot/listing id เฉพาะแพลตฟอร์ม |
end_time | integer | เวลาสิ้นสุดล็อต (Unix seconds); ใช้เป็น grouping key ใน full report ด้วย |
price | number | ราคาปัจจุบัน (ปกติเป็น USD) |
bids | integer | null | จํานวน bid ถ้าใช้ได้ |
currency | string | สัญลักษณ์/รหัสสกุลเงิน (ค่าเริ่มต้น "$") |
report_type | string | ฐานเจ้าของรายการ: auctions, backorder หรือ buynow |
priority | integer | ค่าน้ําหนักการเรียง/ลําดับความสําคัญภายใน (ค่าเริ่มต้น 0) |
Filter tip: auction_source ในการค้นหารองรับทั้งค่าแหล่งแบบเดี่ยว (godaddy) และค่าแบบประกอบ source|sale_type (เช่น godaddy|auction)
สําหรับข้อจํากัดฟิลด์แบบละเอียด (nullable rules, enum values, min/max, nested objects) ให้ใช้ OpenAPI หรือ ReDoc เสมอ
พารามิเตอร์ report_type
สําหรับ full report และ favorites: auctions, expired, backorder, buynow
ค่า all ใช้เฉพาะใน search logic (ทุกฐานข้อมูล) ไม่ได้ใช้เป็น {report_type} ใน path
Pagination และ sorting (list endpoints)
Query parameters:
| Parameter | Default | Description |
|---|---|---|
page | 1 | หมายเลขหน้า |
page_size | 10 | ขนาดหน้า (สูงสุด 50) |
sort_by | added_at | ชื่อคอลัมน์การเรียง (เหมือนในตาราง UI; enum ใน OpenAPI) |
sort_desc | true | true — เรียงจากมากไปน้อย |
Depth limit: page × page_size ≤ 5000. Requests beyond this return 422 validation error.
โดเมนใน URL
สําหรับ {domain} ใน path ให้ใช้ percent-encoding (IDN, Cyrillic ฯลฯ) เซิร์ฟเวอร์จะ normalize ชื่อ (punycoded/lowercase)
Typical workflows
1. Search → full report
POST https://api.karma.domains/v1/reports/searchพร้อม body ฟิลเตอร์ (ดู OpenAPI →ReportListFilterSchema)- จาก
report_list[]ให้นําreport_idและreport_type GET https://api.karma.domains/v1/reports/{report_type}/{report_id}
ฟิลเตอร์ตรงกับ filters ใน web UI — เปรียบเทียบกับ UI ได้ง่าย; schema ของฟิลด์ดูจาก OpenAPI
2. หาโดเมนแบบตรงตัวโดยไม่ต้องค้นหายาว
GET /v1/reports/by-domain/example.com- ใน response ฟิลด์
matches[]— ได้สูงสุดหนึ่งรายการต่อหนึ่งฐานที่มีโดเมนนั้น - เลือก
report_typeที่ต้องการ →GET /v1/reports/{report_type}/{report_id}
ถ้า matches ว่าง แปลว่าโดเมนนั้นไม่มีในฐานของ Karma
3. Favorites
- ดูเฉพาะรายการ:
GET /v1/reports/favorites - รายการเดียวกันผ่าน search:
POST /v1/reports/searchพร้อม"favorites": trueใน body - เพิ่ม:
POST /v1/reports/favoritesพร้อม{"report_id": "...", "report_type": "expired"} - ลบ:
DELETE /v1/reports/favorites/expired/{report_id}
4. Drop check (expired report)
GET /v1/reports/check/expired/{report_id} — ใช้ report id ไม่ใช่ชื่อโดเมน
- เมื่อตรวจสําเร็จ จะอัปเดตรายการรายงานบนเซิร์ฟเวอร์
is_expired: true— โดเมน น่าจะจดทะเบียนได้ (ไม่ใช่ “WHOIS expiry date passed”)- ตรวจซ้ําแบบ live สําหรับ report เดิมได้ไม่เกิน ทุก 3 ชั่วโมง (business rule)
- HTTP response แคชไว้ 1 ชั่วโมง สําหรับ GET ซ้ําด้วย
report_idเดิม (ดู “Caching”)
5. ตรวจโดเมนโดยไม่มีรายงานในฐานข้อมูล
GET /v1/domains/checker/expiry/{domain} — WHOIS/DNS แบบ live; ไม่เปลี่ยนข้อมูลรายงานในฐาน
available: true— น่าจะจดได้available: false— ถูกใช้หรือถูกสงวน- เรียกซ้ํากับโดเมนเดิมภายใน ~1 ชั่วโมง อาจได้ผลลัพธ์จากแคช
6. Karma Metric แบบ on the fly
GET /v1/domains/checker/karma_metric/{domain} — คํานวณ Karma Metric จาก WayBack Machine; ไม่อัปเดตรายงาน ฟิลด์ response ดูใน OpenAPI (KarmaMetricData) โดยมี response cache ต่อโดเมน ~1 ชั่วโมง
อ่านเพิ่มเติมเกี่ยวกับ Karma Metric ในบล็อก
7. ยอดคงเหลือและแพ็กเกจ
GET /v1/user — email, balance (credits), plan flags, subscription data โดย response จะไม่ส่ง API key กลับมา และแคชไว้ ~1 นาที ต่อคีย์ จึงไม่ควร poll ถี่เกินความจําเป็น
Caching
ที่ระดับ Public API จะมีการ cache HTTP response body บาง endpoint ใช้ early refresh (refresh แบบ background ก่อน TTL หมด: นาทีที่ 4 สําหรับ TTL 5 นาที, นาทีที่ 50 สําหรับ TTL 1 ชั่วโมง)
| Endpoint | TTL |
|---|---|
POST /v1/reports/search | 5 min |
GET /v1/reports/favorites | 5 min |
POST /v1/reports/favorites | none |
DELETE /v1/reports/favorites/{report_type}/{report_id} | none |
GET /v1/reports/by-domain/{domain} | 5 min |
GET /v1/reports/check/expired/{report_id} | 1 h |
GET /v1/reports/{report_type}/{report_id} | none |
GET /v1/user | 1 min |
GET /v1/domains/checker/expiry/{domain} | 1 h |
GET /v1/domains/checker/karma_metric/{domain} | 1 h |
POST/DELETE favorites เปลี่ยนข้อมูลบนเซิร์ฟเวอร์ทันที แต่ GET /favorites หรือ POST /search ที่ใส่ favorites: true ซ้ํา อาจยังได้รายการเก่าจนกว่าแคชจะหมด (5 นาที)
ตัวอย่าง request (curl)
แทนที่ YOUR_API_KEY ด้วยคีย์จากโปรไฟล์ของคุณ Base URL: https://api.karma.domains.
ค้นหา expired ด้วยฟิลเตอร์
curl -X POST "https://api.karma.domains/v1/reports/search?page=1&page_size=25&sort_by=added_at&sort_desc=true" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"karmascore_min": 60,
"domain_type": ["expired"]
}'
Filter body — ใช้ฟิลด์ใดก็ได้จาก ReportListFilterSchema ใน OpenAPI
รายงานฉบับเต็ม
curl "https://api.karma.domains/v1/reports/expired/507f1f77bcf86cd799439011" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
ค้นหาด้วยโดเมน
curl "https://api.karma.domains/v1/reports/by-domain/example.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
เพิ่มเข้ารายการโปรด
curl -X POST "https://api.karma.domains/v1/reports/favorites" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"report_id": "507f1f77bcf86cd799439011",
"report_type": "expired"
}'
ตรวจสอบความพร้อมใช้งานของโดเมน
curl "https://api.karma.domains/v1/domains/checker/expiry/mybrand.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
Karma Metric
curl "https://api.karma.domains/v1/domains/checker/karma_metric/mybrand.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
Integration use cases
Nightly expired selection pipeline
Cron รายวัน: POST /search ด้วย JSON filter ที่บันทึกไว้ (คล้าย saved filter ใน UI), paginate ด้วย page_size=50, แล้ว export report_id ไปยังฐานข้อมูลของคุณ การวิเคราะห์แบบละเอียดให้ GET full report เฉพาะ shortlist
ติดตามรายชื่อโดเมนก่อนจดทะเบียน
คิวโดเมน → GET /domains/checker/expiry/{domain} → แตกแขนงตามค่า available ใช้ได้โดยไม่ต้องมีรายงานใน Karma.Domains
ซิงก์ favorites กับ CRM ภายใน
ดึง GET /favorites เป็นระยะ; เมื่อผู้ใช้ทํากิจกรรมใน CRM ให้เรียก POST/DELETE favorites โดยคํานึงถึงรายการที่แคชไว้ประมาณ 5 นาที
BI / funnel analytics
ส่งออกหน้าการค้นหา และ aggregate ค่า total_count กับเมตริกจาก report_list โดยไม่ต้องเปิด UI สคีมาของแถวรายการคือ ReportListResponseSchema ใน OpenAPI
MCP + scripts ด้วยคีย์เดียว
ทีมสามารถใช้ MCP ใน Cursor สําหรับ ad-hoc search และใช้ Public API สําหรับ ETL แบบคงที่ โดยลิมิตรวมคือ 60 requests ต่อ minute ควรวางแผน batch และ backoff เมื่อเจอ 429
MCP และ Public API
| Public API (REST) | MCP | |
|---|---|---|
| Audience | Developers, scripts, ETL | AI assistants (Cursor, Claude) |
| Interface | HTTP + JSON | Dialogue, tools |
| Docs | หน้านี้ + OpenAPI | /th/expired-domains-mcp/ |
| Data | รายงานและฐานข้อมูลชุดเดียวกัน | เหมือนกัน |
| Key & limit | ใช้ลิมิตร่วมกัน | ใช้ลิมิตร่วมกัน |
สําหรับงานอินทิเกรตโค้ดใหม่ ให้เริ่มจาก REST ส่วนการทดลองผ่านแชตให้ใช้ MCP
FAQ
อ้างอิงฟิลด์ฟิลเตอร์แบบเต็มอยู่ที่ไหน?
อยู่ใน OpenAPI, schema ReportListFilterSchema โดยความหมายของฟิลด์สอดคล้องกับ filter help ใน UI
available กับ is_expired ต่างกันอย่างไร?
ทั้งสองค่าในบริบท API หมายถึง: โดเมน น่าจะพร้อมจดทะเบียน
available — ตรวจสดจากชื่อโดเมน (/domains/checker/expiry)
is_expired — ตรวจที่ผูกกับรายงานในฐาน expired (/reports/check/expired/{report_id})
ทําไมได้ 403 ทั้งที่คีย์ถูกต้อง?
ไม่มีแผน Pro ที่ active ตรวจสอบการสมัครสมาชิกในโปรไฟล์
ทําไมผลลัพธ์ API ไม่ตรงกับ UI หรือการกระทําที่เพิ่งทํา?
เพราะ HTTP cache ของ Public API — ดูตารางใน “Caching” และคํานึงถึง TTL ตอนซิงก์กับ UI
ค่า sort_by อะไรที่ใช้ได้?
ดู enum list ใน OpenAPI ซึ่งเป็นชื่อคอลัมน์ของตารางรายงานใน web app
ถ้ามี OpenAPI แล้ว ยังต้องใช้หน้านี้ไหม?
OpenAPI เป็นแหล่งจริงสําหรับประเภทข้อมูลและฟิลด์ หน้านี้ช่วยเพิ่มบริบทเรื่องลิมิต แคช ลําดับการเรียก use cases และข้อควรระวังที่ไม่อยู่ในสคีมา
Can I export the entire database via the API?
No. A single search is limited to 5000 rows of pagination depth, and your account can retrieve at most 50,000 list rows per day (UTC) across API, MCP, and UI. Use filters to narrow results; fetch full reports one domain at a time via GET /reports/{report_type}/{report_id}.
มี sandbox ไหม?
ไม่มี sandbox แยกต่างหาก ให้ใช้บัญชี Pro และเคารพ rate limits สําหรับการดีบัก แนะนํา GET /user และ POST /search แบบแคบด้วยฟิลเตอร์เข้มงวด
Error codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 401 | Unauthorized (key) |
| 403 | No Pro |
| 404 | ไม่พบ report หรือ resource |
| 422 | ข้อผิดพลาดการตรวจสอบ body/query (invalid filter, sort_by, …) |
| 429 | เกินลิมิตคําขอ |
| 503 | rate limiter ไม่พร้อมใช้งานชั่วคราว |
Error body โดยทั่วไปมีฟิลด์ detail (string หรือ array ของ validation objects) ตัวอย่าง:
{
"detail": "Invalid API key"
}
ลิงก์ที่เป็นประโยชน์
- OpenAPI (Swagger): https://api.karma.domains/docs
- ReDoc: https://api.karma.domains/redoc
- MCP สําหรับ AI
- API key: Profile → Settings
- คู่มือฟิลเตอร์ใน UI