Logo Impending Doom!

monitoring the Domain registration and SSL cert expiration time for top one million websites


#48 · 👁️‍🗨️ certificate · 🕵️‍♂️ whois · 📷 archive · 🔗 visit site


🔒 Certificate Expiry in 3 days
🌐 Registration Expiry in 3153 days
Last Check Dec 02 '23 at 23:20


Status Code 302
Response 550ms
Last Check Dec 02 '23 at 12:02


alt-svc h3=":443"; ma=86400
cache-control private, no-cache, no-store, must-revalidate
connection keep-alive
content-length 0
content-security-policy default-src 'self' data: blob: *.whatsapp.net *.whatsapp.com *.fbcdn.net;script-src 'self' data: blob: *.whatsapp.net *.whatsapp.com *.fbcdn.net 'unsafe-inline' 'unsafe-eval';style-src 'self' data: blob: *.whatsapp.net *.whatsapp.com *.fbcdn.net 'unsafe-inline';connect-src 'self' data: blob: *.whatsapp.net *.whatsapp.com *.fbcdn.net wss://dev-web.whatsapp.com/ws/chat;font-src 'self' data: blob: *.whatsapp.net *.whatsapp.com *.fbcdn.net static.xx.fbcdn.net;img-src 'self' data: blob: *.whatsapp.net *.whatsapp.com *.fbcdn.net static.xx.fbcdn.net;media-src 'self' data: blob: *.whatsapp.net *.whatsapp.com *.fbcdn.net;frame-src 'self' data: blob: whatsapp: *.whatsapp.com;block-all-mixed-content;upgrade-insecure-requests;report-uri https://www.facebook.com/csp/reporting/?m=c&minimize=0;require-trusted-types-for 'script';
content-type text/html; charset="utf-8"
cross-origin-opener-policy unsafe-none
cross-origin-resource-policy cross-origin
date Sat, 02 Dec 2023 12:02:08 GMT
document-policy force-load-at-top
expires Sat, 01 Jan 2000 00:00:00 GMT
location https://api.whatsapp.com/
permissions-policy accelerometer=(), ambient-light-sensor=(), bluetooth=(), camera=(), geolocation=(), gyroscope=(), hid=(), idle-detection=(), local-fonts=(), magnetometer=(), microphone=(), midi=(), payment=(), publickey-credentials-get=(), screen-wake-lock=(), serial=(), usb=(), window-management=()
permissions-policy-report-only autoplay=(), clipboard-read=(), clipboard-write=(), display-capture=(), document-domain=(), encrypted-media=(), fullscreen=(), gamepad=(), keyboard-map=(), otp-credentials=(), picture-in-picture=(), xr-spatial-tracking=()
pragma no-cache
strict-transport-security max-age=31536000; preload; includeSubDomains
vary Accept-Encoding
x-content-type-options nosniff
x-fb-debug 14WuEGaF95IP+wWAOcTUwkp65rMvN9xhomgBTYz7YbEsE7NLTkg5LLTICW7pmh59bjDbofEB3zQ0eyFDeOwH8w==
x-frame-options DENY
x-xss-protection 0


😱 Expiring Domains

GET /api/v1/domains/expiring

🔥 Expired Domains

GET /api/v1/domains/expired
Optional: ?top=n (default 1000)

Query by Expiry Date

GET /api/v1/domains?from={DATE}&to={DATE}

Search by domain (fulltext)

GET /api/v1/domains/search?q={DOMAIN}

Get Domain Details

GET /api/v1/domain/{DOMAIN}

🎲 Domain Roulette

Not sure where to go next? Click this button and I will take you to a random website.


How often do you check for update?

Sites are checked once every 7 days or daily if near expiry.

What is the tech stack behind this?

This site and all its componenets are written entirely in 🦀 Rust. It uses sqlx to access the Postgres database, askama for templating and classless.de for class-less UI that is blazing fast to load.

Top one million domains are sourced from The Majestic Million and are periodically updated.

..but WHY?

Because I needed to play with Rust's safe and "correct" concurrency features. The process that loads domain from majestic and check for SSL cert heavily uses concurrent threads. This frontned is server side rendered page instead of an SPA because I wanted to try out the state of Rust templating.

The result is brilliant! it uses so little resources that I can keep supporting this service for as long as possible. If you decide to use the API for serious purpose then you can contact me.