# DNagent > Search, watch and research domains on any extension, .si first. Availability, expiry and release estimates, name traits and official .si registry statistics. DNagent checks .si (Slovenia ccTLD, registry ARNES) availability, analyses names for domain investors, tracks expiries on a watchlist, shows official registry statistics, and indexes websites on .si domains including for-sale landers. There are no API keys; if the operator requires sign-in, anonymous callers get 401 and only a signed-in browser session works. ## Endpoints - GET /api/check?domain=NAME : a bare NAME means .si; other extensions work too (kopi.com, kopi.co.id), asked at that extension's own RDAP service found through IANA's bootstrap (reserved labels and listing are .si only). Any extension in the Public Suffix List works, including second-level ones (kopi.co.uk, kopi.com.ua); subdomains are cut to the registrable name; special-use or unknown extensions (.local, .test) are refused. Returns tld, status (available | registered | reserved | unknown), traits (tags 2L..6L, N, Letters+digits, Hyphen, Dictionary, Pronounceable, IDN), forSale (marketplace lander seen in the nameservers), registry details for registered names when the registry answered (dates as the registry reports them, nameservers, status codes), and our crawl listing (state, salePlatform, title; null if not crawled). - POST /api/check/bulk {"domains":[...]} : up to 25 names, answers in {"results":[...]} in input order. Status, traits and forSale only; no registry details and no listing. Invalid names come back as status "invalid" with a reason. Names on extensions other than .si are checked by DNS only (via dns; no nameservers is status unknown with candidate true). - GET /api/footprint?name=NAME : the label on .com .net .org .ai .io .co .app (plus .si when NAME is on another extension), from DNS delegation only. States: registered, free, unknown, reserved (a .si label the registry holds back). - GET /api/public/names?q=&tld=&page=&per= : names listed for sale, any extension, open to everyone, rate limited per address ({domain, label, tld, length, pattern, tags, ask, actions, urls}). Pages: /names, /names/NAME, /forsale/NAME. - POST /api/demand {"domain":"kopi.com"} : demand signal from public web signals (verdict strong|moderate|weak, evidence sites). Signed-in only, paid searches behind it, so capped per account per day and per minute and for the whole service; cached 24 hours. A check counts when at least one search was answered, even if it then fails (charged:true); no account may take more than 25% of the service ceiling. Errors include 429 minute_limit|daily_limit|failure_limit, 503 not_configured|paused|service_limit. No people, emails or contacts. GET /api/demand/ID returns a stored check to its owner. - GET /api/market : {"registry": {total, last24h, lastMonth, fetchedAt, daily, monthly, counts}}. Series are [label, number] pairs: daily registrations, monthly registrations, and counts (registered domains at each month end). A series is [] when the registry page does not publish it. No sales data yet: public reports cover only part of real sales. - GET /api/directory?q=&state=live|parked|blocked|dead|pending&sale=any|Afternic|Sedo|Dan|Spaceship&tech=&lang=&page=&per= : websites on .si domains. Returns {rows, total, page, pages, per, facets}. - GET /api/words?status=no-ns|delegated|unscanned|all&type=word|short|all&tier=1..5&min=&max=&q=&starts=&ends=&forms=1&freed=1&sort=best|short|az|fresh&page=&per=&format=csv&limit= : a large dictionary plus 2-3 character codes with their DNS state in the .si zone (no-delegation, delegated, unscanned). Returns {total, page, pages, per, coverage, results}. format=csv returns 1,000 rows by default (limit= up to your plan's cap). no-delegation is a candidate only: registered names parked without nameservers look the same, so confirm with /api/check. - GET /api/stats : directory counts per state and for-sale landers. ## Rules - Rate limit by plan per minute: visitors 120 (while billing is internal), Free 30, Pro 300, staff 600; a bulk request counts once per name; signed-in users are counted per account, others per IP (429 + Retry-After). CSV exports: Free 1,000 rows, Pro 25,000. Registry lookups are also limited per day (staff 500, Pro 200, Free 30, visitors 30 per address) and per registry for the whole service; past a limit a check answers unknown. /api/footprint costs 7 units of the per-minute allowance. - If the operator requires login, the API answers 401 login_required without a signed-in browser session. There are no API keys yet. - "via" says how a status was reached: rules (reserved label), dns (the zone has nameservers, the registry was not asked), cache (a recent "available" answer, kept 2 minutes), rdap (registry answered live). - Errors are {"error": code, "message": text}: 400 invalid_domain | invalid_param | bad_json | bad_body | too_many, 401 login_required, 404 not_found, 413 too_large, 429 rate_limited, 503 registry_unavailable (/api/market only). - Lifecycle (registry General Terms, Nov 2024): 30-day quarantine after expiry, then deletion. Estimated release = expiresAt + 30 days. Treat as an estimate. - Reserved labels that cannot be registered: 112, 113, si, rs. - NOT available: our own drop/expiry list or a list of all registered .si names. ARNES's RDAP terms forbid extracting its database, and the zone file is not public. /api/words covers dictionary words and short codes only, from DNS. - Crawler: DNagentBot, honours robots.txt. Opt out with "User-agent: DNagentBot" and "Disallow: /". ## Docs - /docs