public
GET /v1/public/domains/tld-pricing
The public, searchable TLD price table.
المصادقة
هذه نقطة النهاية عامة. فهي لا تتطلب أي بيانات اعتماد ولا أي مؤسسة - بل هي ما تقرؤه مواقعنا التسويقية ومحركات الإجابة بالذكاء الاصطناعي الخاصة بنا.
لا يقبل هذا الطرف أي معرف للمؤسسة. يحدد مفتاحك بالفعل المؤسسة التي ينتمي إليها، وتكون الاستجابة محصورة في نطاقها.
جربه الآن
استبدل أي شيء بين أقواس زاوية بقيمك الخاصة، والعنصر النائب للمفتاح بمفتاح من لوحة تحكمك.
curl -X GET https://api.zinndigital.com/v1/public/domains/tld-pricingهل سجلت الدخول؟ تقوم وحدة تحكم واجهة برمجة التطبيقات في لوحة التحكم الخاصة بك بربط معرف مؤسستك الحقيقي ومفتاحك الخاص، وتنفذ الطلب مقابل واجهة برمجة التطبيقات المباشرة لتتمكن من رؤية الاستجابة الفعلية. افتح هذه النهاية الطرفية في وحدة تحكم API
التفاصيل
The crawlable price surface `docs/31` §5.1 specifies and nothing served: what every extension we sell costs to **register, renew and transfer**, plus the registry policy a buyer needs (min/max years, WHOIS privacy, IDN, restore, whether a transfer grants a year, and any residency restriction). No account, no cart, no registrar call — a cached read of platform-global reference data. **Cursor-paged and searched server-side**, which is now the only public shape: the older `listTldPricing` (`GET /v1/domains/pricing`) returned the whole catalogue in one uncursored body and was **retired in wave 8** (issue #845). That was fine at fifteen TLDs and was issue #466 all over again at the ~1,500 the registrar sync imports — on an unauthenticated endpoint, which is the worst place to have one. `q` is a substring match on the label and tolerates a leading dot (`.shop` and `shop` find the same row). Ordered **most popular first** by default, because a visitor who has decided nothing wants `.com` before `.zuerich`; `order=tld` gives the alphabetical reference view. Inactive offers are never returned. `summary` appears on the **first page only** and carries `active` — how many extensions we sell, *counted*. Any surface stating "search across N extensions" must read it: a hardcoded number is a public claim that goes stale the first time the sync deactivates a registry. `matched` is the same count under the current filter, so a page can say both without either being wrong. `related` appears when `q` names an extension we actually sell, and carries the neighbours worth offering beside it — `.shop` returns `.store` and `.online` with their real prices — each row stamped with `related_kind` so the surface can make the *argument* rather than list names. Ranked by the same code as the domain-search upsell grid, and unlike that grid it costs **no registrar call**: a price table is a browse, not an availability check. Prices are USD, the catalogue's authored currency (`docs/29`); a public surface converts for display. Cacheable — strong `ETag` + `Cache-Control: public, max-age=60`.
المعلمات
| الاسم | النوع | مطلوب | ما هو هذا |
|---|---|---|---|
q (query) | string | لا | Substring match on the TLD label. A leading dot is ignored. |
category (query) | string<gtld, new_gtld, cctld, sponsored> | لا | Restrict to one registry family. |
order (query) | string<popularity, tld> | لا | `popularity` (default) ranks the extensions a visitor is most likely to want first; `tld` is the alphabetical reference order. |
cursor (query) | string | لا | Opaque cursor from a previous page's `page.next_cursor`. |
limit (query) | integer | لا | Maximum items to return (page size). |
If-None-Match (header) | string | لا | A previously returned `ETag`; a match responds `304`. |
الاستجابة
| الاسم | النوع | مطلوب | ما هو هذا |
|---|---|---|---|
data | PublicTldPriceRow[] | نعم | — |
page | PageMeta | نعم | — |
summary | PublicTldPricingSummary | لا | Whole-collection facts, counted rather than derived from the page in hand. First page only. |
related | PublicTldPriceRow[] | لا | Neighbour extensions worth offering beside an exact-TLD `q`. Absent when `q` is empty, is not an extension we sell, or on any page but the first. |
الأخطاء التي يمكن أن تُرجعها نقطة النهاية هذه
422 · 429