Check the setup
- Python 3.10 or newer
- A notebook environment such as Jupyter or Google Colab
- A domain you are authorized to inspect
Issued TLS certificates indexed from public CT logs for building domain certificate monitors and issuance alerts.
From source to product signal
crt.sh queries public Certificate Transparency logs. Start with one registered domain and a JSON search. CT logs are the origin; crt.sh is the query surface. Logs can lag, expired certificates remain, and this is not a complete inventory of every private PKI.
Install the packages, then run the notebook cell.
python -m pip install pandas requests
import pandas as pd
import requests
response = requests.get(
"https://crt.sh/",
params={"q": "example.com", "output": "json"},
timeout=60,
)
response.raise_for_status()
certificates = pd.DataFrame(response.json())
certificates["retrieved_at_utc"] = pd.Timestamp.now(tz="UTC")
print(certificates[["issuer_name", "common_name", "not_after"]].head())Test a useful signal
Test whether a CT search can power a bounded issuance monitor.
Sectigo crt.sh is a company source. Last verified 2026-08-18. Temporal coverage: certificates submitted to participating CT logs.