PingQL is in active development. Please don't rely on the service until this notice is removed.

PingQL
All systems operational

Uptime monitoring
that thinks like
a developer

Go beyond simple pings. Write queries against status codes, JSON bodies, HTML selectors, headers, and cert expiry.

query.json
{
  "$and": [
    { "status": { "$lt": 400 } },
    { "$json": { "$.db.status": { "$eq": "ok" } } },
    { "$certExpiry": { "$gt": 14 } }
  ]
}
// status < 400 AND $.db.status = "ok" AND $certExpiry > 14 days

Not just ping

Most monitoring tools ping a URL and check if it returns 200. That tells you almost nothing. PingQL lets you query the entire response.

Others
GET /api/health → 200 UP
GET /api/health → 500 DOWN
That's it. That's all you get.
PingQL
Status code assertions
JSON body inspection
HTML / CSS selector matching
Response time thresholds
SSL cert expiry checks
Header & regex matching

Everything you need

Powerful primitives, zero bloat.

Query language

Set your own definition of "up". Query status codes, JSON fields, headers, HTML, and latency with MongoDB-like operators.

Public status pages

Live uptime, heartbeat history, incidents, and RSS. Set one up in a minute and give your users somewhere to check.

Webhook notifications

Fires on down, recovery, and cert expiry. HMAC-signed payloads for secure integrations. More providers coming soon.

Incident management

Declare incidents, post updates, track resolution. Visitors see the full timeline on your status page automatically.

Retries & smart alerting

Retry before declaring down. Resend alerts for persistent outages. No more false alarms from a single failed request.

SSL cert monitoring

Get alerted days before your cert expires, not after. Per-region checks so regional resolvers are covered too.

Multi-region monitoring

Independent health per region. US West going down doesn't mask EU Central being up. Each region tracks state separately.

JSONPath & CSS selectors

Drill into JSON responses with $json or scrape any HTML page with $html. No API required.

Custom HTTP requests

Send GET, POST, PUT, PATCH or HEAD with custom headers and request bodies. Monitor authenticated APIs end-to-end.

Sub-keys & API access

Create scoped sub-keys for CI pipelines, scripts, or teammates. Full REST API, no dashboard required.

Privacy-first accounts

No email required. No passwords. Just an account key. Emails are hashed if provided, so we literally can't read them.

Pay with crypto

We accept Bitcoin, Litecoin, Dogecoin, Bitcoin Cash, Dash, and eCash. No card, no name, no billing address.

Beautiful status pages, out of the box

Give your users a branded status page with live uptime, heartbeat history, and incident timelines. Password protection, custom CSS, RSS feeds, and embeddable badges included.

See a live demo →

pages.pingql.com/your-app
Acme Corp Status
All systems operational
Production API
47ms 99.99%
Mar 28, 14:00 - 15:00
Checks120
Successful118
Uptime98.33%
Avg ping52ms
Dashboard
123ms 100%
Payment Gateway
89ms 99.97%
Mar 22, 03:00 - 04:00
Checks120
Successful0
Uptime0.00%
Avg ping-
Powered by PingQL

Privacy by design

We built PingQL for developers who care about their data.

$

No tracking, no analytics, no ads

Zero third-party scripts. Zero cookies.

$

Account keys, not passwords

Be completely anonymous. No email required.

$

Emails hashed if provided

Optional email for recovery only. We hash it.

$

We never sell data

Your monitors, your data. Period.

API-first, always

Create monitors, query results, and manage everything from scripts, your terminal, or anywhere with HTTP.

Create a status page
$ curl -X POST https://pingql.com/api/pages \
  -H "X-Key: abcd-1234-efgh-5678" \
  -d '{
    "slug": "my-app",
    "title": "My App Status",
    "monitors": [
      { "monitor_id": "a1b2c3d4e5f67890" }
    ]
  }'

{
  "id": "f8c1a2b3-...",
  "slug": "my-app",
  "title": "My App Status",
  "theme": "auto"
}
Create a monitor
$ curl -X POST https://pingql.com/api/monitors \
  -H "X-Key: abcd-1234-efgh-5678" \
  -d '{
    "name": "Production API",
    "url": "https://api.example.com/health",
    "interval_s": 60,
    "query": {
      "status": { "$lt": 400 },
      "$json": { "$.ok": { "$eq": true } }
    }
  }'

{
  "id": "a1b2c3d4e5f67890",
  "name": "Production API",
  "url": "https://api.example.com/health",
  "enabled": true
}

Simple pricing

Start for free. No credit card required.

Free
$0
forever
  • 10 monitors
  • 30s check interval
  • Single region per monitor
  • Status pages & incidents
  • Webhook & Email alerts
Pro
$12-$48
per month
  • 200–800 monitors
  • 5s check interval
  • Multi-region monitoring
  • Signal & Telegram alerts
Launch Deal
Lifetime
$140
one-time
  • Everything in Pro
  • Pay once, use forever
  • All future updates

Start with Pro and upgrade to Lifetime whenever you're ready. What you've spent on Pro gets credited toward the lifetime price, up to 75% off.